[PATCH 05/16] dlfcn: Move dlerror into libc
Adhemerval Zanella
adhemerval.zanella@linaro.org
Tue Jun 1 19:36:43 GMT 2021
On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
>
> There is a minor functionality enhancement: dlerror now sets
> errno if it was set as part of the exception. (This is the result
> of using %m in asprintf, to avoid the strerror PLT call.) The
> previous errno value upon function return was unpredictable.
> Documenting this as a feature is premature; we need to make sure
> that the error codes are meaningful when they are set by the dynamic
> loader.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> dlfcn/Makefile | 6 ++-
> dlfcn/Versions | 13 ++++--
> dlfcn/dlerror.c | 43 ++++++++-----------
> dlfcn/sdlerror.c | 1 -
> include/dlfcn.h | 8 ++--
> sysdeps/mach/hurd/i386/libc.abilist | 2 +
> sysdeps/mach/hurd/i386/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/aarch64/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/alpha/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/arc/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/arc/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/arm/be/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/arm/le/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/csky/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/csky/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/hppa/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/i386/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/i386/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/ia64/libdl.abilist | 1 -
> .../sysv/linux/m68k/coldfire/libc.abilist | 2 +
> .../sysv/linux/m68k/coldfire/libdl.abilist | 1 -
> .../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 +
> .../unix/sysv/linux/m68k/m680x0/libdl.abilist | 1 -
> .../sysv/linux/microblaze/be/libc.abilist | 2 +
> .../sysv/linux/microblaze/be/libdl.abilist | 1 -
> .../sysv/linux/microblaze/le/libc.abilist | 2 +
> .../sysv/linux/microblaze/le/libdl.abilist | 1 -
> .../sysv/linux/mips/mips32/fpu/libc.abilist | 2 +
> .../unix/sysv/linux/mips/mips32/libdl.abilist | 1 -
> .../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 +
> .../unix/sysv/linux/mips/mips64/libdl.abilist | 1 -
> .../sysv/linux/mips/mips64/n32/libc.abilist | 2 +
> .../sysv/linux/mips/mips64/n64/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/nios2/libdl.abilist | 1 -
> .../linux/powerpc/powerpc32/fpu/libc.abilist | 2 +
> .../linux/powerpc/powerpc32/libdl.abilist | 1 -
> .../powerpc/powerpc32/nofpu/libc.abilist | 2 +
> .../linux/powerpc/powerpc64/be/libc.abilist | 2 +
> .../linux/powerpc/powerpc64/be/libdl.abilist | 1 -
> .../linux/powerpc/powerpc64/le/libc.abilist | 2 +
> .../linux/powerpc/powerpc64/le/libdl.abilist | 1 -
> .../unix/sysv/linux/riscv/rv32/libc.abilist | 2 +
> .../unix/sysv/linux/riscv/rv32/libdl.abilist | 1 -
> .../unix/sysv/linux/riscv/rv64/libc.abilist | 2 +
> .../unix/sysv/linux/riscv/rv64/libdl.abilist | 1 -
> .../unix/sysv/linux/s390/s390-32/libc.abilist | 2 +
> .../sysv/linux/s390/s390-32/libdl.abilist | 1 -
> .../unix/sysv/linux/s390/s390-64/libc.abilist | 2 +
> .../sysv/linux/s390/s390-64/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/sh/be/libdl.abilist | 1 -
> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 +
> sysdeps/unix/sysv/linux/sh/le/libdl.abilist | 1 -
> .../sysv/linux/sparc/sparc32/libc.abilist | 2 +
> .../sysv/linux/sparc/sparc32/libdl.abilist | 1 -
> .../sysv/linux/sparc/sparc64/libc.abilist | 2 +
> .../sysv/linux/sparc/sparc64/libdl.abilist | 1 -
> .../unix/sysv/linux/x86_64/64/libc.abilist | 2 +
> .../unix/sysv/linux/x86_64/64/libdl.abilist | 1 -
> .../unix/sysv/linux/x86_64/x32/libc.abilist | 2 +
> .../unix/sysv/linux/x86_64/x32/libdl.abilist | 1 -
> 68 files changed, 101 insertions(+), 66 deletions(-)
> delete mode 100644 dlfcn/sdlerror.c
>
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index 994a3afee6..b194762d3e 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,11 +21,13 @@ include ../Makeconfig
>
> headers := bits/dlfcn.h dlfcn.h
> extra-libs := libdl
> -libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \
> +libdl-routines := dlopen dlclose dlsym dlvsym dladdr dladdr1 dlinfo \
> dlmopen dlfcn
> routines := $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
> elide-routines.os := $(routines)
> -routines += libc_dlerror_result
> +routines += \
> + dlerror \
> + libc_dlerror_result \
>
> extra-libs-others := libdl
>
Ok.
> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index f07cb929aa..e7a6081d60 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -1,11 +1,19 @@
> libc {
> + GLIBC_2.0 {
> + dlerror;
> + }
> + GLIBC_2.34 {
> + dlerror;
> + }
> GLIBC_PRIVATE {
> __libc_dlerror_result;
> + _dlerror_run;
> + _dlfcn_hook;
> }
> }
> libdl {
> GLIBC_2.0 {
> - dladdr; dlclose; dlerror; dlopen; dlsym;
> + dladdr; dlclose; dlopen; dlsym;
> }
Maybe add one per line?
> GLIBC_2.1 {
> dlopen; dlvsym;
> @@ -16,7 +24,4 @@ libdl {
> GLIBC_2.3.4 {
> dlmopen;
> }
> - GLIBC_PRIVATE {
> - _dlfcn_hook;
> - }
> }
Ok.
> diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c
> index 7db70a26d0..3df8602f4d 100644
> --- a/dlfcn/dlerror.c
> +++ b/dlfcn/dlerror.c
> @@ -28,16 +28,6 @@
> #include <assert.h>
> #include <dlerror.h>
>
> -#if !defined SHARED && IS_IN (libdl)
> -
> -char *
> -dlerror (void)
> -{
> - return __dlerror ();
> -}
> -
> -#else
> -
> char *
> __dlerror (void)
> {
> @@ -86,11 +76,15 @@ __dlerror (void)
> result->objname[0] == '\0' ? "" : ": ",
> _(result->errstring));
> else
> - n = __asprintf (&buf, "%s%s%s: %s",
> - result->objname,
> - result->objname[0] == '\0' ? "" : ": ",
> - _(result->errstring),
> - strerror (result->errcode));
> + {
> + __set_errno (result->errcode);
> + n = __asprintf (&buf, "%s%s%s: %m",
> + result->objname,
> + result->objname[0] == '\0' ? "" : ": ",
> + _(result->errstring));
> + /* Set errno again in case asprintf clobbered it. */
> + __set_errno (result->errcode);
> + }
>
> /* Mark the error as delivered. */
> result->returned = true;
Ok.
> @@ -108,9 +102,11 @@ __dlerror (void)
> existing string as a fallback. */
> return result->errstring;
> }
> -# ifdef SHARED
> -strong_alias (__dlerror, dlerror)
> -# endif
> +versioned_symbol (libc, __dlerror, dlerror, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libdl, __dlerror, dlerror, GLIBC_2_0);
> +#endif
>
> int
> _dlerror_run (void (*operate) (void *), void *args)
Ok.
> @@ -200,13 +196,13 @@ _dlerror_run (void (*operate) (void *), void *args)
> return 1;
> }
> }
> +libc_hidden_def (_dlerror_run)
>
> -# ifdef SHARED
> -
> +#ifdef SHARED
> struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon));
> -libdl_hidden_data_def (_dlfcn_hook)
> +libc_hidden_data_def (_dlfcn_hook)
>
> -# else
> +#else /* !SHARED */
>
> static struct dlfcn_hook _dlfcn_hooks =
> {
> @@ -230,5 +226,4 @@ __libc_register_dlfcn_hook (struct link_map *map)
> if (hook != NULL)
> *hook = &_dlfcn_hooks;
> }
> -# endif
> -#endif
> +#endif /* !SHARED */
Ok.
> diff --git a/dlfcn/sdlerror.c b/dlfcn/sdlerror.c
> deleted file mode 100644
> index f1226a48c5..0000000000
> --- a/dlfcn/sdlerror.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlerror.c"
Ok.
> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index a8d48bdada..a92b2aefb8 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -96,8 +96,8 @@ extern void *_dl_vsym (void *handle, const char *name, const char *version,
> _dl_catch_error. Returns zero for success, nonzero for failure; and
> arranges for `dlerror' to return the error details.
> ARGS is passed as argument to OPERATE. */
> -extern int _dlerror_run (void (*operate) (void *), void *args)
> - attribute_hidden;
> +extern int _dlerror_run (void (*operate) (void *), void *args);
> +libc_hidden_proto (_dlerror_run)
>
> #ifdef SHARED
> # define DL_CALLER_DECL /* Nothing */
> @@ -124,7 +124,7 @@ struct dlfcn_hook
> };
>
> extern struct dlfcn_hook *_dlfcn_hook;
> -libdl_hidden_proto (_dlfcn_hook)
> +libc_hidden_proto (_dlfcn_hook)
>
> extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
> attribute_hidden;
Ok.
> @@ -137,8 +137,6 @@ extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
> extern void *__dlvsym (void *handle, const char *name, const char *version
> DL_CALLER_DECL)
> attribute_hidden;
> -extern char *__dlerror (void)
> - attribute_hidden;
> extern int __dladdr (const void *address, Dl_info *info)
> attribute_hidden;
> extern int __dladdr1 (const void *address, Dl_info *info,
Ok.
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 49aa809366..4c62bf215f 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -741,6 +741,7 @@ GLIBC_2.2.6 dirfd F
> GLIBC_2.2.6 dirname F
> GLIBC_2.2.6 div F
> GLIBC_2.2.6 dl_iterate_phdr F
> +GLIBC_2.2.6 dlerror F
> GLIBC_2.2.6 dngettext F
> GLIBC_2.2.6 dprintf F
> GLIBC_2.2.6 drand48 F
> @@ -2207,6 +2208,7 @@ GLIBC_2.33 stat64 F
> GLIBC_2.34 __isnanf128 F
> GLIBC_2.34 __libc_start_main F
> GLIBC_2.34 _hurd_libc_proc_init F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 timespec_getres F
> GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index 27d133bb7b..1073ce7845 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.2.6 dladdr F
> GLIBC_2.2.6 dlclose F
> -GLIBC_2.2.6 dlerror F
> GLIBC_2.2.6 dlopen F
> GLIBC_2.2.6 dlsym F
> GLIBC_2.2.6 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index d22c7da7ef..cf1e160614 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -718,6 +718,7 @@ GLIBC_2.17 dirfd F
> GLIBC_2.17 dirname F
> GLIBC_2.17 div F
> GLIBC_2.17 dl_iterate_phdr F
> +GLIBC_2.17 dlerror F
> GLIBC_2.17 dngettext F
> GLIBC_2.17 dprintf F
> GLIBC_2.17 drand48 F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index 36340d5dd8..cb92fbf091 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.17 dladdr F
> GLIBC_2.17 dladdr1 F
> GLIBC_2.17 dlclose F
> -GLIBC_2.17 dlerror F
> GLIBC_2.17 dlinfo F
> GLIBC_2.17 dlmopen F
> GLIBC_2.17 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index cefff3bf36..9b303bfeea 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -409,6 +409,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2434,6 +2435,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 91a90f8ca4..804e109621 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -663,6 +663,7 @@ GLIBC_2.32 dirfd F
> GLIBC_2.32 dirname F
> GLIBC_2.32 div F
> GLIBC_2.32 dl_iterate_phdr F
> +GLIBC_2.32 dlerror F
> GLIBC_2.32 dngettext F
> GLIBC_2.32 dprintf F
> GLIBC_2.32 drand48 F
> @@ -2101,6 +2102,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index bf20b0c404..3f7f805044 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.32 dladdr F
> GLIBC_2.32 dladdr1 F
> GLIBC_2.32 dlclose F
> -GLIBC_2.32 dlerror F
> GLIBC_2.32 dlinfo F
> GLIBC_2.32 dlmopen F
> GLIBC_2.32 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 120288d766..1c766b317d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -207,6 +207,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> @@ -1017,6 +1018,7 @@ GLIBC_2.4 dirfd F
> GLIBC_2.4 dirname F
> GLIBC_2.4 div F
> GLIBC_2.4 dl_iterate_phdr F
> +GLIBC_2.4 dlerror F
> GLIBC_2.4 dngettext F
> GLIBC_2.4 dprintf F
> GLIBC_2.4 drand48 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index 40132b1374..1951f0a9af 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.4 dladdr F
> GLIBC_2.4 dladdr1 F
> GLIBC_2.4 dlclose F
> -GLIBC_2.4 dlerror F
> GLIBC_2.4 dlinfo F
> GLIBC_2.4 dlmopen F
> GLIBC_2.4 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index be987da77e..6e5898f5a0 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -204,6 +204,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> @@ -1014,6 +1015,7 @@ GLIBC_2.4 dirfd F
> GLIBC_2.4 dirname F
> GLIBC_2.4 div F
> GLIBC_2.4 dl_iterate_phdr F
> +GLIBC_2.4 dlerror F
> GLIBC_2.4 dngettext F
> GLIBC_2.4 dprintf F
> GLIBC_2.4 drand48 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index 40132b1374..1951f0a9af 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.4 dladdr F
> GLIBC_2.4 dladdr1 F
> GLIBC_2.4 dlclose F
> -GLIBC_2.4 dlerror F
> GLIBC_2.4 dlinfo F
> GLIBC_2.4 dlmopen F
> GLIBC_2.4 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index adb4e15cb8..cd740fb61e 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -699,6 +699,7 @@ GLIBC_2.29 dirfd F
> GLIBC_2.29 dirname F
> GLIBC_2.29 div F
> GLIBC_2.29 dl_iterate_phdr F
> +GLIBC_2.29 dlerror F
> GLIBC_2.29 dngettext F
> GLIBC_2.29 dprintf F
> GLIBC_2.29 drand48 F
> @@ -2285,6 +2286,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 8fcb609ddc..7477354fa8 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.29 dladdr F
> GLIBC_2.29 dladdr1 F
> GLIBC_2.29 dlclose F
> -GLIBC_2.29 dlerror F
> GLIBC_2.29 dlinfo F
> GLIBC_2.29 dlmopen F
> GLIBC_2.29 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index bd022276e8..79ef2450fb 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dlerror F
> GLIBC_2.10 __cxa_at_quick_exit F
> GLIBC_2.10 __posix_getopt F
> GLIBC_2.10 accept4 F
> @@ -2238,6 +2239,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 9e37e1cb38..a5c5cb5868 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -395,6 +395,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2422,6 +2423,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index b8089b0b0c..9d1e50984f 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dlerror F
> GLIBC_2.10 __cxa_at_quick_exit F
> GLIBC_2.10 __posix_getopt F
> GLIBC_2.10 accept4 F
> @@ -2274,6 +2275,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 093854ad85..8cc0f0402f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -208,6 +208,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> @@ -1006,6 +1007,7 @@ GLIBC_2.4 dirfd F
> GLIBC_2.4 dirname F
> GLIBC_2.4 div F
> GLIBC_2.4 dl_iterate_phdr F
> +GLIBC_2.4 dlerror F
> GLIBC_2.4 dngettext F
> GLIBC_2.4 dprintf F
> GLIBC_2.4 drand48 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index 40132b1374..1951f0a9af 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.4 dladdr F
> GLIBC_2.4 dladdr1 F
> GLIBC_2.4 dlclose F
> -GLIBC_2.4 dlerror F
> GLIBC_2.4 dlinfo F
> GLIBC_2.4 dlmopen F
> GLIBC_2.4 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 87554f1468..9df60dda8a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -396,6 +396,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2365,6 +2366,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index e9340671c5..a10b65e1c9 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -720,6 +720,7 @@ GLIBC_2.18 dirfd F
> GLIBC_2.18 dirname F
> GLIBC_2.18 div F
> GLIBC_2.18 dl_iterate_phdr F
> +GLIBC_2.18 dlerror F
> GLIBC_2.18 dngettext F
> GLIBC_2.18 dprintf F
> GLIBC_2.18 drand48 F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index 46b5716dbe..1bb6077e6f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.18 dladdr F
> GLIBC_2.18 dladdr1 F
> GLIBC_2.18 dlclose F
> -GLIBC_2.18 dlerror F
> GLIBC_2.18 dlinfo F
> GLIBC_2.18 dlmopen F
> GLIBC_2.18 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 6ddc0e90cf..aa80f6db28 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -720,6 +720,7 @@ GLIBC_2.18 dirfd F
> GLIBC_2.18 dirname F
> GLIBC_2.18 div F
> GLIBC_2.18 dl_iterate_phdr F
> +GLIBC_2.18 dlerror F
> GLIBC_2.18 dngettext F
> GLIBC_2.18 dprintf F
> GLIBC_2.18 drand48 F
> @@ -2333,6 +2334,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index 46b5716dbe..1bb6077e6f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.18 dladdr F
> GLIBC_2.18 dladdr1 F
> GLIBC_2.18 dlclose F
> -GLIBC_2.18 dlerror F
> GLIBC_2.18 dlinfo F
> GLIBC_2.18 dlmopen F
> GLIBC_2.18 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 8582c9c371..969e1febcf 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -394,6 +394,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2330,6 +2331,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index 6d377d93a4..3b3e0c7d60 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.2 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index b0849bec98..82813866d0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -394,6 +394,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2328,6 +2329,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index 6d377d93a4..3b3e0c7d60 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.2 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 386660a5a1..6f9d2b0842 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -394,6 +394,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 4d05128f21..c75f9a8535 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -392,6 +392,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2330,6 +2331,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index bd305f440f..7c13372bed 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -763,6 +763,7 @@ GLIBC_2.21 dirfd F
> GLIBC_2.21 dirname F
> GLIBC_2.21 div F
> GLIBC_2.21 dl_iterate_phdr F
> +GLIBC_2.21 dlerror F
> GLIBC_2.21 dngettext F
> GLIBC_2.21 dprintf F
> GLIBC_2.21 drand48 F
> @@ -2375,6 +2376,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index 79573c93dc..f47d113867 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.21 dladdr F
> GLIBC_2.21 dladdr1 F
> GLIBC_2.21 dlclose F
> -GLIBC_2.21 dlerror F
> GLIBC_2.21 dlinfo F
> GLIBC_2.21 dlmopen F
> GLIBC_2.21 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c2665624aa..a974a27468 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -405,6 +405,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2392,6 +2393,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 13ef6ef39e..ea3daaf85f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -405,6 +405,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2425,6 +2426,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index b21072e313..1204e120c7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -758,6 +758,7 @@ GLIBC_2.3 dirfd F
> GLIBC_2.3 dirname F
> GLIBC_2.3 div F
> GLIBC_2.3 dl_iterate_phdr F
> +GLIBC_2.3 dlerror F
> GLIBC_2.3 dngettext F
> GLIBC_2.3 dprintf F
> GLIBC_2.3 drand48 F
> @@ -2239,6 +2240,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index 5b472f45aa..fdda336bd2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.3 dladdr F
> GLIBC_2.3 dlclose F
> -GLIBC_2.3 dlerror F
> GLIBC_2.3 dlopen F
> GLIBC_2.3 dlsym F
> GLIBC_2.3 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 62af65536c..58359362ad 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -806,6 +806,7 @@ GLIBC_2.17 dirfd F
> GLIBC_2.17 dirname F
> GLIBC_2.17 div F
> GLIBC_2.17 dl_iterate_phdr F
> +GLIBC_2.17 dlerror F
> GLIBC_2.17 dngettext F
> GLIBC_2.17 dprintf F
> GLIBC_2.17 drand48 F
> @@ -2538,6 +2539,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index 36340d5dd8..cb92fbf091 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.17 dladdr F
> GLIBC_2.17 dladdr1 F
> GLIBC_2.17 dlclose F
> -GLIBC_2.17 dlerror F
> GLIBC_2.17 dlinfo F
> GLIBC_2.17 dlmopen F
> GLIBC_2.17 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index a63aec3379..2717605ce0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -656,6 +656,7 @@ GLIBC_2.33 dirfd F
> GLIBC_2.33 dirname F
> GLIBC_2.33 div F
> GLIBC_2.33 dl_iterate_phdr F
> +GLIBC_2.33 dlerror F
> GLIBC_2.33 dngettext F
> GLIBC_2.33 dprintf F
> GLIBC_2.33 drand48 F
> @@ -2103,6 +2104,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index ac5d2d0e9e..8bb5ee8f56 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.33 dladdr F
> GLIBC_2.33 dladdr1 F
> GLIBC_2.33 dlclose F
> -GLIBC_2.33 dlerror F
> GLIBC_2.33 dlinfo F
> GLIBC_2.33 dlmopen F
> GLIBC_2.33 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index b52efaf5ee..6d5cfc1003 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -697,6 +697,7 @@ GLIBC_2.27 dirfd F
> GLIBC_2.27 dirname F
> GLIBC_2.27 div F
> GLIBC_2.27 dl_iterate_phdr F
> +GLIBC_2.27 dlerror F
> GLIBC_2.27 dngettext F
> GLIBC_2.27 dprintf F
> GLIBC_2.27 drand48 F
> @@ -2303,6 +2304,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index 16adcae553..044092c8ba 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.27 dladdr F
> GLIBC_2.27 dladdr1 F
> GLIBC_2.27 dlclose F
> -GLIBC_2.27 dlerror F
> GLIBC_2.27 dlinfo F
> GLIBC_2.27 dlmopen F
> GLIBC_2.27 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index b699dedcc1..5050039c86 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -395,6 +395,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2390,6 +2391,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 94209858b1..4baccfe878 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -695,6 +695,7 @@ GLIBC_2.2 difftime F
> GLIBC_2.2 dirfd F
> GLIBC_2.2 dirname F
> GLIBC_2.2 div F
> +GLIBC_2.2 dlerror F
> GLIBC_2.2 dngettext F
> GLIBC_2.2 dprintf F
> GLIBC_2.2 drand48 F
> @@ -2276,6 +2277,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 8110e39ce4..88c2b76660 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.2 dladdr F
> GLIBC_2.2 dlclose F
> -GLIBC_2.2 dlerror F
> GLIBC_2.2 dlopen F
> GLIBC_2.2 dlsym F
> GLIBC_2.2 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 0fab90e1e3..a0b0006997 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2,6 +2,7 @@ GCC_3.0 _Unwind_Find_FDE F
> GCC_3.0 __deregister_frame_info_bases F
> GCC_3.0 __register_frame_info_bases F
> GCC_3.0 __register_frame_info_table_bases F
> +GLIBC_2.0 dlerror F
> GLIBC_2.10 __cxa_at_quick_exit F
> GLIBC_2.10 __posix_getopt F
> GLIBC_2.10 accept4 F
> @@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 2f3a64b580..12f05ed141 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2,6 +2,7 @@ GCC_3.0 _Unwind_Find_FDE F
> GCC_3.0 __deregister_frame_info_bases F
> GCC_3.0 __register_frame_info_bases F
> GCC_3.0 __register_frame_info_table_bases F
> +GLIBC_2.0 dlerror F
> GLIBC_2.10 __cxa_at_quick_exit F
> GLIBC_2.10 __posix_getopt F
> GLIBC_2.10 accept4 F
> @@ -2242,6 +2243,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index e6fe453f50..2a19e65697 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 difftime F
> GLIBC_2.0 dirfd F
> GLIBC_2.0 dirname F
> GLIBC_2.0 div F
> +GLIBC_2.0 dlerror F
> GLIBC_2.0 dprintf F
> GLIBC_2.0 drand48 F
> GLIBC_2.0 drand48_r F
> @@ -2383,6 +2384,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 4327cf5eb3..99bf107f54 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2,6 +2,7 @@ GCC_3.0 _Unwind_Find_FDE F
> GCC_3.0 __deregister_frame_info_bases F
> GCC_3.0 __register_frame_info_bases F
> GCC_3.0 __register_frame_info_table_bases F
> +GLIBC_2.0 dlerror F
> GLIBC_2.10 __cxa_at_quick_exit F
> GLIBC_2.10 __posix_getopt F
> GLIBC_2.10 accept4 F
> @@ -2295,6 +2296,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 7826fde951..62dfb3059d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.0 dladdr F
> GLIBC_2.0 dlclose F
> -GLIBC_2.0 dlerror F
> GLIBC_2.0 dlopen F
> GLIBC_2.0 dlsym F
> GLIBC_2.1 dlopen F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 318a6d50f9..ec26f0c30a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -685,6 +685,7 @@ GLIBC_2.2.5 dirfd F
> GLIBC_2.2.5 dirname F
> GLIBC_2.2.5 div F
> GLIBC_2.2.5 dl_iterate_phdr F
> +GLIBC_2.2.5 dlerror F
> GLIBC_2.2.5 dngettext F
> GLIBC_2.2.5 dprintf F
> GLIBC_2.2.5 drand48 F
> @@ -2254,6 +2255,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index c5cd25d424..0d933bc3d6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.2.5 dladdr F
> GLIBC_2.2.5 dlclose F
> -GLIBC_2.2.5 dlerror F
> GLIBC_2.2.5 dlopen F
> GLIBC_2.2.5 dlsym F
> GLIBC_2.2.5 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 0bcf898d4d..a74f962b63 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -722,6 +722,7 @@ GLIBC_2.16 dirfd F
> GLIBC_2.16 dirname F
> GLIBC_2.16 div F
> GLIBC_2.16 dl_iterate_phdr F
> +GLIBC_2.16 dlerror F
> GLIBC_2.16 dngettext F
> GLIBC_2.16 dprintf F
> GLIBC_2.16 drand48 F
> @@ -2357,6 +2358,7 @@ GLIBC_2.34 cnd_init F
> GLIBC_2.34 cnd_signal F
> GLIBC_2.34 cnd_timedwait F
> GLIBC_2.34 cnd_wait F
> +GLIBC_2.34 dlerror F
> GLIBC_2.34 execveat F
> GLIBC_2.34 mtx_destroy F
> GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index c947cd4375..0360ee41e6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,7 +1,6 @@
> GLIBC_2.16 dladdr F
> GLIBC_2.16 dladdr1 F
> GLIBC_2.16 dlclose F
> -GLIBC_2.16 dlerror F
> GLIBC_2.16 dlinfo F
> GLIBC_2.16 dlmopen F
> GLIBC_2.16 dlopen F
>
Ok.
More information about the Libc-alpha
mailing list