diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/gnulib/configure | 18 | ||||
-rw-r--r-- | gdb/gnulib/patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch | 69 | ||||
-rwxr-xr-x | gdb/gnulib/update-gnulib.sh | 12 |
4 files changed, 103 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0a0033a612e..004a2533118 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2018-09-18 Simon Marchi <simon.marchi@ericsson.com> + + * patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch: + New file. + * update-gnulib.sh: Apply patch. + * configure: Re-generate. + 2018-09-18 John Baldwin <jhb@FreeBSD.org> * infcmd.c (_initialize_infcmd): Remove "running" from "info proc" diff --git a/gdb/gnulib/configure b/gdb/gnulib/configure index 5fd52d45ac9..dc6c5b66573 100644 --- a/gdb/gnulib/configure +++ b/gdb/gnulib/configure @@ -17696,10 +17696,22 @@ else # Arrange for deletion of the temporary directory this test creates. ac_clean_files="$ac_clean_files confdir3" if test "$cross_compiling" = yes; then : - case "$host_os" in - aix*) gl_cv_func_getcwd_path_max='no, it has the AIX bug';; - *) gl_cv_func_getcwd_path_max=no;; + # Cross-compilation guesses: + case "$host_os" in + aix*) # On AIX, it has the AIX bug. + gl_cv_func_getcwd_path_max='no, it has the AIX bug' ;; + gnu*) # On Hurd, it is 'yes'. + gl_cv_func_getcwd_path_max=yes ;; + linux* | kfreebsd*) + # On older Linux+glibc it's 'no, but it is partly working', + # on newer Linux+glibc it's 'yes'. + # On Linux+musl libc, it's 'no, but it is partly working'. + # On kFreeBSD+glibc, it's 'no, but it is partly working'. + gl_cv_func_getcwd_path_max='no, but it is partly working' ;; + *) # If we don't know, assume the worst. + gl_cv_func_getcwd_path_max=no ;; esac + else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ diff --git a/gdb/gnulib/patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch b/gdb/gnulib/patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch new file mode 100644 index 00000000000..1d8cdf6b901 --- /dev/null +++ b/gdb/gnulib/patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch @@ -0,0 +1,69 @@ +From a7447215cdc492a077732420a3f0db6d48b34d51 Mon Sep 17 00:00:00 2001 +From: Sergio Durigan Junior <sergiodj@redhat.com> +Date: Mon, 10 Sep 2018 12:52:04 -0400 +Subject: [PATCH] Fix PR gdb/23558: Use system's 'getcwd' when cross-compiling + GDB + +This is a backport of a gnulib fix for the following bug: + + https://sourceware.org/bugzilla/show_bug.cgi?id=23558 + +The problem reported there is about the replacement of 'getcwd' when +cross-compiling GDB. With our current gnulib copy, the mechanism for +deciding whether to use the system's 'getcwd' or gnulib's version is +too simplistic and pessimistic, so when cross-compiling we always end +up using gnulib's version, which has a limitation: it cannot handle +the situation when the parent directory doesn't have read permissions. + +The solution is to backport the following gnulib commit: + + commit a96d2e67052c879b1bcc5bc461722beac75fc372 + Author: Bruno Haible <bruno@clisp.org> + Date: Thu Aug 23 21:13:19 2018 +0200 + + getcwd: Add cross-compilation guesses. + +gdb/ChangeLog: +2018-09-10 Sergio Durigan Junior <sergiodj@redhat.com> + + PR gdb/23555 + PR gdb/23558 + * gnulib/import/m4/getcwd-path-max.m4: Add cross-compilation + guesses. +--- + gdb/gnulib/import/m4/getcwd-path-max.m4 | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +diff --git a/gdb/gnulib/import/m4/getcwd-path-max.m4 b/gdb/gnulib/import/m4/getcwd-path-max.m4 +index 2531ccff65c..90bbc77dea1 100644 +--- a/gdb/gnulib/import/m4/getcwd-path-max.m4 ++++ b/gdb/gnulib/import/m4/getcwd-path-max.m4 +@@ -209,9 +209,21 @@ main () + 32) gl_cv_func_getcwd_path_max='yes, but with shorter paths';; + *) gl_cv_func_getcwd_path_max=no;; + esac], +- [case "$host_os" in +- aix*) gl_cv_func_getcwd_path_max='no, it has the AIX bug';; +- *) gl_cv_func_getcwd_path_max=no;; +- esac]) ++ [# Cross-compilation guesses: ++ case "$host_os" in ++ aix*) # On AIX, it has the AIX bug. ++ gl_cv_func_getcwd_path_max='no, it has the AIX bug' ;; ++ gnu*) # On Hurd, it is 'yes'. ++ gl_cv_func_getcwd_path_max=yes ;; ++ linux* | kfreebsd*) ++ # On older Linux+glibc it's 'no, but it is partly working', ++ # on newer Linux+glibc it's 'yes'. ++ # On Linux+musl libc, it's 'no, but it is partly working'. ++ # On kFreeBSD+glibc, it's 'no, but it is partly working'. ++ gl_cv_func_getcwd_path_max='no, but it is partly working' ;; ++ *) # If we don't know, assume the worst. ++ gl_cv_func_getcwd_path_max=no ;; ++ esac ++ ]) + ]) + ]) +-- +2.19.0 + diff --git a/gdb/gnulib/update-gnulib.sh b/gdb/gnulib/update-gnulib.sh index 327b37f3a3c..09933ab9fe7 100755 --- a/gdb/gnulib/update-gnulib.sh +++ b/gdb/gnulib/update-gnulib.sh @@ -158,6 +158,18 @@ if [ $? -ne 0 ]; then exit 1 fi +# Apply our local patches. +apply_patches () +{ + patch -p3 -f -i "$1" + if [ $? -ne 0 ]; then + echo "Failed to apply some patches. Aborting." + exit 1 + fi +} + +apply_patches "patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch" + # Regenerate all necessary files... aclocal -Iimport/m4 && autoconf && |