bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

getcwd: Fix cross-compilation guess for musl libc


From: Bruno Haible
Subject: getcwd: Fix cross-compilation guess for musl libc
Date: Sun, 24 Jan 2021 10:15:24 +0100
User-agent: KMail/5.1.3 (Linux/4.4.0-197-generic; KDE/5.18.0; x86_64; ; )

On Alpine Linux 3.13/powerpcle, I see this configure test fail:
  checking whether getcwd succeeds when 4k < cwd_length < 16k... no

On this platform, PATH_MAX = 4 KiB < 64 KiB = PAGESIZE. The getcwd
system call fails with error ENAMETOOLONG.


2021-01-24  Bruno Haible  <bruno@clisp.org>

        getcwd: Fix cross-compilation guess for musl libc.
        * m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Guess no also on
        musl libc.
        * doc/posix-functions/getcwd.texi: Update platform info.

diff --git a/doc/posix-functions/getcwd.texi b/doc/posix-functions/getcwd.texi
index 9ca0ae3..9a4cf1e 100644
--- a/doc/posix-functions/getcwd.texi
+++ b/doc/posix-functions/getcwd.texi
@@ -38,7 +38,7 @@ Portability problems fixed by Gnulib module @code{getcwd}:
 @item
 This function does not handle long file names (greater than @code{PATH_MAX})
 correctly on some platforms:
-glibc on Linux 2.4.20, Mac OS X 10.13, FreeBSD 6.4, NetBSD 9.0, OpenBSD 4.9, 
AIX 7.1.
+glibc on Linux 2.4.20, musl libc 1.2.2/powerpc64le, Mac OS X 10.13, FreeBSD 
6.4, NetBSD 9.0, OpenBSD 6.7, AIX 7.1.
 @end itemize
 
 Portability problems not fixed by Gnulib:
diff --git a/m4/getcwd-abort-bug.m4 b/m4/getcwd-abort-bug.m4
index 89d0689..bd32de1 100644
--- a/m4/getcwd-abort-bug.m4
+++ b/m4/getcwd-abort-bug.m4
@@ -1,4 +1,4 @@
-# serial 15
+# serial 16
 # Determine whether getcwd aborts when the length of the working directory
 # name is unusually large.  Any length between 4k and 16k trigger the bug
 # when using glibc-2.4.90-9 or older.
@@ -128,11 +128,12 @@ main ()
           ]])],
        [gl_cv_func_getcwd_succeeds_beyond_4k=yes],
        [dnl An abort will provoke an exit code of something like 134 (128 + 6).
-        dnl An exit code of 4 can also occur (in OpenBSD 6.7, NetBSD 5.1 for
-        dnl example): getcwd (NULL, 0) fails rather than returning a string
-        dnl longer than PATH_MAX.  This may be POSIX compliant (in some
-        dnl interpretations of POSIX).  But gnulib's getcwd module wants to
-        dnl provide a non-NULL value in this case.
+        dnl An exit code of 4 can also occur (for example in
+        dnl musl libc 1.2.2/powerpc64le, NetBSD 9.0, OpenBSD 6.7:
+        dnl getcwd (NULL, 0) fails rather than returning a string longer than
+        dnl PATH_MAX.  This may be POSIX compliant (in some interpretations of
+        dnl POSIX).  But gnulib's getcwd module wants to provide a non-NULL
+        dnl value in this case.
         ret=$?
         if test $ret -ge 128 || test $ret = 4; then
           gl_cv_func_getcwd_succeeds_beyond_4k=no
@@ -141,10 +142,8 @@ main ()
         fi
        ],
        [case "$host_os" in
-                   # Guess yes on musl systems.
-          *-musl*) gl_cv_func_getcwd_succeeds_beyond_4k="guessing yes" ;;
-                   # Guess no otherwise, even on glibc systems.
-          *)       gl_cv_func_getcwd_succeeds_beyond_4k="guessing no"
+             # Guess no otherwise, even on glibc systems and musl systems.
+          *) gl_cv_func_getcwd_succeeds_beyond_4k="guessing no"
         esac
        ])
     ])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]