[PATCH v5 13/13] string: Add strerrorname and strerrordesc

Carlos O'Donell carlos@redhat.com
Thu Jul 2 21:43:27 GMT 2020


On 6/19/20 9:43 AM, Adhemerval Zanella wrote:
> The strerrorname returns error number name (i.g. "EINVAL" for EINVAL)
> while strerrordesc returns string describing error number (i.g
> "Invalid argument" for EINVAL).  Different than strerror, strerrordesc
> does not attempt to translate the return description and both functions
> return NULL for an invalid error number.
> 
> They should be used instead of sys_errlist and sys_nerr and both are

s/and both/, both/g

> thread and async-signal safe.  These functions are GNU extensions.
> 
> Checked on x86-64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
> and s390x-linux-gnu.

Why not strerrorname_np or strerrordesc_np? We don't have to use *_np,
but these functions are fiarly close in name to 'strerror' and so it
might be beneficial to use _np at the end, like you did for sigabbrev_np
and sigdescr_np. Thoughts?

No regression on x86_64 and i686.

Tested-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  NEWS                                          | 10 +++
>  include/stdio.h                               |  1 +
>  manual/errno.texi                             | 23 +++++++
>  stdio-common/errlist.c                        | 33 ++++++++++
>  stdio-common/test-strerr.c                    | 65 +++++++++++++++++++
>  string/Makefile                               |  2 +-
>  string/Versions                               |  1 +
>  string/strerrordesc.c                         | 26 ++++++++
>  string/strerrorname.c                         | 25 +++++++
>  string/string.h                               |  7 ++
>  sysdeps/mach/hurd/i386/libc.abilist           |  2 +
>  sysdeps/mach/hurd/test-err_np.c               |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  42 files changed, 258 insertions(+), 1 deletion(-)
>  create mode 100644 stdio-common/test-strerr.c
>  create mode 100644 string/strerrordesc.c
>  create mode 100644 string/strerrorname.c
>  create mode 100644 sysdeps/mach/hurd/test-err_np.c
> 
> diff --git a/NEWS b/NEWS
> index f504772eb6..888727581b 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -41,6 +41,16 @@ Major new features:
>    They should be used instead of sys_siglist or sys_sigabbrev and they
>    are both thread and async-signal safe.  These functions are GNU extensions.
>  
> +* The functions strerrorname and strerrordesc have been added.  The
> +  strerroname returns error number name (i.g. "EINVAL" for EINVAL) while

s/i.g./e.g./g

> +  strerrordesc returns string describing error number (i.g "Invalid argument"
> +  for EINVAL).  Different than strerror, strerrordesc does not attempt to
> +  translate the return description and both functions return NULL for an
> +  invalid error number.
> +
> +  They should be used instead of sys_errlist and sys_nerr and both are

s/and both/, both/g

> +  thread and async-signal safe.  These functions are GNU extensions.
> +
>  Deprecated and removed features, and other changes affecting compatibility:
>  
>  * The deprecated <sys/sysctl.h> header and the sysctl function have been
> diff --git a/include/stdio.h b/include/stdio.h
> index 9e3bf6fe42..bc67d020d4 100644
> --- a/include/stdio.h
> +++ b/include/stdio.h
> @@ -187,6 +187,7 @@ libc_hidden_proto (__libc_readline_unlocked);
>  
>  extern const char *const _sys_errlist_internal[] attribute_hidden;
>  extern const char *__get_errlist (int) attribute_hidden;
> +extern const char *__get_errname (int) attribute_hidden;

OK.

>  
>  libc_hidden_ldbl_proto (__asprintf)
>  
> diff --git a/manual/errno.texi b/manual/errno.texi
> index 8cb4ce8b48..dfc4001af0 100644
> --- a/manual/errno.texi
> +++ b/manual/errno.texi
> @@ -1207,6 +1207,29 @@ to @code{errno}.
>  The function @code{perror} is declared in @file{stdio.h}.
>  @end deftypefun
>  
> +@deftypefun void strerrorname (int @var{errnum})
> +@standards{GNU, string.h}
> +@safety{@prelim{}@mtsafe{@mtssigintr{}}@assafe{}@acsafe{}}

Use @mtsafe{} since it doesn't touch _sigintr.

> +This function returns the name describing the error @var{errnum} or
> +@code{NULL} if there is no known E* constant with this value (i.g "EINVAL"> +for @code{EINVAL}).

s/E*//g

> +
> +@pindex string.h
> +This function is a GNU extension, declared in the header file @file{string.h}.
> +@end deftypefun
> +
> +@deftypefun void errdesc_np (int @var{errnum})
> +@standards{GNU, string.h}
> +@safety{@prelim{}@mtsafe{@mtssigintr{}}@assafe{}@acsafe{}}

Use @mtsafe{} since it doesn't touch _sigintr.

> +This function returns the message describing the error @var{errnum} or
> +@code{NULL} if there is no known E* constant with this value (i.g "Invalid

s/E*//g

> +argument" for @code{EINVAL}).  Different than @code{strerror} the returned
> +description is not translated.
> +
> +@pindex string.h
> +This function is a GNU extension, declared in the header file @file{string.h}.
> +@end deftypefun
> +
>  @code{strerror} and @code{perror} produce the exact same message for any
>  given error code; the precise text varies from system to system.  With
>  @theglibc{}, the messages are fairly short; there are no multi-line
> diff --git a/stdio-common/errlist.c b/stdio-common/errlist.c
> index df52356066..d15f13a22a 100644
> --- a/stdio-common/errlist.c
> +++ b/stdio-common/errlist.c
> @@ -35,4 +35,37 @@ __get_errlist (int errnum)
>    return NULL;
>  }
>  
> +static const union sys_errname_t
> +{
> +  struct
> +  {
> +#define MSGSTRFIELD1(line) str##line
> +#define MSGSTRFIELD(line)  MSGSTRFIELD1(line)
> +#define _S(n, str)         char MSGSTRFIELD(__LINE__)[sizeof(str)];
> +#include <errlist.h>
> +#undef _S
> +  };
> +  char str[0];
> +} _sys_errname = { {
> +#define _S(n, s) s,
> +#include <errlist.h>
> +#undef _S
> +} };
> +
> +static const unsigned short _sys_errnameidx[] =
> +{
> +#define _S(n, s) [n] = offsetof(union sys_errname_t, MSGSTRFIELD(__LINE__)),
> +#include <errlist.h>
> +#undef _S
> +};
> +
> +const char *
> +__get_errname (int errnum)
> +{
> +  if (errnum < 0 || errnum >= array_length (_sys_errnameidx)
> +      || (errnum > 0 && _sys_errnameidx[errnum] == 0))
> +    return NULL;
> +  return _sys_errname.str + _sys_errnameidx[errnum];
> +}

OK.

> +
>  #include <errlist-compat.c>
> diff --git a/stdio-common/test-strerr.c b/stdio-common/test-strerr.c
> new file mode 100644
> index 0000000000..baa8d8e6d4
> --- /dev/null
> +++ b/stdio-common/test-strerr.c
> @@ -0,0 +1,65 @@
> +/* Test strerrorname and strerrordesc.
> +   Copyright (C) 2020 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.

OK.

> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <string.h>
> +#include <errno.h>
> +#include <array_length.h>
> +
> +#include <support/support.h>
> +#include <support/check.h>
> +
> +#define N_(name)      name
> +
> +static const char *const errlist[] =
> +  {
> +/* This file is auto-generated from errlist.def.  */
> +#include <errlist.h>

OK. We cross reference the entire errlist.

> +  };
> +
> +#define MSGSTR_T errname_t
> +#define MSGSTR   errname
> +#define MSGIDX   errnameidx
> +#include <errlist-name.h>
> +#undef MSGSTR
> +#undef MSGIDX
> +
> +static int
> +do_test (void)
> +{
> +  TEST_VERIFY (strerrordesc (-1) == NULL);
> +  TEST_VERIFY (strerrordesc (array_length (errlist)) == NULL);

OK.

> +  for (size_t i = 0; i < array_length (errlist); i++)
> +    {
> +      if (errlist[i] == NULL)
> +        continue;
> +      TEST_COMPARE_STRING (strerrordesc (i), errlist[i]);
> +    }
> +
> +  TEST_VERIFY (strerrorname (-1) == NULL);
> +  TEST_VERIFY (strerrorname (array_length (errlist)) == NULL);
> +  for (size_t i = 0; i < array_length (errlist); i++)
> +    {
> +      if (errlist[i] == NULL)
> +        continue;
> +      TEST_COMPARE_STRING (strerrorname (i), errname.str + errnameidx[i]);
> +    }
> +
> +  return 0;
> +}

OK.

> +
> +#include <support/test-driver.c>
> diff --git a/string/Makefile b/string/Makefile
> index e5075521b7..fd06409197 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -45,7 +45,7 @@ routines	:= strcat strchr strcmp strcoll strcpy strcspn		\
>  		   envz basename					\
>  		   strcoll_l strxfrm_l string-inlines memrchr		\
>  		   xpg-strerror strerror_l explicit_bzero		\
> -		   sigdescr_np sigabbrev_np
> +		   sigdescr_np sigabbrev_np strerrorname strerrordesc

Why not _np also?

>  
>  strop-tests	:= memchr memcmp memcpy memmove mempcpy memset memccpy	\
>  		   stpcpy stpncpy strcat strchr strcmp strcpy strcspn	\
> diff --git a/string/Versions b/string/Versions
> index 6f8dd2d372..7727fca001 100644
> --- a/string/Versions
> +++ b/string/Versions
> @@ -87,5 +87,6 @@ libc {
>    }
>    GLIBC_2.32 {
>      sigdescr_np; sigabbrev_np;
> +    strerrordesc; strerrorname;

Likewise.

>    }
>  }
> diff --git a/string/strerrordesc.c b/string/strerrordesc.c
> new file mode 100644
> index 0000000000..f59448f2d1
> --- /dev/null
> +++ b/string/strerrordesc.c
> @@ -0,0 +1,26 @@
> +/* Return string describing error number.
> +   Copyright (C) 2020 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <stdio.h>
> +
> +const char *
> +__strerrordesc (int errnum)
> +{
> +  return __get_errlist (errnum);
> +}

OK.

> +weak_alias (__strerrordesc, strerrordesc)
> diff --git a/string/strerrorname.c b/string/strerrorname.c
> new file mode 100644
> index 0000000000..889ea0d245
> --- /dev/null
> +++ b/string/strerrorname.c
> @@ -0,0 +1,25 @@
> +/* Return string describing errno name.
> +   Copyright (C) 2020 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <stdio.h>
> +
> +const char *
> +strerrorname (int errnum)
> +{
> +  return __get_errname (errnum);
> +}

OK.

> diff --git a/string/string.h b/string/string.h
> index 0119d7f45d..bb90219ada 100644
> --- a/string/string.h
> +++ b/string/string.h
> @@ -428,6 +428,13 @@ extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen)
>  extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
>       __THROW __nonnull ((2)) __wur  __attr_access ((__write_only__, 2, 3));
>  # endif
> +
> +# ifdef __USE_GNU

OK. GNU extension.

> +/* Return a string describing the meaning of tthe error in ERR.  */
> +extern const char *strerrordesc (int __err) __THROW;
> +/* Return a string with the error name in ERR.  */
> +extern const char *strerrorname (int __err) __THROW;
> +# endif
>  #endif
>  
>  #ifdef __USE_XOPEN2K8
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index ff8ad98d03..193ceba987 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2181,6 +2181,8 @@ GLIBC_2.3.4 setsourcefilter F
>  GLIBC_2.3.4 xdr_quad_t F
>  GLIBC_2.3.4 xdr_u_quad_t F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.32 errdescr_np F
> +GLIBC_2.32 errname_np F
>  GLIBC_2.32 mach_print F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> diff --git a/sysdeps/mach/hurd/test-err_np.c b/sysdeps/mach/hurd/test-err_np.c
> new file mode 100644
> index 0000000000..3127141128
> --- /dev/null
> +++ b/sysdeps/mach/hurd/test-err_np.c
> @@ -0,0 +1,4 @@
> +#include <mach/error.h>
> +
> +#define ERR_MAP(value) err_get_code (value)
> +#include <stdio-common/test-err_np.c>
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index bb6045d8a6..f0529706ee 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2157,3 +2157,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 8e15a58eaf..ac892eceda 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2239,6 +2239,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index ce82b840e8..af574dfb9d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -141,6 +141,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
>  GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index c7a436cd42..bb0e8bf312 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -138,6 +138,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
>  GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 7f51d47b2f..8a612ece3e 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2101,3 +2101,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 053cda00a4..ccb61a322a 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2060,6 +2060,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index f18de50f9e..bc5329d7b9 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2226,6 +2226,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index a1966cac5a..8f8cbfa80b 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2092,6 +2092,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 8f44bc9231..802e16ac7d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -142,6 +142,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0x98
>  GLIBC_2.4 _IO_2_1_stdin_ D 0x98
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 088f2fa0f2..62bfa336b8 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2172,6 +2172,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 34c1c4fdca..680c7b0c77 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2152,3 +2152,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 099d51e893..e102493f6c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2149,3 +2149,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index ea86646c3b..28588017fa 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2143,6 +2143,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 9adac43e36..64c99116c0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2141,6 +2141,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index c42c093cfb..7e197736d8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2149,6 +2149,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 605e60a35e..e1964effc6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2143,6 +2143,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 7a57babca5..f647f86c09 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2190,3 +2190,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c3745c3733..8998f3e0ab 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2199,6 +2199,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 719512e999..a96c6d1ce2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2232,6 +2232,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 3f79daa39c..f9f0a9dd93 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2062,6 +2062,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index af1a2ae8a6..921098b1f3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2352,3 +2352,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index ff5b64c1dd..1e65005b9f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2119,3 +2119,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 576caca63c..b31811135b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2197,6 +2197,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 7201b10288..c30fc0ef71 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2098,6 +2098,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 4f954ac7ee..9cbe4a650a 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2067,6 +2067,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 9db9ba5cc0..c00327a607 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2064,6 +2064,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index ecb54db317..a990eee8f8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2188,6 +2188,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 74bd6efed8..e988546b20 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2115,6 +2115,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 50e45a43e8..fa10e68d3a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2073,6 +2073,8 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 59b26b097d..29119996ae 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2170,3 +2170,5 @@ GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_sigmask F
>  GLIBC_2.32 sigabbrev_np F
>  GLIBC_2.32 sigdescr_np F
> +GLIBC_2.32 strerrordesc F
> +GLIBC_2.32 strerrorname F
> 

OK.

-- 
Cheers,
Carlos.



More information about the Libc-alpha mailing list