From 342fd3e05b4ac3153aea4762743364930ebea4e5 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 21 Nov 2023 16:18:44 +0100 Subject: [PATCH] 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. --- ChangeLog | 10 ++++++++++ doc/glibc-functions/strerrorname_np.texi | 3 ++- lib/strerrorname_np.c | 4 ++-- m4/strerrorname_np.m4 | 8 +++++++- tests/test-strerrorname_np.c | 4 ++-- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3836b0dab2..07ea51bd44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2023-11-21 Bruno Haible + + 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. + 2023-11-17 Bruno Haible realloc-gnu: Fix wrong configure test result with optimizing ibm-clang. 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 @@ glibc 2.31, macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 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 cb160e102d..830a3e365f 100644 --- a/m4/strerrorname_np.m4 +++ b/m4/strerrorname_np.m4 @@ -1,4 +1,4 @@ -# strerrorname_np.m4 serial 3 +# strerrorname_np.m4 serial 3.1 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, @@ -18,6 +18,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 . + dnl In glibc 2.37, strerrorname_np returns NULL for ENOSYM and + dnl EREMOTERELEASE on hppa platforms. + dnl See . AC_CACHE_CHECK([whether strerrorname_np works], [gl_cv_func_strerrorname_np_works], [AC_RUN_IFELSE( @@ -30,6 +33,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 -- 2.39.5