From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by sourceware.org (Postfix) with ESMTPS id C41093844079 for ; Fri, 3 Jul 2020 21:01:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C41093844079 Received: by mail-qt1-x843.google.com with SMTP id g13so24763984qtv.8 for ; Fri, 03 Jul 2020 14:01:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:references:from:autocrypt:subject:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=MGk18VOoi8BvrZN7+OXUUV7h8ndcyRQoK77zriZY9tw=; b=SKT9D7E8vImAXnVX4jkmXg6K1utIM53BbhR8LmymcWCqbN5B86nd4FkynJ0drNGZcJ zEK4kTr6nLHD/YMl2yCgVjcQRnx6CkmceZjeFdZp03OExZR3utFvXwYXgd9h9xIb6NMN 8K50FLDvBX4hdRQAAOA6sAwPpMWK1twsc+vR30X8pgaIke5cDeyvB78gvifenq89cP0p hGTlgMy4meUrwJwCNfBjY/t3Ew1h785zs3AL5bE5n0rjc1LZCPwGN1Dw38NRy6tU1tuj 0+rFdQQrRRV2fUu75cgIuX3CE8RgFjtGr0rInsQaSN5fpDAjkuL419lFcyKtv+y44z/g 2iNA== X-Gm-Message-State: AOAM5333LqfmeVpX3CIZGFQkNalxPuwamlt0aGjs/S9gArcSDDCK60Tl 0FXRRXdSGlpfZky0tHZa1dxRUNghMzM= X-Google-Smtp-Source: ABdhPJzgi+3isqEczytNhJWLNs8+G5hWnRln+XZXOiprsNB1VGFQzsLHaHNdzQjgZLeE2erNmqMupw== X-Received: by 2002:ac8:cc6:: with SMTP id o6mr20427868qti.70.1593810099444; Fri, 03 Jul 2020 14:01:39 -0700 (PDT) Received: from [192.168.1.4] ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id x3sm12440416qkd.62.2020.07.03.14.01.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 03 Jul 2020 14:01:38 -0700 (PDT) To: Carlos O'Donell , libc-alpha@sourceware.org References: <20200619134352.297146-1-adhemerval.zanella@linaro.org> <20200619134352.297146-13-adhemerval.zanella@linaro.org> <1a3b968c-0d58-8703-c317-58b32d22501c@redhat.com> From: Adhemerval Zanella Autocrypt: addr=adhemerval.zanella@linaro.org; prefer-encrypt=mutual; keydata= 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 Subject: Re: [PATCH v5 13/13] string: Add strerrorname and strerrordesc Message-ID: Date: Fri, 3 Jul 2020 18:01:36 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <1a3b968c-0d58-8703-c317-58b32d22501c@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Jul 2020 21:01:44 -0000 On 02/07/2020 18:43, Carlos O'Donell wrote: > 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 Ack. > >> 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? I don't have a strong preference here, on a patch iteration I used the the _np suffix and Florian has pointed out the str* namespace is reserved for libc implementations. But I think the _np is slight better to indicate it is an extension. If it is eventually adopted by other system without the _np suffix we can easily create an alias. So I have added the _np suffix. > > No regression on x86_64 and i686. > > Tested-by: Carlos O'Donell Should I add the Reviewed-by as well? > >> --- >> 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 Ack. > >> + 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 Ack. > >> + thread and async-signal safe. These functions are GNU extensions. >> + >> Deprecated and removed features, and other changes affecting compatibility: >> >> * The deprecated 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 Ack. > >> + >> +@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. Ack. > >> +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 >> +#undef _S >> + }; >> + char str[0]; >> +} _sys_errname = { { >> +#define _S(n, s) s, >> +#include >> +#undef _S >> +} }; >> + >> +static const unsigned short _sys_errnameidx[] = >> +{ >> +#define _S(n, s) [n] = offsetof(union sys_errname_t, MSGSTRFIELD(__LINE__)), >> +#include >> +#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 >> 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 >> + . */ >> + >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> + >> +#define N_(name) name >> + >> +static const char *const errlist[] = >> + { >> +/* This file is auto-generated from errlist.def. */ >> +#include > > OK. We cross reference the entire errlist. > >> + }; >> + >> +#define MSGSTR_T errname_t >> +#define MSGSTR errname >> +#define MSGIDX errnameidx >> +#include >> +#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 >> 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 >> + . */ >> + >> +#include >> + >> +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 >> + . */ >> + >> +#include >> + >> +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 >> + >> +#define ERR_MAP(value) err_get_code (value) >> +#include >> 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. >