[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
strerrorname_np: Work around glibc bug on HPPA systems
|
From: |
Bruno Haible |
|
Subject: |
strerrorname_np: Work around glibc bug on HPPA systems |
|
Date: |
Tue, 21 Nov 2023 16:31:35 +0100 |
On Linux/hppa, I see a test failure:
$ cat test-strerrorname_np.log
Segmentation fault (core dumped)
FAIL test-strerrorname_np (exit status: 139)
The gdb stack trace reveals the cause:
(gdb) where
#0 0xf95c4920 in ?? ()
#1 0x000113c4 in main () at ../../gltests/test-strerrorname_np.c:1130
Here is a workaround.
2023-11-21 Bruno Haible <bruno@clisp.org>
strerrorname_np: Work around glibc bug on HPPA systems.
* m4/strerrorname_np.m4 (gl_FUNC_STRERRORNAME_NP): Test also
strerrorname_np (ENOSYM).
* lib/strerrorname_np.c (strerrorname_np): Update comments.
* tests/test-strerrorname_np.c (main): Likewise.
* doc/glibc-functions/strerrorname_np.texi: Mention that glibc 2.37
still needs a workaround.
diff --git a/doc/glibc-functions/strerrorname_np.texi
b/doc/glibc-functions/strerrorname_np.texi
index b9c6252b15..b8928cc21c 100644
--- a/doc/glibc-functions/strerrorname_np.texi
+++ b/doc/glibc-functions/strerrorname_np.texi
@@ -21,7 +21,8 @@
This function returns wrong values on some platforms:
@c https://sourceware.org/bugzilla/show_bug.cgi?id=26555
@c https://sourceware.org/bugzilla/show_bug.cgi?id=29545
-glibc 2.36.
+@c https://sourceware.org/bugzilla/show_bug.cgi?id=31080
+glibc 2.37.
@end itemize
Portability problems not fixed by Gnulib:
diff --git a/lib/strerrorname_np.c b/lib/strerrorname_np.c
index 4445a88ac6..23c0902b3b 100644
--- a/lib/strerrorname_np.c
+++ b/lib/strerrorname_np.c
@@ -1123,7 +1123,7 @@ strerrorname_np (int errnum)
#if defined ENOSHARE
case ENOSHARE: return "ENOSHARE";
#endif
- /* HP-UX, OSF/1 */
+ /* Linux, HP-UX, OSF/1 */
#if defined ENOSYM
case ENOSYM: return "ENOSYM";
#endif
@@ -1247,7 +1247,7 @@ strerrorname_np (int errnum)
#if defined EREMOTEIO
case EREMOTEIO: return "EREMOTEIO";
#endif
- /* HP-UX */
+ /* Linux, HP-UX */
#if defined EREMOTERELEASE
case EREMOTERELEASE: return "EREMOTERELEASE";
#endif
diff --git a/m4/strerrorname_np.m4 b/m4/strerrorname_np.m4
index 2894f72449..47bcf070d7 100644
--- a/m4/strerrorname_np.m4
+++ b/m4/strerrorname_np.m4
@@ -1,4 +1,4 @@
-# strerrorname_np.m4 serial 4
+# strerrorname_np.m4 serial 5
dnl Copyright (C) 2020-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -21,6 +21,9 @@ AC_DEFUN([gl_FUNC_STRERRORNAME_NP]
dnl In glibc 2.36, strerrorname_np returns NULL for EDEADLOCK on powerpc
and
dnl sparc platforms.
dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=29545>.
+ dnl In glibc 2.37, strerrorname_np returns NULL for ENOSYM and
+ dnl EREMOTERELEASE on hppa platforms.
+ dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=31080>.
AC_CACHE_CHECK([whether strerrorname_np works],
[gl_cv_func_strerrorname_np_works],
[AC_RUN_IFELSE(
@@ -33,6 +36,9 @@ AC_DEFUN([gl_FUNC_STRERRORNAME_NP]
#ifdef EDEADLOCK
|| strerrorname_np (EDEADLOCK) == NULL
#endif
+ #ifdef ENOSYM
+ || strerrorname_np (ENOSYM) == NULL
+ #endif
;
]])],
[gl_cv_func_strerrorname_np_works=yes],
diff --git a/tests/test-strerrorname_np.c b/tests/test-strerrorname_np.c
index 5bd0f3ab55..4c149c0e96 100644
--- a/tests/test-strerrorname_np.c
+++ b/tests/test-strerrorname_np.c
@@ -1125,7 +1125,7 @@ main (void)
#if defined ENOSHARE
ASSERT (strcmp (strerrorname_np (ENOSHARE), "ENOSHARE") == 0);
#endif
- /* HP-UX, OSF/1 */
+ /* Linux, HP-UX, OSF/1 */
#if defined ENOSYM
ASSERT (strcmp (strerrorname_np (ENOSYM), "ENOSYM") == 0);
#endif
@@ -1249,7 +1249,7 @@ main (void)
#if defined EREMOTEIO
ASSERT (strcmp (strerrorname_np (EREMOTEIO), "EREMOTEIO") == 0);
#endif
- /* HP-UX */
+ /* Linux, HP-UX */
#if defined EREMOTERELEASE
ASSERT (strcmp (strerrorname_np (EREMOTERELEASE), "EREMOTERELEASE") == 0);
#endif
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- strerrorname_np: Work around glibc bug on HPPA systems,
Bruno Haible <=