Fix PR gdb/23558: Use system's 'getcwd' when cross-compiling GDB
authorSergio Durigan Junior <sergiodj@redhat.com>
Mon, 10 Sep 2018 16:52:04 +0000 (12:52 -0400)
committerSergio Durigan Junior <sergiodj@redhat.com>
Mon, 10 Sep 2018 17:52:24 +0000 (13:52 -0400)
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/ChangeLog
gdb/gnulib/import/m4/getcwd-path-max.m4

index b48b679403c956f99b0ea021ee7595f9d9911ebd..dc4346ec04841dbe40199079257bb47a74727a4d 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2018-09-10  Sergio Durigan Junior  <sergiodj@redhat.com>
 
        Revert:
index 2531ccff65cfb58c517e0a1e5cfb85dd1460367d..90bbc77dea10817c7b968686159aef81f0863e7e 100644 (file)
@@ -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
+    ])
   ])
 ])