public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v3 00/16] Move libdl into libc
@ 2021-05-31 14:10 Florian Weimer
  2021-05-31 14:11 ` [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf Florian Weimer
                   ` (15 more replies)
  0 siblings, 16 replies; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:10 UTC (permalink / raw)
  To: libc-alpha

Changes from v2:

I removed a couple more references to _IO_vfwscanf.

The ABI extension kludge no longer lists symbols explicitly.  Instead,
it relies on correctness of the compat_symbol macros.  These macros are
already tested on other architectures, and they are also tested on the
affected architectures against the abilist files, so this should be
acceptable.

To make things more explicit, I added additional uses of local: * to the
generated version script, which in turn needs some Versions file
updates.

dlfcn/tststatic2 now uses _exit instead of malloc as the test symbol and
has a comment about it.

Tested on i686-linux-gnu, x86_64-linux-gnu.  Built by
build-many-glibcs.py.

Florian Weimer (16):
  stdio-common: Remove _IO_vfwscanf
  Add missing symbols to Version files
  scripts/versions.awk: Add local: * to all version nodes
  Add libc ABI extension kludge for baseline-violating libdl symbols
  dlfcn: Move dlerror into libc
  dlfcn: Move dlclose into libc
  dlfcn: Move dladdr into libc
  dlfcn: Move dlsym into libc
  dlfcn: Move dlmopen into libc
  dlfcn: Move dladdr1 into libc
  dlfcn: Move dlinfo into libc
  dlfcn: Move dlvsym into libc
  dlfcn: Move dlopen into libc
  dlfcn: Cleanups after -ldl is no longer required
  dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2
  dlfcn: Rework static dlopen hooks

 Makeconfig                                    |   6 -
 dlfcn/Makefile                                |  55 +++---
 dlfcn/Versions                                |  42 ++++-
 dlfcn/dladdr.c                                |  24 +--
 dlfcn/dladdr1.c                               |  24 +--
 dlfcn/dlclose.c                               |  32 +---
 dlfcn/dlerror.c                               |  67 ++-----
 dlfcn/dlfcn.c                                 |  41 +++--
 dlfcn/dlinfo.c                                |  47 ++---
 dlfcn/dlmopen.c                               |  67 +++----
 dlfcn/dlopen.c                                |  76 ++++----
 dlfcn/dlopenold.c                             |   6 +-
 dlfcn/dlsym.c                                 |  59 +++---
 dlfcn/dlvsym.c                                |  67 ++++---
 dlfcn/modstatic2.c                            |  10 +-
 dlfcn/sdladdr.c                               |   1 -
 dlfcn/sdladdr1.c                              |   1 -
 dlfcn/sdlclose.c                              |   1 -
 dlfcn/sdlerror.c                              |   1 -
 dlfcn/sdlinfo.c                               |   1 -
 dlfcn/sdlmopen.c                              |   1 -
 dlfcn/sdlopen.c                               |   1 -
 dlfcn/sdlsym.c                                |   1 -
 dlfcn/sdlvsym.c                               |   1 -
 dlfcn/tststatic2.c                            |  10 +-
 elf/Makefile                                  | 173 +++---------------
 elf/Versions                                  |   1 -
 elf/dl-libc.c                                 |  73 +-------
 elf/dl-sym.c                                  |   3 +-
 elf/rtld_static_init.c                        |  18 ++
 htl/Makefile                                  |   1 -
 iconvdata/Makefile                            |   1 -
 include/dlfcn.h                               |  81 +++-----
 inet/Versions                                 |   2 +-
 io/Versions                                   |   1 +
 libio/Versions                                |   2 +
 libio/libio.h                                 |   2 -
 malloc/Makefile                               |   3 -
 misc/Makefile                                 |   2 -
 nptl/Makefile                                 |   7 -
 nptl/Versions                                 |   8 +
 nss/Makefile                                  |   5 -
 posix/Versions                                |   4 +
 resolv/Makefile                               |  19 +-
 scripts/versions.awk                          |  32 +++-
 stdio-common/Makefile                         |   2 +-
 stdio-common/iovfwscanf.c                     |  38 ----
 stdlib/Makefile                               |   8 +-
 string/Makefile                               |   1 -
 sysdeps/generic/ldsodefs.h                    |   3 +
 sysdeps/ieee754/ldbl-128ibm-compat/Makefile   |   1 -
 sysdeps/mach/hurd/i386/Versions               |   3 +
 sysdeps/mach/hurd/i386/libc.abilist           |  18 ++
 sysdeps/mach/hurd/i386/libdl.abilist          |  12 +-
 sysdeps/mips/Makefile                         |   1 -
 sysdeps/pthread/Makefile                      |   6 +-
 sysdeps/unix/sysv/linux/Versions              |  12 ++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  18 ++
 sysdeps/unix/sysv/linux/aarch64/libdl.abilist |  10 +-
 sysdeps/unix/sysv/linux/alpha/Versions        |  10 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  19 ++
 sysdeps/unix/sysv/linux/alpha/libdl.abilist   |  14 +-
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  18 ++
 sysdeps/unix/sysv/linux/arc/libdl.abilist     |  10 +-
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  18 ++
 sysdeps/unix/sysv/linux/arm/be/libdl.abilist  |  10 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  18 ++
 sysdeps/unix/sysv/linux/arm/le/libdl.abilist  |  10 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  18 ++
 sysdeps/unix/sysv/linux/csky/libdl.abilist    |  10 +-
 sysdeps/unix/sysv/linux/hppa/Versions         |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  19 ++
 sysdeps/unix/sysv/linux/hppa/libdl.abilist    |  14 +-
 sysdeps/unix/sysv/linux/i386/Versions         |   4 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  19 ++
 sysdeps/unix/sysv/linux/i386/libdl.abilist    |  14 +-
 sysdeps/unix/sysv/linux/ia64/Versions         |  11 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  19 ++
 sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  14 +-
 .../sysv/linux/m68k/coldfire/libc.abilist     |  18 ++
 .../sysv/linux/m68k/coldfire/libdl.abilist    |  10 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  19 ++
 .../unix/sysv/linux/m68k/m680x0/libdl.abilist |  14 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  18 ++
 .../sysv/linux/microblaze/be/libdl.abilist    |  10 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  18 ++
 .../sysv/linux/microblaze/le/libdl.abilist    |  10 +-
 sysdeps/unix/sysv/linux/mips/Versions         |   4 +
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  19 ++
 .../unix/sysv/linux/mips/mips32/libdl.abilist |  14 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  19 ++
 .../unix/sysv/linux/mips/mips64/libdl.abilist |  14 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  19 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  19 ++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  18 ++
 sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  10 +-
 sysdeps/unix/sysv/linux/powerpc/Versions      |   4 +
 .../sysv/linux/powerpc/powerpc32/Versions     |   8 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  19 ++
 .../linux/powerpc/powerpc32/libdl.abilist     |  14 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  19 ++
 .../sysv/linux/powerpc/powerpc64/Versions     |   7 +-
 .../linux/powerpc/powerpc64/be/libc.abilist   |  18 ++
 .../linux/powerpc/powerpc64/be/libdl.abilist  |  12 +-
 .../linux/powerpc/powerpc64/le/libc.abilist   |  18 ++
 .../linux/powerpc/powerpc64/le/libdl.abilist  |  10 +-
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  18 ++
 .../unix/sysv/linux/riscv/rv32/libdl.abilist  |  10 +-
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  18 ++
 .../unix/sysv/linux/riscv/rv64/libdl.abilist  |  10 +-
 sysdeps/unix/sysv/linux/s390/s390-32/Versions |   3 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  19 ++
 .../sysv/linux/s390/s390-32/libdl.abilist     |  14 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  18 ++
 .../sysv/linux/s390/s390-64/libdl.abilist     |  12 +-
 sysdeps/unix/sysv/linux/sh/Versions           |   4 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  19 ++
 sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  14 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  19 ++
 sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  14 +-
 sysdeps/unix/sysv/linux/sparc/Versions        |  11 +-
 .../unix/sysv/linux/sparc/sparc32/Versions    |   3 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  19 ++
 .../sysv/linux/sparc/sparc32/libdl.abilist    |  14 +-
 .../unix/sysv/linux/sparc/sparc64/Versions    |   1 +
 .../sysv/linux/sparc/sparc64/libc.abilist     |  19 ++
 .../sysv/linux/sparc/sparc64/libdl.abilist    |  14 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  18 ++
 .../unix/sysv/linux/x86_64/64/libdl.abilist   |  12 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  18 ++
 .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  10 +-
 sysdeps/x86/Makefile                          |  13 +-
 132 files changed, 1193 insertions(+), 1016 deletions(-)
 delete mode 100644 dlfcn/sdladdr.c
 delete mode 100644 dlfcn/sdladdr1.c
 delete mode 100644 dlfcn/sdlclose.c
 delete mode 100644 dlfcn/sdlerror.c
 delete mode 100644 dlfcn/sdlinfo.c
 delete mode 100644 dlfcn/sdlmopen.c
 delete mode 100644 dlfcn/sdlopen.c
 delete mode 100644 dlfcn/sdlsym.c
 delete mode 100644 dlfcn/sdlvsym.c
 delete mode 100644 stdio-common/iovfwscanf.c

-- 
2.31.1


^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-05-31 19:42   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 02/16] Add missing symbols to Version files Florian Weimer
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

The symbol has never been exported, so no compatibility symbol is
needed.  Removing this file prevents ld from creation an exported
symbol in case GLIBC_2_0 expands to a symbol version which
does not have a local: *; directive in the symbol version map file.
---
 libio/libio.h                               |  2 --
 stdio-common/Makefile                       |  2 +-
 stdio-common/iovfwscanf.c                   | 38 ---------------------
 sysdeps/ieee754/ldbl-128ibm-compat/Makefile |  1 -
 4 files changed, 1 insertion(+), 42 deletions(-)
 delete mode 100644 stdio-common/iovfwscanf.c

diff --git a/libio/libio.h b/libio/libio.h
index 511b39457f..98d526dec7 100644
--- a/libio/libio.h
+++ b/libio/libio.h
@@ -254,8 +254,6 @@ weak_extern (_IO_stdin_used);
        __result = _IO_fwide (__fp, __result);				      \
      __result; })
 
-extern int _IO_vfwscanf (FILE * __restrict, const wchar_t * __restrict,
-			 __gnuc_va_list, int *__restrict);
 extern __ssize_t _IO_wpadn (FILE *, wint_t, __ssize_t);
 extern void _IO_free_wbackup_area (FILE *) __THROW;
 
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index b2458ba4a6..f87796a8ce 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -40,7 +40,7 @@ routines	:=							      \
 	isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \
 	isoc99_vsscanf							      \
 	psiginfo gentempfd						      \
-	vfscanf-internal vfwscanf-internal iovfscanf iovfwscanf		      \
+	vfscanf-internal vfwscanf-internal iovfscanf			      \
 	vfprintf-internal vfwprintf-internal
 
 aux	:= errlist siglist printf-parsemb printf-parsewc fxprintf
diff --git a/stdio-common/iovfwscanf.c b/stdio-common/iovfwscanf.c
deleted file mode 100644
index 56b6b3b0d5..0000000000
--- a/stdio-common/iovfwscanf.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Implementation and symbols for _IO_vfwscanf.
-   Copyright (C) 1991-2021 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 <libioP.h>
-#include <shlib-compat.h>
-
-/* This function is provided for ports older than GLIBC 2.29 because
-   external callers could theoretically exist.  Newer ports do not need,
-   since it is not part of the API.  */
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_29)
-
-int
-attribute_compat_text_section
-__IO_vfwscanf (FILE *fp, const wchar_t *format, va_list ap, int *errp)
-{
-  int rv = __vfwscanf_internal (fp, format, ap, 0);
-  if (__glibc_unlikely (errp != 0))
-    *errp = (rv == -1);
-  return rv;
-}
-compat_symbol (libc, __IO_vfwscanf, _IO_vfwscanf, GLIBC_2_0);
-
-#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
index 7b42746c34..67d476383a 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
@@ -325,7 +325,6 @@ ldbl-ibm128-files := $(objpfx)test-%-ibm128^ \
 		     $(objpfx)iovsscanf^ \
 		     $(objpfx)iovswscanf^ \
 		     $(objpfx)iovfscanf^ \
-		     $(objpfx)iovfwscanf^ \
 		     $(objpfx)mpn2ldbl^ \
 		     $(objpfx)ldbl2mpn^ \
 		     $(objpfx)strtold_nan^ \
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 02/16] Add missing symbols to Version files
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
  2021-05-31 14:11 ` [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-01 19:12   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes Florian Weimer
                   ` (13 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

Some symbols have explicit versioned_symbol or compat_symbol markers
in the sources, but no corresponding entry in the Versions files.
This presently works because the local: * directive is only applied
to the base version.
---
 inet/Versions                                      |  2 +-
 io/Versions                                        |  1 +
 libio/Versions                                     |  2 ++
 nptl/Versions                                      |  8 ++++++++
 posix/Versions                                     |  4 ++++
 sysdeps/mach/hurd/i386/Versions                    |  3 +++
 sysdeps/unix/sysv/linux/Versions                   | 12 ++++++++++++
 sysdeps/unix/sysv/linux/alpha/Versions             | 10 ++++------
 sysdeps/unix/sysv/linux/i386/Versions              |  4 ----
 sysdeps/unix/sysv/linux/ia64/Versions              | 10 ++++------
 sysdeps/unix/sysv/linux/mips/Versions              |  4 ++++
 sysdeps/unix/sysv/linux/powerpc/Versions           |  4 ++++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions |  8 +-------
 sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions |  7 +------
 sysdeps/unix/sysv/linux/s390/s390-32/Versions      |  3 ---
 sysdeps/unix/sysv/linux/sh/Versions                |  3 ---
 sysdeps/unix/sysv/linux/sparc/Versions             | 11 ++++-------
 sysdeps/unix/sysv/linux/sparc/sparc32/Versions     |  3 ---
 18 files changed, 53 insertions(+), 46 deletions(-)

diff --git a/inet/Versions b/inet/Versions
index 9b3661e046..c0a2ad202d 100644
--- a/inet/Versions
+++ b/inet/Versions
@@ -53,7 +53,7 @@ libc {
     getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
     gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
     getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
-    getprotoent_r; getservbyname_r;
+    getprotoent_r; getservbyname_r; getservbyport_r; getservent_r;
   }
   GLIBC_2.2 {
     # i*
diff --git a/io/Versions b/io/Versions
index 49c4d2d40a..88caf76bbc 100644
--- a/io/Versions
+++ b/io/Versions
@@ -129,6 +129,7 @@ libc {
     copy_file_range;
   }
   GLIBC_2.28 {
+    fcntl;
     fcntl64;
     statx;
   }
diff --git a/libio/Versions b/libio/Versions
index 6f1ab96100..01fc065577 100644
--- a/libio/Versions
+++ b/libio/Versions
@@ -92,6 +92,8 @@ libc {
     # Changed getline function in libio.
     _IO_getline_info;
 
+    _IO_fgetpos64; _IO_fsetpos64;
+
     # f*
     fgetpos64; fopen64; freopen64; fseeko; fseeko64; fsetpos64; ftello;
     ftello64; fopen; fclose; fdopen; fread_unlocked; fwrite_unlocked;
diff --git a/nptl/Versions b/nptl/Versions
index af62a47cca..b8b82991fd 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -175,6 +175,7 @@ libc {
   GLIBC_2.3.4 {
     pthread_attr_getaffinity_np;
     pthread_attr_setaffinity_np;
+    pthread_getaffinity_np;
     pthread_setaffinity_np;
     pthread_setschedprio;
   }
@@ -258,6 +259,7 @@ libc {
     __pthread_register_cancel_defer;
     __pthread_unregister_cancel;
     __pthread_unregister_cancel_restore;
+    __pthread_unwind_next;
     call_once;
     cnd_broadcast;
     cnd_destroy;
@@ -294,6 +296,7 @@ libc {
     pthread_condattr_getpshared;
     pthread_condattr_setclock;
     pthread_condattr_setpshared;
+    pthread_create;
     pthread_detach;
     pthread_getattr_default_np;
     pthread_getconcurrency;
@@ -308,9 +311,12 @@ libc {
     pthread_mutex_consistent;
     pthread_mutex_getprioceiling;
     pthread_mutex_setprioceiling;
+    pthread_mutex_timedlock;
+    pthread_mutex_trylock;
     pthread_mutexattr_destroy;
     pthread_mutexattr_getprioceiling;
     pthread_mutexattr_getprotocol;
+    pthread_mutexattr_getpshared;
     pthread_mutexattr_getrobust;
     pthread_mutexattr_gettype;
     pthread_mutexattr_init;
@@ -323,6 +329,7 @@ libc {
     pthread_rwlock_clockrdlock;
     pthread_rwlock_clockwrlock;
     pthread_rwlock_destroy;
+    pthread_rwlock_init;
     pthread_rwlock_rdlock;
     pthread_rwlock_timedrdlock;
     pthread_rwlock_timedwrlock;
@@ -336,6 +343,7 @@ libc {
     pthread_rwlockattr_init;
     pthread_rwlockattr_setkind_np;
     pthread_rwlockattr_setpshared;
+    pthread_setaffinity_np;
     pthread_setattr_default_np;
     pthread_setconcurrency;
     pthread_setname_np;
diff --git a/posix/Versions b/posix/Versions
index b77e251e00..5983144d01 100644
--- a/posix/Versions
+++ b/posix/Versions
@@ -138,6 +138,10 @@ libc {
   GLIBC_2.11 {
     execvpe;
   }
+  GLIBC_2.15 {
+    posix_spawn;
+    posix_spawnp;
+  }
   GLIBC_2.27 {
     glob; glob64;
   }
diff --git a/sysdeps/mach/hurd/i386/Versions b/sysdeps/mach/hurd/i386/Versions
index 67e6d94204..69572f46f5 100644
--- a/sysdeps/mach/hurd/i386/Versions
+++ b/sysdeps/mach/hurd/i386/Versions
@@ -7,4 +7,7 @@ libc {
   GLIBC_2.2.6 {
     ioperm;
   }
+  GLIBC_2.3.3 {
+    posix_fadvise64; posix_fallocate64;
+  }
 }
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 220bb2dffe..47f5d198ba 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -86,6 +86,16 @@ libc {
 
     # ipc ctl interface change.
     semctl; shmctl; msgctl;
+
+    # Old symbol versions from libpthread.
+    __pread64;
+    __pwrite64;
+    lseek64;
+    open64;
+    pread;
+    pread64;
+    pwrite;
+    pwrite64;
   }
   GLIBC_2.2.1 {
     # p*
@@ -103,6 +113,8 @@ libc {
   }
   GLIBC_2.3.3 {
     gnu_dev_major; gnu_dev_minor; gnu_dev_makedev;
+    _sys_siglist; sys_siglist; sys_sigabbrev;
+    posix_fadvise64; posix_fallocate64;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index b90d5f2e5a..b157e2694a 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -64,6 +64,10 @@ libc {
   GLIBC_2.3 {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
+  GLIBC_2.3.3 {
+    # Changed PTHREAD_STACK_MIN.
+    pthread_attr_setstack; pthread_attr_setstacksize;
+  }
   GLIBC_2.4 {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
@@ -85,12 +89,6 @@ ld {
     __libc_alpha_cache_shape;
   }
 }
-libpthread {
-  GLIBC_2.3.3 {
-    # Changed PTHREAD_STACK_MIN.
-    pthread_attr_setstack; pthread_attr_setstacksize;
-  }
-}
 librt {
   GLIBC_2.3 {
     # AIO functions.
diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions
index b59ace48da..1335e6551b 100644
--- a/sysdeps/unix/sysv/linux/i386/Versions
+++ b/sysdeps/unix/sysv/linux/i386/Versions
@@ -33,10 +33,6 @@ libc {
     # v*
     versionsort64;
   }
-  GLIBC_2.3.3 {
-    # p*
-    posix_fadvise64; posix_fallocate64;
-  }
   GLIBC_2.3.4 {
     # v*
     vm86;
diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
index 214e6f9f1a..f6994151aa 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -14,6 +14,10 @@ libc {
     # w*
     wordexp;
   }
+  GLIBC_2.3.3 {
+    # Changed PTHREAD_STACK_MIN.
+    pthread_attr_setstack; pthread_attr_setstacksize;
+  }
   GLIBC_2.2.6 {
     getunwind;
   }
@@ -21,12 +25,6 @@ libc {
     recvmsg; sendmsg;
   }
 }
-libpthread {
-  GLIBC_2.3.3 {
-    # Changed PTHREAD_STACK_MIN.
-    pthread_attr_setstack; pthread_attr_setstacksize;
-  }
-}
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
diff --git a/sysdeps/unix/sysv/linux/mips/Versions b/sysdeps/unix/sysv/linux/mips/Versions
index aeaac41744..9c6f909e0d 100644
--- a/sysdeps/unix/sysv/linux/mips/Versions
+++ b/sysdeps/unix/sysv/linux/mips/Versions
@@ -21,6 +21,10 @@ libc {
     # _*
     _test_and_set;
   }
+  GLIBC_2.3.3 {
+    # Changed PTHREAD_STACK_MIN.
+    pthread_attr_setstack; pthread_attr_setstacksize;
+  }
   GLIBC_2.11 {
     fallocate64;
   }
diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions
index 416272b718..6778adf5c7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/Versions
@@ -1,4 +1,8 @@
 libc {
+  GLIBC_2.6 {
+    # Changed PTHREAD_STACK_MIN.
+    pthread_attr_setstack; pthread_attr_setstacksize;
+  }
   GLIBC_PRIVATE {
     __vdso_get_tbfreq;
     __vdso_clock_gettime;
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
index ee505efb9e..0e6c8692b0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
@@ -21,10 +21,10 @@ libc {
     scandir64;
   }
   GLIBC_2.3.3 {
-    posix_fadvise64; posix_fallocate64;
     setcontext; getcontext; swapcontext; makecontext;
   }
   GLIBC_2.3.4 {
+    longjmp; siglongjmp;
     setcontext; getcontext; swapcontext; makecontext;
   }
   GLIBC_2.11 {
@@ -34,9 +34,3 @@ libc {
     __ppc_get_timebase_freq;
   }
 }
-
-libpthread {
-  GLIBC_2.3.4 {
-    longjmp; siglongjmp;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
index 7a166f2400..13717b2c5e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -18,6 +18,7 @@ libc {
     getcontext;
     setcontext;
     swapcontext;
+    longjmp; siglongjmp;
   }
   GLIBC_2.17 {
     __ppc_get_timebase_freq;
@@ -31,9 +32,3 @@ librt {
     timer_settime;
   }
 }
-
-libpthread {
-  GLIBC_2.3.4 {
-    longjmp; siglongjmp;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index 99193982a7..cc03e70015 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -26,9 +26,6 @@ libc {
     # v*
     versionsort64;
   }
-  GLIBC_2.3.3 {
-    posix_fadvise64; posix_fallocate64;
-  }
   GLIBC_2.9 {
     getutent;
     getutid;
diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
index e0938c4165..19ba1d8d91 100644
--- a/sysdeps/unix/sysv/linux/sh/Versions
+++ b/sysdeps/unix/sysv/linux/sh/Versions
@@ -21,9 +21,6 @@ libc {
     # v*
     versionsort64;
   }
-  GLIBC_2.3.3 {
-    posix_fadvise64; posix_fallocate64;
-  }
   GLIBC_2.11 {
     fallocate64;
   }
diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions
index 61e57fae99..c4ec7ab537 100644
--- a/sysdeps/unix/sysv/linux/sparc/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/Versions
@@ -8,6 +8,10 @@ libc {
   GLIBC_2.3 {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
+  GLIBC_2.3.3 {
+    # Changed PTHREAD_STACK_MIN.
+    pthread_attr_setstack; pthread_attr_setstacksize;
+  }
   GLIBC_2.4 {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
@@ -25,13 +29,6 @@ libc {
   }
 }
 
-libpthread {
-  GLIBC_2.3.3 {
-    # Changed PTHREAD_STACK_MIN.
-    pthread_attr_setstack; pthread_attr_setstacksize;
-  }
-}
-
 librt {
   GLIBC_2.3 {
     # AIO functions.
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
index c9a5b3e9d5..d928a65346 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
@@ -17,9 +17,6 @@ libc {
     # s*
     scandir64;
   }
-  GLIBC_2.3.3 {
-    posix_fadvise64; posix_fallocate64;
-  }
   GLIBC_2.11 {
     fallocate64;
   }
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
  2021-05-31 14:11 ` [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf Florian Weimer
  2021-05-31 14:11 ` [PATCH 02/16] Add missing symbols to Version files Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-01 19:23   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols Florian Weimer
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

This requires that all exported symbol versions are listed in
Versions files.  It results in more consistent behavior across
architectures because previously, symbols could be exported
via explicit versioned_symbol and compat_symbol clauses if the
version node existed in some Versions file (without listing the
symbol) and it was not the base version for the library.
---
 scripts/versions.awk | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/scripts/versions.awk b/scripts/versions.awk
index 3291123666..a7154480e3 100644
--- a/scripts/versions.awk
+++ b/scripts/versions.awk
@@ -95,10 +95,7 @@ function ord(c) {
 
 
 function closeversion(name, oldname) {
-  if (firstinfile) {
-    printf("  local:\n    *;\n") > outfile;
-    firstinfile = 0;
-  }
+  printf("  local:\n    *;\n") > outfile;
   # This version inherits from the last one only if they
   # have the same nonnumeric prefix, i.e. GLIBC_x.y and GLIBC_x.z
   # or FOO_x and FOO_y but not GLIBC_x and FOO_y.
@@ -157,7 +154,6 @@ END {
       oldlib = $1;
       real_outfile = buildroot oldlib ".map";
       outfile = real_outfile "T";
-      firstinfile = 1;
       veryoldver = "";
       printf(" %s.map", oldlib);
     }
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (2 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-01 19:31   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 05/16] dlfcn: Move dlerror into libc Florian Weimer
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

Some targets have a GLIBC_2.0 baseline for libdl, while using
GLIBC_2.2 for libc.  This means that the generated libc.map file
does not have any version nodes for GLIBC_2.0 or GLIBC_2.1.  However,
moving symbols from libdl into libc needs such version nodes.
(Future symbol moves from librt will need this as well.)

This kludge is only necessary for symbols predating GLIBC_2.2 because
the affected targets use GLIBC_2.2 as the baseline for libc.  Given
the small number and fixexd set of affected architectures, no generic
mechanism is implemented, and instead the map file fragment is
hard-coded in scripts/versions.mk.

The compat_symbol macro already emits the appropriate version strings,
so no adjustments are needed there.
---
 scripts/versions.awk                          | 26 ++++++++++++++++++-
 sysdeps/unix/sysv/linux/hppa/Versions         |  1 +
 sysdeps/unix/sysv/linux/ia64/Versions         |  1 +
 sysdeps/unix/sysv/linux/sh/Versions           |  1 +
 .../unix/sysv/linux/sparc/sparc64/Versions    |  1 +
 5 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/scripts/versions.awk b/scripts/versions.awk
index a7154480e3..1e8d8e4dc5 100644
--- a/scripts/versions.awk
+++ b/scripts/versions.awk
@@ -93,6 +93,26 @@ function ord(c) {
   printf("%s %s %s\n", actlib, sortver, $0) | sort;
 }
 
+# Some targets do not set the ABI baseline for libdl.  As a result,
+# symbols originally in libdl need to be moved under historic symbol
+# versions, without altering the baseline version for libc itself.
+/^ *!libc_abi_extension/ {
+    libc_abi_extension_active = 1;
+}
+
+function libc_abi_extension() {
+    # No local: * here, so that we do not have to update this script
+    # if symbols are moved into libc.  The abilist files and the other
+    # targets (with a real GLIBC_2.0 baseline) provide testing
+    # coverage.
+    printf("\
+GLIBC_2.0 {\n\
+};\n\
+GLIBC_2.1 {\n\
+} GLIBC_2.0;\n\
+") > outfile;
+    return "GLIBC_2.1";
+}
 
 function closeversion(name, oldname) {
   printf("  local:\n    *;\n") > outfile;
@@ -154,7 +174,11 @@ END {
       oldlib = $1;
       real_outfile = buildroot oldlib ".map";
       outfile = real_outfile "T";
-      veryoldver = "";
+      if ($1 == "libc" && libc_abi_extension_active) {
+	  veryoldver = libc_abi_extension();
+      } else {
+	  veryoldver = "";
+      }
       printf(" %s.map", oldlib);
     }
     if ($2 != oldver) {
diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions
index 9532d207fc..8969fc08af 100644
--- a/sysdeps/unix/sysv/linux/hppa/Versions
+++ b/sysdeps/unix/sysv/linux/hppa/Versions
@@ -1,3 +1,4 @@
+!libc_abi_extension
 libc {
   GLIBC_2.1 {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
index f6994151aa..7cac57a8e1 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -1,3 +1,4 @@
+!libc_abi_extension
 libc {
   GLIBC_2.2 {
     ioperm; iopl;
diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
index 19ba1d8d91..fc89ff1c18 100644
--- a/sysdeps/unix/sysv/linux/sh/Versions
+++ b/sysdeps/unix/sysv/linux/sh/Versions
@@ -1,3 +1,4 @@
+!libc_abi_extension
 libc {
   GLIBC_2.2 {
     # functions used in other libraries
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
index fbea1bb2ef..3059d56f80 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -1,3 +1,4 @@
+!libc_abi_extension
 libc {
   GLIBC_2.0 {
     # Exception handling support functions from libgcc
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 05/16] dlfcn: Move dlerror into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (3 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-01 19:36   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 06/16] dlfcn: Move dlclose " Florian Weimer
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

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.
---
 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
 
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;
   }
   GLIBC_2.1 {
     dlopen; dlvsym;
@@ -16,7 +24,4 @@ libdl {
   GLIBC_2.3.4 {
     dlmopen;
   }
-  GLIBC_PRIVATE {
-    _dlfcn_hook;
-  }
 }
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;
@@ -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)
@@ -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 */
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"
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;
@@ -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,
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
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 06/16] dlfcn: Move dlclose into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (4 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH 05/16] dlfcn: Move dlerror into libc Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-02 12:58   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 07/16] dlfcn: Move dladdr " Florian Weimer
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 +-
 dlfcn/Versions                                |  4 ++-
 dlfcn/dlclose.c                               | 30 +++++--------------
 dlfcn/sdlclose.c                              |  1 -
 include/dlfcn.h                               |  7 +++--
 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, 84 insertions(+), 57 deletions(-)
 delete mode 100644 dlfcn/sdlclose.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index b194762d3e..4bdf524492 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,11 +21,12 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlclose dlsym dlvsym dladdr dladdr1 dlinfo \
+libdl-routines	:= dlopen dlsym dlvsym dladdr dladdr1 dlinfo \
 		   dlmopen dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
 routines += \
+  dlclose \
   dlerror \
   libc_dlerror_result \
 
diff --git a/dlfcn/Versions b/dlfcn/Versions
index e7a6081d60..e2978c2a1c 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -1,8 +1,10 @@
 libc {
   GLIBC_2.0 {
+    dlclose;
     dlerror;
   }
   GLIBC_2.34 {
+    dlclose;
     dlerror;
   }
   GLIBC_PRIVATE {
@@ -13,7 +15,7 @@ libc {
 }
 libdl {
   GLIBC_2.0 {
-    dladdr; dlclose; dlopen; dlsym;
+    dladdr; dlopen; dlsym;
   }
   GLIBC_2.1 {
     dlopen; dlvsym;
diff --git a/dlfcn/dlclose.c b/dlfcn/dlclose.c
index 4bed5de55d..4d5d307ab1 100644
--- a/dlfcn/dlclose.c
+++ b/dlfcn/dlclose.c
@@ -18,34 +18,20 @@
 
 #include <dlfcn.h>
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-int
-dlclose (void *handle)
-{
-  return __dlclose (handle);
-}
-
-#else
-
-static void
-dlclose_doit (void *handle)
-{
-  GLRO(dl_close) (handle);
-}
+#include <shlib-compat.h>
 
 int
 __dlclose (void *handle)
 {
-# ifdef SHARED
+#ifdef SHARED
   if (!rtld_active ())
     return _dlfcn_hook->dlclose (handle);
-# endif
+#endif
 
-  return _dlerror_run (dlclose_doit, handle) ? -1 : 0;
+  return _dlerror_run (GLRO (dl_close), handle) ? -1 : 0;
 }
-# ifdef SHARED
-strong_alias (__dlclose, dlclose)
-# endif
+versioned_symbol (libc, __dlclose, dlclose, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libdl, __dlclose, dlclose, GLIBC_2_0);
 #endif
diff --git a/dlfcn/sdlclose.c b/dlfcn/sdlclose.c
deleted file mode 100644
index dc89b98029..0000000000
--- a/dlfcn/sdlclose.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlclose.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index a92b2aefb8..352eb79500 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -126,12 +126,15 @@ struct dlfcn_hook
 extern struct dlfcn_hook *_dlfcn_hook;
 libc_hidden_proto (_dlfcn_hook)
 
+/* Note: These prototypes are for initializing _dflcn_hook in static
+   libraries.  Internal calls in glibc should use the __libc_dl*
+   functions defined in elf/dl-libc.c instead.  */
+
 extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
      attribute_hidden;
 extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
      attribute_hidden;
-extern int __dlclose (void *handle)
-     attribute_hidden;
+extern int __dlclose (void *handle);
 extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
      attribute_hidden;
 extern void *__dlvsym (void *handle, const char *name, const char *version
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 4c62bf215f..7e1b9845fc 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 dlclose F
 GLIBC_2.2.6 dlerror F
 GLIBC_2.2.6 dngettext F
 GLIBC_2.2.6 dprintf F
@@ -2208,6 +2209,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 timespec_getres F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index 1073ce7845..d267e7d457 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.6 dladdr F
-GLIBC_2.2.6 dlclose 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 cf1e160614..8fdbe6548e 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 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
@@ -2343,6 +2344,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index cb92fbf091..201e1e7146 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dladdr1 F
-GLIBC_2.17 dlclose 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 9b303bfeea..c2bae6f242 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2435,6 +2436,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 804e109621..bcc9352407 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 dlclose F
 GLIBC_2.32 dlerror F
 GLIBC_2.32 dngettext F
 GLIBC_2.32 dprintf F
@@ -2102,6 +2103,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index 3f7f805044..7dc68475ea 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.32 dladdr F
 GLIBC_2.32 dladdr1 F
-GLIBC_2.32 dlclose 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 1c766b317d..d883be6028 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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1018,6 +1019,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 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index 1951f0a9af..0ddfa10b3d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
-GLIBC_2.4 dlclose 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 6e5898f5a0..4dbb5e3442 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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1015,6 +1016,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 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index 1951f0a9af..0ddfa10b3d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
-GLIBC_2.4 dlclose 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 cd740fb61e..0da7522411 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 dlclose F
 GLIBC_2.29 dlerror F
 GLIBC_2.29 dngettext F
 GLIBC_2.29 dprintf F
@@ -2286,6 +2287,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 7477354fa8..359b2d6267 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.29 dladdr F
 GLIBC_2.29 dladdr1 F
-GLIBC_2.29 dlclose 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 79ef2450fb..53128aae93 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt 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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 a5c5cb5868..0731f99ab1 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2423,6 +2424,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 9d1e50984f..87acf0b861 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2275,6 +2276,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 8cc0f0402f..ed482a6551 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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1007,6 +1008,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 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index 1951f0a9af..0ddfa10b3d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
-GLIBC_2.4 dlclose 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 9df60dda8a..eff3f537f0 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2366,6 +2367,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 a10b65e1c9..aeda8130c1 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 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
@@ -2337,6 +2338,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index 1bb6077e6f..90dcb88bab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dladdr1 F
-GLIBC_2.18 dlclose 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 aa80f6db28..cf8583acf8 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 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
@@ -2334,6 +2335,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index 1bb6077e6f..90dcb88bab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dladdr1 F
-GLIBC_2.18 dlclose 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 969e1febcf..72a1879260 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2331,6 +2332,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index 3b3e0c7d60..c35888c87a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 82813866d0..7f116922cf 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2329,6 +2330,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index 3b3e0c7d60..c35888c87a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 6f9d2b0842..af7ab63030 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2337,6 +2338,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index c75f9a8535..17f64d7c1e 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2331,6 +2332,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 7c13372bed..7c0d6dbd03 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 dlclose F
 GLIBC_2.21 dlerror F
 GLIBC_2.21 dngettext F
 GLIBC_2.21 dprintf F
@@ -2376,6 +2377,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index f47d113867..2de1533f42 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.21 dladdr F
 GLIBC_2.21 dladdr1 F
-GLIBC_2.21 dlclose 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 a974a27468..c3f9df2b67 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2393,6 +2394,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 ea3daaf85f..b122dce9f5 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2426,6 +2427,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 1204e120c7..c5cee140ea 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 dlclose F
 GLIBC_2.3 dlerror F
 GLIBC_2.3 dngettext F
 GLIBC_2.3 dprintf F
@@ -2240,6 +2241,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index fdda336bd2..183a4b1526 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.3 dladdr F
-GLIBC_2.3 dlclose 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 58359362ad..14a53736ff 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 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
@@ -2539,6 +2540,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index cb92fbf091..201e1e7146 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dladdr1 F
-GLIBC_2.17 dlclose 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 2717605ce0..4076eb1fc3 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 dlclose F
 GLIBC_2.33 dlerror F
 GLIBC_2.33 dngettext F
 GLIBC_2.33 dprintf F
@@ -2104,6 +2105,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 8bb5ee8f56..40991dffcd 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.33 dladdr F
 GLIBC_2.33 dladdr1 F
-GLIBC_2.33 dlclose 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 6d5cfc1003..b608d9384a 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 dlclose F
 GLIBC_2.27 dlerror F
 GLIBC_2.27 dngettext F
 GLIBC_2.27 dprintf F
@@ -2304,6 +2305,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index 044092c8ba..6dea0435f8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.27 dladdr F
 GLIBC_2.27 dladdr1 F
-GLIBC_2.27 dlclose 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 5050039c86..c5809de838 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2391,6 +2392,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 4baccfe878..b118d56f0d 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 dlclose F
 GLIBC_2.2 dlerror F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 dprintf F
@@ -2277,6 +2278,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index 88c2b76660..99bb237244 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2 dladdr F
-GLIBC_2.2 dlclose 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 a0b0006997..e6748c96dc 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2246,6 +2247,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 12f05ed141..fa0e795ec1 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2243,6 +2244,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 2a19e65697..897b34dabf 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -2384,6 +2385,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 99bf107f54..2d7e5a0ca1 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 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2296,6 +2297,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index 62dfb3059d..a975af50ec 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dladdr F
-GLIBC_2.0 dlclose 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 ec26f0c30a..62bded4298 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 dlclose F
 GLIBC_2.2.5 dlerror F
 GLIBC_2.2.5 dngettext F
 GLIBC_2.2.5 dprintf F
@@ -2255,6 +2256,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index 0d933bc3d6..f4f0482c24 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.5 dladdr F
-GLIBC_2.2.5 dlclose 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 a74f962b63..f197d4301f 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 dlclose F
 GLIBC_2.16 dlerror F
 GLIBC_2.16 dngettext F
 GLIBC_2.16 dprintf F
@@ -2358,6 +2359,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 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index 0360ee41e6..a29fef95d4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.16 dladdr F
 GLIBC_2.16 dladdr1 F
-GLIBC_2.16 dlclose F
 GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlmopen F
 GLIBC_2.16 dlopen F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 07/16] dlfcn: Move dladdr into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (5 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH 06/16] dlfcn: Move dlclose " Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-02 14:02   ` Adhemerval Zanella
  2021-05-31 14:11 ` [PATCH 08/16] dlfcn: Move dlsym " Florian Weimer
                   ` (8 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 ++-
 dlfcn/Versions                                |  4 +++-
 dlfcn/dladdr.c                                | 22 ++++++-------------
 dlfcn/sdladdr.c                               |  1 -
 include/dlfcn.h                               |  3 +--
 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, 79 insertions(+), 50 deletions(-)
 delete mode 100644 dlfcn/sdladdr.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 4bdf524492..f0793468c7 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,11 +21,12 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlsym dlvsym dladdr dladdr1 dlinfo \
+libdl-routines	:= dlopen dlsym dlvsym dladdr1 dlinfo \
 		   dlmopen dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
 routines += \
+  dladdr \
   dlclose \
   dlerror \
   libc_dlerror_result \
diff --git a/dlfcn/Versions b/dlfcn/Versions
index e2978c2a1c..89e4a1236a 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -1,9 +1,11 @@
 libc {
   GLIBC_2.0 {
+    dladdr;
     dlclose;
     dlerror;
   }
   GLIBC_2.34 {
+    dladdr;
     dlclose;
     dlerror;
   }
@@ -15,7 +17,7 @@ libc {
 }
 libdl {
   GLIBC_2.0 {
-    dladdr; dlopen; dlsym;
+    dlopen; dlsym;
   }
   GLIBC_2.1 {
     dlopen; dlvsym;
diff --git a/dlfcn/dladdr.c b/dlfcn/dladdr.c
index 27a6e49cac..3ef1b7f0b6 100644
--- a/dlfcn/dladdr.c
+++ b/dlfcn/dladdr.c
@@ -18,27 +18,19 @@
 
 #include <dlfcn.h>
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-int
-dladdr (const void *address, Dl_info *info)
-{
-  return __dladdr (address, info);
-}
-
-#else
+#include <shlib-compat.h>
 
 int
 __dladdr (const void *address, Dl_info *info)
 {
-# ifdef SHARED
+#ifdef SHARED
   if (!rtld_active ())
     return _dlfcn_hook->dladdr (address, info);
-# endif
+#endif
   return _dl_addr (address, info, NULL, NULL);
 }
-# ifdef SHARED
-strong_alias (__dladdr, dladdr)
-# endif
+versioned_symbol (libc, __dladdr, dladdr, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT  (libdl, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libdl, __dladdr, dladdr, GLIBC_2_0);
 #endif
diff --git a/dlfcn/sdladdr.c b/dlfcn/sdladdr.c
deleted file mode 100644
index c484d63b29..0000000000
--- a/dlfcn/sdladdr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dladdr.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 352eb79500..a018144808 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -140,8 +140,7 @@ 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 int __dladdr (const void *address, Dl_info *info)
-     attribute_hidden;
+extern int __dladdr (const void *address, Dl_info *info);
 extern int __dladdr1 (const void *address, Dl_info *info,
 		      void **extra_info, int flags)
      attribute_hidden;
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 7e1b9845fc..abf3f3cf7f 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 dladdr F
 GLIBC_2.2.6 dlclose F
 GLIBC_2.2.6 dlerror F
 GLIBC_2.2.6 dngettext F
@@ -2209,6 +2210,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index d267e7d457..5b9579b3d2 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2.6 dladdr 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 8fdbe6548e..f912cea6a0 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 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dngettext F
@@ -2344,6 +2345,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index 201e1e7146..731d6a1377 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 dladdr F
 GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c2bae6f242..c0dfb9be95 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2436,6 +2437,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 bcc9352407..c2a4c1f9ba 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 dladdr F
 GLIBC_2.32 dlclose F
 GLIBC_2.32 dlerror F
 GLIBC_2.32 dngettext 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index 7dc68475ea..1c818309f2 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.32 dladdr F
 GLIBC_2.32 dladdr1 F
 GLIBC_2.32 dlinfo F
 GLIBC_2.32 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index d883be6028..db80c07019 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
@@ -1019,6 +1020,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 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index 0ddfa10b3d..69ffaf4edf 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dbb5e3442..3600075a47 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
@@ -1016,6 +1017,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 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index 0ddfa10b3d..69ffaf4edf 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 0da7522411..d7beb5db45 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 dladdr F
 GLIBC_2.29 dlclose F
 GLIBC_2.29 dlerror F
 GLIBC_2.29 dngettext F
@@ -2287,6 +2288,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 359b2d6267..2c8047a614 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.29 dladdr F
 GLIBC_2.29 dladdr1 F
 GLIBC_2.29 dlinfo F
 GLIBC_2.29 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 53128aae93..59b0e421a7 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2240,6 +2241,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 0731f99ab1..e33dd7d91e 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2424,6 +2425,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 87acf0b861..772b686c1d 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 ed482a6551..6ee063131e 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
@@ -1008,6 +1009,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 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index 0ddfa10b3d..69ffaf4edf 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr F
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index eff3f537f0..9fb78fd4fd 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2367,6 +2368,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 aeda8130c1..6ba6e439c5 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 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dngettext F
@@ -2338,6 +2339,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index 90dcb88bab..721e823b1b 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 dladdr F
 GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index cf8583acf8..b3d12892e6 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 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dngettext F
@@ -2335,6 +2336,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index 90dcb88bab..721e823b1b 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 dladdr F
 GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 72a1879260..43fe36e7d1 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2332,6 +2333,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index c35888c87a..d8aab2a6de 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 7f116922cf..699ad445f7 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index c35888c87a..d8aab2a6de 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 af7ab63030..3da887b94b 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2338,6 +2339,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 17f64d7c1e..8c34936cc0 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2332,6 +2333,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 7c0d6dbd03..e1bc50caf5 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 dladdr F
 GLIBC_2.21 dlclose F
 GLIBC_2.21 dlerror F
 GLIBC_2.21 dngettext F
@@ -2377,6 +2378,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index 2de1533f42..835ee02768 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.21 dladdr F
 GLIBC_2.21 dladdr1 F
 GLIBC_2.21 dlinfo F
 GLIBC_2.21 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index c3f9df2b67..8c3c1bb5c5 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2394,6 +2395,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 b122dce9f5..018f9c0253 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2427,6 +2428,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index c5cee140ea..330f5fdc1a 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 dladdr F
 GLIBC_2.3 dlclose F
 GLIBC_2.3 dlerror F
 GLIBC_2.3 dngettext F
@@ -2241,6 +2242,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index 183a4b1526..4446495717 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 dladdr 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 14a53736ff..b770ac88b3 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 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dngettext F
@@ -2540,6 +2541,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index 201e1e7146..731d6a1377 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 dladdr F
 GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 4076eb1fc3..ea14f58edb 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 dladdr F
 GLIBC_2.33 dlclose F
 GLIBC_2.33 dlerror F
 GLIBC_2.33 dngettext F
@@ -2105,6 +2106,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 40991dffcd..b140aa0b09 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.33 dladdr F
 GLIBC_2.33 dladdr1 F
 GLIBC_2.33 dlinfo F
 GLIBC_2.33 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index b608d9384a..5c2a87a3b0 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 dladdr F
 GLIBC_2.27 dlclose F
 GLIBC_2.27 dlerror F
 GLIBC_2.27 dngettext F
@@ -2305,6 +2306,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index 6dea0435f8..3536869c77 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.27 dladdr F
 GLIBC_2.27 dladdr1 F
 GLIBC_2.27 dlinfo F
 GLIBC_2.27 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index c5809de838..937a3ba942 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf 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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 b118d56f0d..cce8034393 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 dladdr F
 GLIBC_2.2 dlclose F
 GLIBC_2.2 dlerror F
 GLIBC_2.2 dngettext F
@@ -2278,6 +2279,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index 99bb237244..c995dec160 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2 dladdr 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 e6748c96dc..28154a96dd 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2247,6 +2248,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 fa0e795ec1..d9a16e9ccf 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2244,6 +2245,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 897b34dabf..98e6db33fe 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dprintf F
@@ -2385,6 +2386,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 2d7e5a0ca1..479a1b38a6 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 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2297,6 +2298,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index a975af50ec..25cf9cd21e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 dladdr 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 62bded4298..3c6750b3a4 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 dladdr F
 GLIBC_2.2.5 dlclose F
 GLIBC_2.2.5 dlerror F
 GLIBC_2.2.5 dngettext F
@@ -2256,6 +2257,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index f4f0482c24..28f001d6ec 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2.5 dladdr 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 f197d4301f..0bfba9edbc 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 dladdr F
 GLIBC_2.16 dlclose F
 GLIBC_2.16 dlerror F
 GLIBC_2.16 dngettext F
@@ -2359,6 +2360,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 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index a29fef95d4..f61c4a59d3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.16 dladdr F
 GLIBC_2.16 dladdr1 F
 GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlmopen F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 08/16] dlfcn: Move dlsym into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (6 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH 07/16] dlfcn: Move dladdr " Florian Weimer
@ 2021-05-31 14:11 ` Florian Weimer
  2021-06-02 14:12   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 09/16] dlfcn: Move dlmopen " Florian Weimer
                   ` (7 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:11 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.

In elf/Makefile, remove the $(libdl) dependency from testobj1.so
because it the unused libdl DSO now causes elf/tst-unused-deps to
fail.
---
 dlfcn/Makefile                                |  3 +-
 dlfcn/Versions                                |  4 +-
 dlfcn/dlsym.c                                 | 59 +++++++++++--------
 dlfcn/sdlsym.c                                |  1 -
 elf/Makefile                                  |  1 -
 elf/dl-sym.c                                  |  1 +
 include/dlfcn.h                               |  4 +-
 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 -
 70 files changed, 109 insertions(+), 60 deletions(-)
 delete mode 100644 dlfcn/sdlsym.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index f0793468c7..b0f2e8a986 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,7 +21,7 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlsym dlvsym dladdr1 dlinfo \
+libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
 		   dlmopen dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
@@ -29,6 +29,7 @@ routines += \
   dladdr \
   dlclose \
   dlerror \
+  dlsym \
   libc_dlerror_result \
 
 extra-libs-others := libdl
diff --git a/dlfcn/Versions b/dlfcn/Versions
index 89e4a1236a..7d6b51a4e3 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -3,11 +3,13 @@ libc {
     dladdr;
     dlclose;
     dlerror;
+    dlsym;
   }
   GLIBC_2.34 {
     dladdr;
     dlclose;
     dlerror;
+    dlsym;
   }
   GLIBC_PRIVATE {
     __libc_dlerror_result;
@@ -17,7 +19,7 @@ libc {
 }
 libdl {
   GLIBC_2.0 {
-    dlopen; dlsym;
+    dlopen;
   }
   GLIBC_2.1 {
     dlopen; dlvsym;
diff --git a/dlfcn/dlsym.c b/dlfcn/dlsym.c
index 26cea4ba6d..6b03b7b7ab 100644
--- a/dlfcn/dlsym.c
+++ b/dlfcn/dlsym.c
@@ -17,19 +17,9 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <dlfcn.h>
-#include <stddef.h>
-
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-void *
-dlsym (void *handle, const char *name)
-{
-  return __dlsym (handle, name, RETURN_ADDRESS (0));
-}
-
-#else
+#include <shlib-compat.h>
+#include <stddef.h>
 
 struct dlsym_args
 {
@@ -50,17 +40,11 @@ dlsym_doit (void *a)
   args->sym = _dl_sym (args->handle, args->name, args->who);
 }
 
-
-void *
-__dlsym (void *handle, const char *name DL_CALLER_DECL)
+static void *
+dlsym_implementation (void *handle, const char *name, void *dl_caller)
 {
-# ifdef SHARED
-  if (!rtld_active ())
-    return _dlfcn_hook->dlsym (handle, name, DL_CALLER);
-# endif
-
   struct dlsym_args args;
-  args.who = DL_CALLER;
+  args.who = dl_caller;
   args.handle = handle;
   args.name = name;
 
@@ -73,7 +57,34 @@ __dlsym (void *handle, const char *name DL_CALLER_DECL)
 
   return result;
 }
-# ifdef SHARED
-strong_alias (__dlsym, dlsym)
+
+#ifdef SHARED
+void *
+___dlsym (void *handle, const char *name)
+{
+  if (!rtld_active ())
+    return _dlfcn_hook->dlsym (handle, name, RETURN_ADDRESS (0));
+  else
+    return dlsym_implementation (handle, name, RETURN_ADDRESS (0));
+}
+versioned_symbol (libc, ___dlsym, dlsym, GLIBC_2_34);
+
+# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libdl, ___dlsym, dlsym, GLIBC_2_0);
 # endif
-#endif
+
+#else /* !SHARED */
+/* Also used with _dlfcn_hook.  */
+void *
+__dlsym (void *handle, const char *name, void *dl_caller)
+{
+  return dlsym_implementation (handle, name, dl_caller);
+}
+
+void *
+___dlsym (void *handle, const char *name)
+{
+  return __dlsym (handle, name, RETURN_ADDRESS (0));
+}
+weak_alias (___dlsym, dlsym)
+#endif /* !SHARED */
diff --git a/dlfcn/sdlsym.c b/dlfcn/sdlsym.c
deleted file mode 100644
index 0234f23f8f..0000000000
--- a/dlfcn/sdlsym.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlsym.c"
diff --git a/elf/Makefile b/elf/Makefile
index 834ec858a8..0ec736bb0f 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -699,7 +699,6 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
 test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
 generated += $(addsuffix .so,$(strip $(modules-names)))
 
-$(objpfx)testobj1.so: $(libdl)
 $(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
 $(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
 $(objpfx)testobj3.so: $(libdl)
diff --git a/elf/dl-sym.c b/elf/dl-sym.c
index dfd6169e12..b34cc2f8eb 100644
--- a/elf/dl-sym.c
+++ b/elf/dl-sym.c
@@ -195,3 +195,4 @@ _dl_sym (void *handle, const char *name, void *who)
 {
   return do_sym (handle, name, who, NULL, DL_LOOKUP_RETURN_NEWEST);
 }
+libc_hidden_def (_dl_sym)
diff --git a/include/dlfcn.h b/include/dlfcn.h
index a018144808..2b174f8670 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -84,6 +84,7 @@ extern void _dl_close_worker (struct link_map *map, bool force)
    RTLD_NEXT).  WHO is the calling function, for RTLD_NEXT.  Returns
    the symbol value, which may be NULL.  */
 extern void *_dl_sym (void *handle, const char *name, void *who);
+libc_hidden_proto (_dl_sym)
 
 /* Look up version VERSION of symbol NAME in shared object HANDLE
    (which may be RTLD_DEFAULT or RTLD_NEXT).  WHO is the calling
@@ -135,8 +136,7 @@ extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
 extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
      attribute_hidden;
 extern int __dlclose (void *handle);
-extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
-     attribute_hidden;
+extern void *__dlsym (void *handle, const char *name, void *dl_caller);
 extern void *__dlvsym (void *handle, const char *name, const char *version
 		       DL_CALLER_DECL)
      attribute_hidden;
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index abf3f3cf7f..02ba6c3593 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -744,6 +744,7 @@ GLIBC_2.2.6 dl_iterate_phdr F
 GLIBC_2.2.6 dladdr F
 GLIBC_2.2.6 dlclose F
 GLIBC_2.2.6 dlerror F
+GLIBC_2.2.6 dlsym F
 GLIBC_2.2.6 dngettext F
 GLIBC_2.2.6 dprintf F
 GLIBC_2.2.6 drand48 F
@@ -2213,6 +2214,7 @@ GLIBC_2.34 _hurd_libc_proc_init F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 5b9579b3d2..e4fe2ccab6 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.6 dlopen F
-GLIBC_2.2.6 dlsym F
 GLIBC_2.2.6 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index f912cea6a0..9da6e869fa 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -721,6 +721,7 @@ GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
+GLIBC_2.17 dlsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
 GLIBC_2.17 drand48 F
@@ -2348,6 +2349,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 731d6a1377..d3822d83fc 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlopen F
-GLIBC_2.17 dlsym F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c0dfb9be95..1c9805a7f4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -412,6 +412,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2440,6 +2441,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index c2a4c1f9ba..1a83cb2288 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -666,6 +666,7 @@ GLIBC_2.32 dl_iterate_phdr F
 GLIBC_2.32 dladdr F
 GLIBC_2.32 dlclose F
 GLIBC_2.32 dlerror F
+GLIBC_2.32 dlsym F
 GLIBC_2.32 dngettext F
 GLIBC_2.32 dprintf F
 GLIBC_2.32 drand48 F
@@ -2107,6 +2108,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 1c818309f2..74e8c10002 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.32 dladdr1 F
 GLIBC_2.32 dlinfo F
 GLIBC_2.32 dlmopen F
 GLIBC_2.32 dlopen F
-GLIBC_2.32 dlsym F
 GLIBC_2.32 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index db80c07019..b49c187be7 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -210,6 +210,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1023,6 +1024,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 3600075a47..7f49a4977f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -207,6 +207,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1020,6 +1021,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index d7beb5db45..f060c2b0d5 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -702,6 +702,7 @@ GLIBC_2.29 dl_iterate_phdr F
 GLIBC_2.29 dladdr F
 GLIBC_2.29 dlclose F
 GLIBC_2.29 dlerror F
+GLIBC_2.29 dlsym F
 GLIBC_2.29 dngettext F
 GLIBC_2.29 dprintf F
 GLIBC_2.29 drand48 F
@@ -2291,6 +2292,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 2c8047a614..78edf27275 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.29 dladdr1 F
 GLIBC_2.29 dlinfo F
 GLIBC_2.29 dlmopen F
 GLIBC_2.29 dlopen F
-GLIBC_2.29 dlsym F
 GLIBC_2.29 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 59b0e421a7..bd4bbe548d 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1,6 +1,7 @@
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2244,6 +2245,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index e33dd7d91e..c781b36839 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2428,6 +2429,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 772b686c1d..f0af999f5d 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1,6 +1,7 @@
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2280,6 +2281,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 6ee063131e..8b58481a8c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -211,6 +211,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1012,6 +1013,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 9fb78fd4fd..d4f2220a6a 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -399,6 +399,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2371,6 +2372,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6ba6e439c5..d443e72888 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
+GLIBC_2.18 dlsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
 GLIBC_2.18 drand48 F
@@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 721e823b1b..9f0b07e50d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlopen F
-GLIBC_2.18 dlsym F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index b3d12892e6..5d899de9e1 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
+GLIBC_2.18 dlsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
 GLIBC_2.18 drand48 F
@@ -2339,6 +2340,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 721e823b1b..9f0b07e50d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlopen F
-GLIBC_2.18 dlsym F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 43fe36e7d1..80f71d2c9d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym 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_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 d8aab2a6de..e79fbf179b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 699ad445f7..041df76409 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2334,6 +2335,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 d8aab2a6de..e79fbf179b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 3da887b94b..9d741ee23b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 8c34936cc0..eb2b387ce6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -395,6 +395,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym 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_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 e1bc50caf5..91e8dac129 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -766,6 +766,7 @@ GLIBC_2.21 dl_iterate_phdr F
 GLIBC_2.21 dladdr F
 GLIBC_2.21 dlclose F
 GLIBC_2.21 dlerror F
+GLIBC_2.21 dlsym F
 GLIBC_2.21 dngettext F
 GLIBC_2.21 dprintf F
 GLIBC_2.21 drand48 F
@@ -2381,6 +2382,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 835ee02768..354d0b0f1f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.21 dladdr1 F
 GLIBC_2.21 dlinfo F
 GLIBC_2.21 dlmopen F
 GLIBC_2.21 dlopen F
-GLIBC_2.21 dlsym F
 GLIBC_2.21 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 8c3c1bb5c5..3531cf9744 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -408,6 +408,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2398,6 +2399,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 018f9c0253..b2610134a9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -408,6 +408,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2431,6 +2432,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 330f5fdc1a..cb9457053d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -761,6 +761,7 @@ GLIBC_2.3 dl_iterate_phdr F
 GLIBC_2.3 dladdr F
 GLIBC_2.3 dlclose F
 GLIBC_2.3 dlerror F
+GLIBC_2.3 dlsym F
 GLIBC_2.3 dngettext F
 GLIBC_2.3 dprintf F
 GLIBC_2.3 drand48 F
@@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 4446495717..5344e7141c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.3 dlopen F
-GLIBC_2.3 dlsym F
 GLIBC_2.3 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index b770ac88b3..43e579db72 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -809,6 +809,7 @@ GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
+GLIBC_2.17 dlsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
 GLIBC_2.17 drand48 F
@@ -2544,6 +2545,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 731d6a1377..d3822d83fc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlopen F
-GLIBC_2.17 dlsym F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index ea14f58edb..fe9784bfe7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -659,6 +659,7 @@ GLIBC_2.33 dl_iterate_phdr F
 GLIBC_2.33 dladdr F
 GLIBC_2.33 dlclose F
 GLIBC_2.33 dlerror F
+GLIBC_2.33 dlsym F
 GLIBC_2.33 dngettext F
 GLIBC_2.33 dprintf F
 GLIBC_2.33 drand48 F
@@ -2109,6 +2110,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 b140aa0b09..12113b56ff 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.33 dladdr1 F
 GLIBC_2.33 dlinfo F
 GLIBC_2.33 dlmopen F
 GLIBC_2.33 dlopen F
-GLIBC_2.33 dlsym F
 GLIBC_2.33 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 5c2a87a3b0..241850b78d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -700,6 +700,7 @@ GLIBC_2.27 dl_iterate_phdr F
 GLIBC_2.27 dladdr F
 GLIBC_2.27 dlclose F
 GLIBC_2.27 dlerror F
+GLIBC_2.27 dlsym F
 GLIBC_2.27 dngettext F
 GLIBC_2.27 dprintf F
 GLIBC_2.27 drand48 F
@@ -2309,6 +2310,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 3536869c77..e42f9d97a8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.27 dladdr1 F
 GLIBC_2.27 dlinfo F
 GLIBC_2.27 dlmopen F
 GLIBC_2.27 dlopen F
-GLIBC_2.27 dlsym F
 GLIBC_2.27 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 937a3ba942..72baa14350 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2396,6 +2397,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index cce8034393..2e58f6151b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -698,6 +698,7 @@ GLIBC_2.2 div F
 GLIBC_2.2 dladdr F
 GLIBC_2.2 dlclose F
 GLIBC_2.2 dlerror F
+GLIBC_2.2 dlsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 dprintf F
 GLIBC_2.2 drand48 F
@@ -2282,6 +2283,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 c995dec160..97dcae5bf1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2 dlopen F
-GLIBC_2.2 dlsym F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 28154a96dd..ab113c966d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2251,6 +2252,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index d9a16e9ccf..e733d13430 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2248,6 +2249,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 98e6db33fe..0534abb5b4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -400,6 +400,7 @@ GLIBC_2.0 div F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.0 dprintf F
 GLIBC_2.0 drand48 F
 GLIBC_2.0 drand48_r F
@@ -2389,6 +2390,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 479a1b38a6..89e1646f02 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
 GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
+GLIBC_2.0 dlsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2301,6 +2302,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
-GLIBC_2.0 dlsym F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 3c6750b3a4..842a613fdb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -688,6 +688,7 @@ GLIBC_2.2.5 dl_iterate_phdr F
 GLIBC_2.2.5 dladdr F
 GLIBC_2.2.5 dlclose F
 GLIBC_2.2.5 dlerror F
+GLIBC_2.2.5 dlsym F
 GLIBC_2.2.5 dngettext F
 GLIBC_2.2.5 dprintf F
 GLIBC_2.2.5 drand48 F
@@ -2260,6 +2261,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 28f001d6ec..a43447856f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.5 dlopen F
-GLIBC_2.2.5 dlsym F
 GLIBC_2.2.5 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 0bfba9edbc..5e8c5a64f2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -725,6 +725,7 @@ GLIBC_2.16 dl_iterate_phdr F
 GLIBC_2.16 dladdr F
 GLIBC_2.16 dlclose F
 GLIBC_2.16 dlerror F
+GLIBC_2.16 dlsym F
 GLIBC_2.16 dngettext F
 GLIBC_2.16 dprintf F
 GLIBC_2.16 drand48 F
@@ -2363,6 +2364,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlsym 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 f61c4a59d3..7586a5f0b7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -2,5 +2,4 @@ GLIBC_2.16 dladdr1 F
 GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlmopen F
 GLIBC_2.16 dlopen F
-GLIBC_2.16 dlsym F
 GLIBC_2.16 dlvsym F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (7 preceding siblings ...)
  2021-05-31 14:11 ` [PATCH 08/16] dlfcn: Move dlsym " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 14:19   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 10/16] dlfcn: Move dladdr1 " Florian Weimer
                   ` (6 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 +-
 dlfcn/Versions                                |  6 +-
 dlfcn/dlfcn.c                                 | 19 ++++-
 dlfcn/dlmopen.c                               | 73 ++++++++++---------
 dlfcn/sdlmopen.c                              |  1 -
 include/dlfcn.h                               | 12 +--
 sysdeps/mach/hurd/i386/libc.abilist           |  2 +
 sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
 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   |  2 +-
 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    |  2 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/i386/libdl.abilist    |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  2 +-
 .../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 |  2 +-
 .../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 |  2 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../unix/sysv/linux/mips/mips64/libdl.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 +
 sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/libdl.abilist     |  2 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
 .../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     |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  2 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  2 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/libdl.abilist    |  2 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc64/libdl.abilist    |  2 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  1 -
 69 files changed, 154 insertions(+), 73 deletions(-)
 delete mode 100644 dlfcn/sdlmopen.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index b0f2e8a986..f7ffd242dc 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -22,13 +22,14 @@ include ../Makeconfig
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
 libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
-		   dlmopen dlfcn
+		   dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
 routines += \
   dladdr \
   dlclose \
   dlerror \
+  dlmopen \
   dlsym \
   libc_dlerror_result \
 
diff --git a/dlfcn/Versions b/dlfcn/Versions
index 7d6b51a4e3..584035e203 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -5,10 +5,14 @@ libc {
     dlerror;
     dlsym;
   }
+  GLIBC_2.3.4 {
+    dlmopen;
+  }
   GLIBC_2.34 {
     dladdr;
     dlclose;
     dlerror;
+    dlmopen;
     dlsym;
   }
   GLIBC_PRIVATE {
@@ -28,6 +32,6 @@ libdl {
     dladdr1; dlinfo;
   }
   GLIBC_2.3.4 {
-    dlmopen;
+    __libdl_version_placeholder;
   }
 }
diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
index 8f85308b5f..90cdee0903 100644
--- a/dlfcn/dlfcn.c
+++ b/dlfcn/dlfcn.c
@@ -17,7 +17,7 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <dlfcn.h>
-
+#include <shlib-compat.h>
 
 int __dlfcn_argc attribute_hidden;
 char **__dlfcn_argv attribute_hidden;
@@ -36,3 +36,20 @@ static void (*const init_array []) (int argc, char *argv[])
 {
   init
 };
+
+/* The remainder of this file is used to keep specific symbol versions
+   occupied, so that ld does not generate weak symbol version
+   definitions.  */
+
+void
+attribute_compat_text_section
+__attribute_used__
+__libdl_version_placeholder_1 (void)
+{
+}
+
+#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
+  && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
+compat_symbol (libdl, __libdl_version_placeholder_1,
+               __libdl_version_placeholder, GLIBC_2_3_4);
+#endif
diff --git a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
index 6c6e98cd0e..ae42814bbf 100644
--- a/dlfcn/dlmopen.c
+++ b/dlfcn/dlmopen.c
@@ -22,17 +22,7 @@
 #include <stddef.h>
 #include <unistd.h>
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-void *
-dlmopen (Lmid_t nsid, const char *file, int mode)
-{
-  return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
-}
-static_link_warning (dlmopen)
-
-#else
+#include <shlib-compat.h>
 
 struct dlmopen_args
 {
@@ -70,38 +60,55 @@ dlmopen_doit (void *a)
 
   args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
 			     args->caller,
-			     args->nsid, __dlfcn_argc, __dlfcn_argv,
-			     __environ);
+			     args->nsid, __libc_argc, __libc_argv, __environ);
 }
 
-
-void *
-__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
+static void *
+dlmopen_implementation (Lmid_t nsid, const char *file, int mode,
+			void *dl_caller)
 {
-# ifdef SHARED
-  if (!rtld_active ())
-    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
-# endif
-
   struct dlmopen_args args;
   args.nsid = nsid;
   args.file = file;
   args.mode = mode;
-  args.caller = DL_CALLER;
+  args.caller = dl_caller;
 
-# ifdef SHARED
   return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new;
-# else
-  if (_dlerror_run (dlmopen_doit, &args))
-    return NULL;
+}
 
-  __libc_register_dl_open_hook ((struct link_map *) args.new);
-  __libc_register_dlfcn_hook ((struct link_map *) args.new);
+#ifdef SHARED
+void *
+___dlmopen (Lmid_t nsid, const char *file, int mode)
+{
+  if (!rtld_active ())
+    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
+  else
+    return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
+}
+versioned_symbol (libc, ___dlmopen, dlmopen, GLIBC_2_34);
 
-  return args.new;
+# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (libdl, ___dlmopen, dlmopen, GLIBC_2_3_4);
 # endif
+#else /* !SHARED */
+/* Also used with _dlfcn_hook.  */
+void *
+__dlmopen (Lmid_t nsid, const char *file, int mode, void *dl_caller)
+{
+  return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
 }
-# ifdef SHARED
-strong_alias (__dlmopen, dlmopen)
-# endif
-#endif
+
+void *
+___dlmopen (Lmid_t nsid, const char *file, int mode)
+{
+  struct link_map *l = __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
+  if (l != NULL)
+    {
+      __libc_register_dl_open_hook (l);
+      __libc_register_dlfcn_hook (l);
+    }
+  return l;
+}
+weak_alias (___dlmopen, dlmopen)
+static_link_warning (dlmopen)
+#endif /* !SHARED */
diff --git a/dlfcn/sdlmopen.c b/dlfcn/sdlmopen.c
deleted file mode 100644
index 9630c89a7f..0000000000
--- a/dlfcn/sdlmopen.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlmopen.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 2b174f8670..27309ab1dd 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -15,15 +15,15 @@
 
 #define __LM_ID_CALLER	-2
 
+/* These variables are defined and initialized in the startup code.  */
+extern int __libc_argc attribute_hidden;
+extern char **__libc_argv attribute_hidden;
+
 #ifdef SHARED
 /* Locally stored program arguments.  */
 extern int __dlfcn_argc attribute_hidden;
 extern char **__dlfcn_argv attribute_hidden;
 #else
-/* These variables are defined and initialized in the startup code.  */
-extern int __libc_argc attribute_hidden;
-extern char **__libc_argv attribute_hidden;
-
 # define __dlfcn_argc __libc_argc
 # define __dlfcn_argv __libc_argv
 #endif
@@ -133,8 +133,8 @@ libc_hidden_proto (_dlfcn_hook)
 
 extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
      attribute_hidden;
-extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
-     attribute_hidden;
+extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
+			void *dl_caller);
 extern int __dlclose (void *handle);
 extern void *__dlsym (void *handle, const char *name, void *dl_caller);
 extern void *__dlvsym (void *handle, const char *name, const char *version
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 02ba6c3593..9827bea1e9 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2177,6 +2177,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 regexec F
@@ -2214,6 +2215,7 @@ GLIBC_2.34 _hurd_libc_proc_init F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 timespec_getres F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index e4fe2ccab6..d2c315509d 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -2,4 +2,4 @@ GLIBC_2.2.6 dlopen F
 GLIBC_2.2.6 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 9da6e869fa..9b0f917944 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -721,6 +721,7 @@ GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
+GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
@@ -2349,6 +2350,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index d3822d83fc..391b72c100 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
-GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 1c9805a7f4..5b24169acf 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2363,6 +2363,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2441,6 +2442,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 1a83cb2288..5e28b203cd 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -666,6 +666,7 @@ GLIBC_2.32 dl_iterate_phdr F
 GLIBC_2.32 dladdr F
 GLIBC_2.32 dlclose F
 GLIBC_2.32 dlerror F
+GLIBC_2.32 dlmopen F
 GLIBC_2.32 dlsym F
 GLIBC_2.32 dngettext F
 GLIBC_2.32 dprintf F
@@ -2108,6 +2109,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index 74e8c10002..b23f34195f 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.32 dladdr1 F
 GLIBC_2.32 dlinfo F
-GLIBC_2.32 dlmopen F
 GLIBC_2.32 dlopen F
 GLIBC_2.32 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index b49c187be7..ea14c3cd99 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -210,6 +210,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1024,6 +1025,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index 816b953a69..22691633fb 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
-GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 7f49a4977f..5ff5eb7d04 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -207,6 +207,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1021,6 +1022,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index 816b953a69..22691633fb 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
-GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index f060c2b0d5..8f36e5c844 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -702,6 +702,7 @@ GLIBC_2.29 dl_iterate_phdr F
 GLIBC_2.29 dladdr F
 GLIBC_2.29 dlclose F
 GLIBC_2.29 dlerror F
+GLIBC_2.29 dlmopen F
 GLIBC_2.29 dlsym F
 GLIBC_2.29 dngettext F
 GLIBC_2.29 dprintf F
@@ -2292,6 +2293,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 78edf27275..51061cb361 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.29 dladdr1 F
 GLIBC_2.29 dlinfo F
-GLIBC_2.29 dlmopen F
 GLIBC_2.29 dlopen F
 GLIBC_2.29 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index bd4bbe548d..0302aeae56 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2179,6 +2179,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c781b36839..233096afbd 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2360,6 +2360,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2429,6 +2430,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index f0af999f5d..704fe57ca2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2214,6 +2214,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2281,6 +2282,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 8b58481a8c..dc32b7561b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -211,6 +211,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
@@ -1013,6 +1014,7 @@ GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
+GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dngettext F
 GLIBC_2.4 dprintf F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index 816b953a69..22691633fb 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
-GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index d4f2220a6a..0ad41be521 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2303,6 +2303,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2372,6 +2373,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index d443e72888..ea61742cf2 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
+GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
@@ -2343,6 +2344,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index 9f0b07e50d..409e59cf21 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
-GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 5d899de9e1..3b09b44dd8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
+GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
@@ -2340,6 +2341,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index 9f0b07e50d..409e59cf21 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
-GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 80f71d2c9d..adde44be66 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2271,6 +2271,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2337,6 +2338,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index e79fbf179b..04aca378ef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 041df76409..a4c9a17e9e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2269,6 +2269,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2335,6 +2336,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index e79fbf179b..04aca378ef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 9d741ee23b..214e0db752 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2277,6 +2277,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2343,6 +2344,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index eb2b387ce6..b09d4058a2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2271,6 +2271,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2337,6 +2338,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 91e8dac129..748f12c254 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -766,6 +766,7 @@ GLIBC_2.21 dl_iterate_phdr F
 GLIBC_2.21 dladdr F
 GLIBC_2.21 dlclose F
 GLIBC_2.21 dlerror F
+GLIBC_2.21 dlmopen F
 GLIBC_2.21 dlsym F
 GLIBC_2.21 dngettext F
 GLIBC_2.21 dprintf F
@@ -2382,6 +2383,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index 354d0b0f1f..90aaa0b49b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.21 dladdr1 F
 GLIBC_2.21 dlinfo F
-GLIBC_2.21 dlmopen F
 GLIBC_2.21 dlopen F
 GLIBC_2.21 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 3531cf9744..4134f7ed41 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2314,6 +2314,7 @@ GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 _longjmp F
 GLIBC_2.3.4 _setjmp F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getcontext F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
@@ -2399,6 +2400,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index b2610134a9..43baf50dca 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2347,6 +2347,7 @@ GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 _longjmp F
 GLIBC_2.3.4 _setjmp F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getcontext F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
@@ -2432,6 +2433,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index cb9457053d..b3d27c2678 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2162,6 +2162,7 @@ GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 _longjmp F
 GLIBC_2.3.4 _setjmp F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getcontext F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
@@ -2246,6 +2247,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index 5344e7141c..8e709e5bc4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -2,4 +2,4 @@ GLIBC_2.3 dlopen F
 GLIBC_2.3 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 43e579db72..60a6327f37 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -809,6 +809,7 @@ GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
+GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
@@ -2545,6 +2546,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index d3822d83fc..391b72c100 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
-GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index fe9784bfe7..dccdf14b63 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -659,6 +659,7 @@ GLIBC_2.33 dl_iterate_phdr F
 GLIBC_2.33 dladdr F
 GLIBC_2.33 dlclose F
 GLIBC_2.33 dlerror F
+GLIBC_2.33 dlmopen F
 GLIBC_2.33 dlsym F
 GLIBC_2.33 dngettext F
 GLIBC_2.33 dprintf F
@@ -2110,6 +2111,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 12113b56ff..2710b64293 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.33 dladdr1 F
 GLIBC_2.33 dlinfo F
-GLIBC_2.33 dlmopen F
 GLIBC_2.33 dlopen F
 GLIBC_2.33 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 241850b78d..2acb8db062 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -700,6 +700,7 @@ GLIBC_2.27 dl_iterate_phdr F
 GLIBC_2.27 dladdr F
 GLIBC_2.27 dlclose F
 GLIBC_2.27 dlerror F
+GLIBC_2.27 dlmopen F
 GLIBC_2.27 dlsym F
 GLIBC_2.27 dngettext F
 GLIBC_2.27 dprintf F
@@ -2310,6 +2311,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index e42f9d97a8..c0d8307937 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.27 dladdr1 F
 GLIBC_2.27 dlinfo F
-GLIBC_2.27 dlmopen F
 GLIBC_2.27 dlopen F
 GLIBC_2.27 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 72baa14350..b2666bd723 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2316,6 +2316,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2397,6 +2398,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 2e58f6151b..6ea55ebcdf 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2205,6 +2205,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2283,6 +2284,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index 97dcae5bf1..45decb94f9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -2,4 +2,4 @@ GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index ab113c966d..7d3680520a 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2183,6 +2183,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2252,6 +2253,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index e733d13430..51a77c9553 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2183,6 +2183,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2249,6 +2250,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 0534abb5b4..45053a171a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2312,6 +2312,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2390,6 +2391,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 89e1646f02..30e7e6baa0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2236,6 +2236,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2302,6 +2303,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index 9019e8db65..795a5abd45 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 842a613fdb..abaf3ee9de 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2193,6 +2193,7 @@ GLIBC_2.3.4 __vprintf_chk F
 GLIBC_2.3.4 __vsnprintf_chk F
 GLIBC_2.3.4 __vsprintf_chk F
 GLIBC_2.3.4 __xpg_strerror_r F
+GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
@@ -2261,6 +2262,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index a43447856f..91f878e859 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -2,4 +2,4 @@ GLIBC_2.2.5 dlopen F
 GLIBC_2.2.5 dlvsym F
 GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 dlmopen F
+GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 5e8c5a64f2..b30feb4888 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -725,6 +725,7 @@ GLIBC_2.16 dl_iterate_phdr F
 GLIBC_2.16 dladdr F
 GLIBC_2.16 dlclose F
 GLIBC_2.16 dlerror F
+GLIBC_2.16 dlmopen F
 GLIBC_2.16 dlsym F
 GLIBC_2.16 dngettext F
 GLIBC_2.16 dprintf F
@@ -2364,6 +2365,7 @@ GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index 7586a5f0b7..b37e9ff78c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.16 dladdr1 F
 GLIBC_2.16 dlinfo F
-GLIBC_2.16 dlmopen F
 GLIBC_2.16 dlopen F
 GLIBC_2.16 dlvsym F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 10/16] dlfcn: Move dladdr1 into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (8 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 09/16] dlfcn: Move dlmopen " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 14:29   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 11/16] dlfcn: Move dlinfo " Florian Weimer
                   ` (5 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 ++-
 dlfcn/Versions                                |  6 ++++-
 dlfcn/dladdr1.c                               | 22 ++++++-------------
 dlfcn/sdladdr1.c                              |  1 -
 include/dlfcn.h                               |  3 +--
 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, 81 insertions(+), 50 deletions(-)
 delete mode 100644 dlfcn/sdladdr1.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index f7ffd242dc..1dfa247538 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,12 +21,13 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
+libdl-routines	:= dlopen dlvsym dlinfo \
 		   dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
 routines += \
   dladdr \
+  dladdr1 \
   dlclose \
   dlerror \
   dlmopen \
diff --git a/dlfcn/Versions b/dlfcn/Versions
index 584035e203..acd9402b34 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -5,10 +5,14 @@ libc {
     dlerror;
     dlsym;
   }
+  GLIBC_2.3.3 {
+    dladdr1;
+  }
   GLIBC_2.3.4 {
     dlmopen;
   }
   GLIBC_2.34 {
+    dladdr1;
     dladdr;
     dlclose;
     dlerror;
@@ -29,7 +33,7 @@ libdl {
     dlopen; dlvsym;
   }
   GLIBC_2.3.3 {
-    dladdr1; dlinfo;
+    dlinfo;
   }
   GLIBC_2.3.4 {
     __libdl_version_placeholder;
diff --git a/dlfcn/dladdr1.c b/dlfcn/dladdr1.c
index 98cd60d78e..203d6398e4 100644
--- a/dlfcn/dladdr1.c
+++ b/dlfcn/dladdr1.c
@@ -18,24 +18,15 @@
 
 #include <dlfcn.h>
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-int
-dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
-{
-  return __dladdr1 (address, info, extra, flags);
-}
-
-#else
+#include <shlib-compat.h>
 
 int
 __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
 {
-# ifdef SHARED
+#ifdef SHARED
   if (!rtld_active ())
     return _dlfcn_hook->dladdr1 (address, info, extra, flags);
-# endif
+#endif
 
   switch (flags)
     {
@@ -48,7 +39,8 @@ __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
       return _dl_addr (address, info, (struct link_map **) extra, NULL);
     }
 }
-# ifdef SHARED
-strong_alias (__dladdr1, dladdr1)
-# endif
+versioned_symbol (libc, __dladdr1, dladdr1, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT  (libdl, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (libdl, __dladdr1, dladdr1, GLIBC_2_3_3);
 #endif
diff --git a/dlfcn/sdladdr1.c b/dlfcn/sdladdr1.c
deleted file mode 100644
index a655979bcf..0000000000
--- a/dlfcn/sdladdr1.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dladdr1.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 27309ab1dd..dc5193acbb 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -142,8 +142,7 @@ extern void *__dlvsym (void *handle, const char *name, const char *version
      attribute_hidden;
 extern int __dladdr (const void *address, Dl_info *info);
 extern int __dladdr1 (const void *address, Dl_info *info,
-		      void **extra_info, int flags)
-     attribute_hidden;
+		      void **extra_info, int flags);
 extern int __dlinfo (void *handle, int request, void *arg) attribute_hidden;
 
 #ifndef SHARED
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 9827bea1e9..172e269fe9 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2144,6 +2144,7 @@ GLIBC_2.3.2 lchmod F
 GLIBC_2.3.2 setresgid F
 GLIBC_2.3.2 setresuid F
 GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 inet6_option_alloc F
 GLIBC_2.3.3 inet6_option_append F
 GLIBC_2.3.3 inet6_option_find F
@@ -2213,6 +2214,7 @@ GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 _hurd_libc_proc_init F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index d2c315509d..9e890a9815 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.6 dlopen F
 GLIBC_2.2.6 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 9b0f917944..f09046237f 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -719,6 +719,7 @@ GLIBC_2.17 dirname F
 GLIBC_2.17 div F
 GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
+GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dlmopen F
@@ -2348,6 +2349,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index 391b72c100..05eeace024 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 5b24169acf..1523233c99 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2297,6 +2297,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2440,6 +2441,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index 795a5abd45..5f81d13a21 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 5e28b203cd..cd6a555f6b 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -664,6 +664,7 @@ GLIBC_2.32 dirname F
 GLIBC_2.32 div F
 GLIBC_2.32 dl_iterate_phdr F
 GLIBC_2.32 dladdr F
+GLIBC_2.32 dladdr1 F
 GLIBC_2.32 dlclose F
 GLIBC_2.32 dlerror F
 GLIBC_2.32 dlmopen F
@@ -2107,6 +2108,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index b23f34195f..d3afdc0308 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.32 dladdr1 F
 GLIBC_2.32 dlinfo F
 GLIBC_2.32 dlopen F
 GLIBC_2.32 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index ea14c3cd99..07e8854909 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -208,6 +208,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
@@ -1023,6 +1024,7 @@ GLIBC_2.4 dirname F
 GLIBC_2.4 div F
 GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
+GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index 22691633fb..c24e10d9c5 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 5ff5eb7d04..2f0fef9d7d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -205,6 +205,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
@@ -1020,6 +1021,7 @@ GLIBC_2.4 dirname F
 GLIBC_2.4 div F
 GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
+GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index 22691633fb..c24e10d9c5 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 8f36e5c844..97ba0642d5 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -700,6 +700,7 @@ GLIBC_2.29 dirname F
 GLIBC_2.29 div F
 GLIBC_2.29 dl_iterate_phdr F
 GLIBC_2.29 dladdr F
+GLIBC_2.29 dladdr1 F
 GLIBC_2.29 dlclose F
 GLIBC_2.29 dlerror F
 GLIBC_2.29 dlmopen F
@@ -2291,6 +2292,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 51061cb361..5cb45f50d3 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.29 dladdr1 F
 GLIBC_2.29 dlinfo F
 GLIBC_2.29 dlopen F
 GLIBC_2.29 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 0302aeae56..257072a63a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2131,6 +2131,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2244,6 +2245,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index 795a5abd45..5f81d13a21 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 233096afbd..8b0a2381bb 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2312,6 +2312,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2428,6 +2429,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index 795a5abd45..5f81d13a21 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 704fe57ca2..a2fd7b6f0e 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2164,6 +2164,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2280,6 +2281,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index 795a5abd45..5f81d13a21 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index dc32b7561b..ec0f948a22 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -209,6 +209,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
@@ -1012,6 +1013,7 @@ GLIBC_2.4 dirname F
 GLIBC_2.4 div F
 GLIBC_2.4 dl_iterate_phdr F
 GLIBC_2.4 dladdr F
+GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlclose F
 GLIBC_2.4 dlerror F
 GLIBC_2.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index 22691633fb..c24e10d9c5 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 dladdr1 F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 0ad41be521..2d69d956a1 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2255,6 +2255,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2371,6 +2372,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index ea61742cf2..7e6a7b1645 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -721,6 +721,7 @@ GLIBC_2.18 dirname F
 GLIBC_2.18 div F
 GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
+GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dlmopen F
@@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index 409e59cf21..c042c043d6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 3b09b44dd8..01bc9594bb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -721,6 +721,7 @@ GLIBC_2.18 dirname F
 GLIBC_2.18 div F
 GLIBC_2.18 dl_iterate_phdr F
 GLIBC_2.18 dladdr F
+GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlclose F
 GLIBC_2.18 dlerror F
 GLIBC_2.18 dlmopen F
@@ -2339,6 +2340,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index 409e59cf21..c042c043d6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 dladdr1 F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index adde44be66..b13544403e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2221,6 +2221,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index 04aca378ef..cb7bf28178 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 dlopen F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index a4c9a17e9e..e76cbe2a87 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2219,6 +2219,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2334,6 +2335,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index 04aca378ef..cb7bf28178 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 dlopen F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 214e0db752..5ac0d47413 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2227,6 +2227,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index b09d4058a2..07d121d225 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2220,6 +2220,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x400
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 748f12c254..a27cb9cf18 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -764,6 +764,7 @@ GLIBC_2.21 dirname F
 GLIBC_2.21 div F
 GLIBC_2.21 dl_iterate_phdr F
 GLIBC_2.21 dladdr F
+GLIBC_2.21 dladdr1 F
 GLIBC_2.21 dlclose F
 GLIBC_2.21 dlerror F
 GLIBC_2.21 dlmopen F
@@ -2381,6 +2382,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index 90aaa0b49b..9acd54fa38 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.21 dladdr1 F
 GLIBC_2.21 dlinfo F
 GLIBC_2.21 dlopen F
 GLIBC_2.21 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4134f7ed41..1a1cbb94ce 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2259,6 +2259,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2398,6 +2399,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 43baf50dca..9b9dc9ef3a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2292,6 +2292,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2431,6 +2432,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index b3d27c2678..aad3704047 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2111,6 +2111,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index 8e709e5bc4..c27f19ac95 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.3 dlopen F
 GLIBC_2.3 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 60a6327f37..64a45a1c48 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -807,6 +807,7 @@ GLIBC_2.17 dirname F
 GLIBC_2.17 div F
 GLIBC_2.17 dl_iterate_phdr F
 GLIBC_2.17 dladdr F
+GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlclose F
 GLIBC_2.17 dlerror F
 GLIBC_2.17 dlmopen F
@@ -2544,6 +2545,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index 391b72c100..05eeace024 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 dladdr1 F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index dccdf14b63..94c3bcf6e2 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -657,6 +657,7 @@ GLIBC_2.33 dirname F
 GLIBC_2.33 div F
 GLIBC_2.33 dl_iterate_phdr F
 GLIBC_2.33 dladdr F
+GLIBC_2.33 dladdr1 F
 GLIBC_2.33 dlclose F
 GLIBC_2.33 dlerror F
 GLIBC_2.33 dlmopen F
@@ -2109,6 +2110,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 2710b64293..2b91d9886c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.33 dladdr1 F
 GLIBC_2.33 dlinfo F
 GLIBC_2.33 dlopen F
 GLIBC_2.33 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 2acb8db062..d2cde862c3 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -698,6 +698,7 @@ GLIBC_2.27 dirname F
 GLIBC_2.27 div F
 GLIBC_2.27 dl_iterate_phdr F
 GLIBC_2.27 dladdr F
+GLIBC_2.27 dladdr1 F
 GLIBC_2.27 dlclose F
 GLIBC_2.27 dlerror F
 GLIBC_2.27 dlmopen F
@@ -2309,6 +2310,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index c0d8307937..8e30134591 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.27 dladdr1 F
 GLIBC_2.27 dlinfo F
 GLIBC_2.27 dlopen F
 GLIBC_2.27 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index b2666bd723..30a533b622 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2268,6 +2268,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2396,6 +2397,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 6ea55ebcdf..77b21973db 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2157,6 +2157,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2282,6 +2283,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index 45decb94f9..f882403fe2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 7d3680520a..2700b6bf98 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2135,6 +2135,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2251,6 +2252,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 51a77c9553..de6251d508 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2135,6 +2135,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2248,6 +2249,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 45053a171a..7ada64410a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2262,6 +2262,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2389,6 +2390,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 30e7e6baa0..75fb6e4bbe 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2186,6 +2186,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2301,6 +2302,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index 795a5abd45..5f81d13a21 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 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index abaf3ee9de..d94135174a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2145,6 +2145,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
+GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2260,6 +2261,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index 91f878e859..6b11f673cc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.2.5 dlopen F
 GLIBC_2.2.5 dlvsym F
-GLIBC_2.3.3 dladdr1 F
 GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index b30feb4888..989f276480 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -723,6 +723,7 @@ GLIBC_2.16 dirname F
 GLIBC_2.16 div F
 GLIBC_2.16 dl_iterate_phdr F
 GLIBC_2.16 dladdr F
+GLIBC_2.16 dladdr1 F
 GLIBC_2.16 dlclose F
 GLIBC_2.16 dlerror F
 GLIBC_2.16 dlmopen F
@@ -2363,6 +2364,7 @@ GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 dladdr F
+GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index b37e9ff78c..fe8858d4ec 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.16 dladdr1 F
 GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlopen F
 GLIBC_2.16 dlvsym F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 11/16] dlfcn: Move dlinfo into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (9 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 10/16] dlfcn: Move dladdr1 " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 14:31   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 12/16] dlfcn: Move dlvsym " Florian Weimer
                   ` (4 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 +-
 dlfcn/Versions                                |  4 +-
 dlfcn/dlfcn.c                                 |  6 +++
 dlfcn/dlinfo.c                                | 45 ++++++++++---------
 dlfcn/sdlinfo.c                               |  1 -
 include/dlfcn.h                               |  2 +-
 sysdeps/mach/hurd/i386/libc.abilist           |  2 +
 sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
 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   |  2 +-
 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    |  2 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/i386/libdl.abilist    |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  2 +-
 .../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 |  2 +-
 .../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 |  2 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../unix/sysv/linux/mips/mips64/libdl.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 +
 sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/libdl.abilist     |  2 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
 .../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     |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  2 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  2 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/libdl.abilist    |  2 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc64/libdl.abilist    |  2 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  1 -
 69 files changed, 120 insertions(+), 54 deletions(-)
 delete mode 100644 dlfcn/sdlinfo.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 1dfa247538..c65cdc2e2b 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,7 +21,7 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlvsym dlinfo \
+libdl-routines	:= dlopen dlvsym \
 		   dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
@@ -30,6 +30,7 @@ routines += \
   dladdr1 \
   dlclose \
   dlerror \
+  dlinfo \
   dlmopen \
   dlsym \
   libc_dlerror_result \
diff --git a/dlfcn/Versions b/dlfcn/Versions
index acd9402b34..ca9a3e5591 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -7,6 +7,7 @@ libc {
   }
   GLIBC_2.3.3 {
     dladdr1;
+    dlinfo;
   }
   GLIBC_2.3.4 {
     dlmopen;
@@ -16,6 +17,7 @@ libc {
     dladdr;
     dlclose;
     dlerror;
+    dlinfo;
     dlmopen;
     dlsym;
   }
@@ -33,7 +35,7 @@ libdl {
     dlopen; dlvsym;
   }
   GLIBC_2.3.3 {
-    dlinfo;
+    __libdl_version_placeholder;
   }
   GLIBC_2.3.4 {
     __libdl_version_placeholder;
diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
index 90cdee0903..55ecfcabbe 100644
--- a/dlfcn/dlfcn.c
+++ b/dlfcn/dlfcn.c
@@ -48,6 +48,12 @@ __libdl_version_placeholder_1 (void)
 {
 }
 
+#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34) \
+  && ABI_libdl_GLIBC_2_3_3 != ABI_libdl_GLIBC_2_1
+compat_symbol (libdl, __libdl_version_placeholder_1,
+               __libdl_version_placeholder, GLIBC_2_3_3);
+#endif
+
 #if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
   && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
 compat_symbol (libdl, __libdl_version_placeholder_1,
diff --git a/dlfcn/dlinfo.c b/dlfcn/dlinfo.c
index 9fb2a1405c..15fcbc5dc1 100644
--- a/dlfcn/dlinfo.c
+++ b/dlfcn/dlinfo.c
@@ -20,18 +20,8 @@
 #include <link.h>
 #include <ldsodefs.h>
 #include <libintl.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-int
-dlinfo (void *handle, int request, void *arg)
-{
-  return __dlinfo (handle, request, arg);
-}
-
-#else
-
-# include <dl-tls.h>
+#include <dl-tls.h>
+#include <shlib-compat.h>
 
 struct dlinfo_args
 {
@@ -88,18 +78,33 @@ dlinfo_doit (void *argsblock)
     }
 }
 
+static int
+dlinfo_implementation (void *handle, int request, void *arg)
+{
+  struct dlinfo_args args = { handle, request, arg };
+  return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
+}
+
+#ifdef SHARED
 int
-__dlinfo (void *handle, int request, void *arg)
+___dlinfo (void *handle, int request, void *arg)
 {
-# ifdef SHARED
   if (!rtld_active ())
     return _dlfcn_hook->dlinfo (handle, request, arg);
-# endif
-
-  struct dlinfo_args args = { handle, request, arg };
-  return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
+  else
+    return dlinfo_implementation (handle, request, arg);
 }
-# ifdef SHARED
-strong_alias (__dlinfo, dlinfo)
+versioned_symbol (libc, ___dlinfo, dlinfo, GLIBC_2_34);
+
+# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (libc, ___dlinfo, dlinfo, GLIBC_2_3_3);
 # endif
+#else /* !SHARED */
+/* Also used with _dlfcn_hook.  */
+int
+__dlinfo (void *handle, int request, void *arg)
+{
+  return dlinfo_implementation (handle, request, arg);
+}
+weak_alias (__dlinfo, dlinfo)
 #endif
diff --git a/dlfcn/sdlinfo.c b/dlfcn/sdlinfo.c
deleted file mode 100644
index dcc257dd1f..0000000000
--- a/dlfcn/sdlinfo.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlinfo.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index dc5193acbb..e898c17792 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -143,7 +143,7 @@ extern void *__dlvsym (void *handle, const char *name, const char *version
 extern int __dladdr (const void *address, Dl_info *info);
 extern int __dladdr1 (const void *address, Dl_info *info,
 		      void **extra_info, int flags);
-extern int __dlinfo (void *handle, int request, void *arg) attribute_hidden;
+extern int __dlinfo (void *handle, int request, void *arg);
 
 #ifndef SHARED
 struct link_map;
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 172e269fe9..f4adfc6e5f 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2145,6 +2145,7 @@ GLIBC_2.3.2 setresgid F
 GLIBC_2.3.2 setresuid F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 inet6_option_alloc F
 GLIBC_2.3.3 inet6_option_append F
 GLIBC_2.3.3 inet6_option_find F
@@ -2217,6 +2218,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index 9e890a9815..3a60902d2a 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,4 +1,4 @@
 GLIBC_2.2.6 dlopen F
 GLIBC_2.2.6 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index f09046237f..a962e2966c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -722,6 +722,7 @@ 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 dlsym F
 GLIBC_2.17 dngettext F
@@ -2352,6 +2353,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index 05eeace024..840db53856 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 1523233c99..b4cab19c7e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2298,6 +2298,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2444,6 +2445,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index cd6a555f6b..4e5440b6ae 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -667,6 +667,7 @@ 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 dlsym F
 GLIBC_2.32 dngettext F
@@ -2111,6 +2112,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index d3afdc0308..dc71de1647 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.32 dlinfo F
 GLIBC_2.32 dlopen F
 GLIBC_2.32 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 07e8854909..45fc27223e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -211,6 +211,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
@@ -1027,6 +1028,7 @@ 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 dlsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index c24e10d9c5..763c28ead6 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 2f0fef9d7d..bfe4d7ede0 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -208,6 +208,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
@@ -1024,6 +1025,7 @@ 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 dlsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index c24e10d9c5..763c28ead6 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 97ba0642d5..f773509d7f 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -703,6 +703,7 @@ 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 dlsym F
 GLIBC_2.29 dngettext F
@@ -2295,6 +2296,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 5cb45f50d3..a143948a4c 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.29 dlinfo F
 GLIBC_2.29 dlopen F
 GLIBC_2.29 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 257072a63a..3050951d35 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2132,6 +2132,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2248,6 +2249,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 8b0a2381bb..0be412ab6b 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2313,6 +2313,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2432,6 +2433,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index a2fd7b6f0e..ad6bfa0d2a 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2165,6 +2165,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2284,6 +2285,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index ec0f948a22..bb62cc7a4f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -212,6 +212,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
@@ -1016,6 +1017,7 @@ 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 dlsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index c24e10d9c5..763c28ead6 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlopen F
 GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 2d69d956a1..c313cfbc58 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2256,6 +2256,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2375,6 +2376,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 7e6a7b1645..e841dcad21 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -724,6 +724,7 @@ 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 dlsym F
 GLIBC_2.18 dngettext F
@@ -2346,6 +2347,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index c042c043d6..327d8ad43b 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 01bc9594bb..3d3e3d7fdb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -724,6 +724,7 @@ 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 dlsym F
 GLIBC_2.18 dngettext F
@@ -2343,6 +2344,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index c042c043d6..327d8ad43b 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlopen F
 GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index b13544403e..9fe3e79ab1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2222,6 +2222,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2340,6 +2341,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index cb7bf28178..d10be39aa7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e76cbe2a87..db04a7d0a7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2220,6 +2220,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2338,6 +2339,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index cb7bf28178..d10be39aa7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5ac0d47413..50b4c0cc57 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2228,6 +2228,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2346,6 +2347,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 07d121d225..5d4e18b7f7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2221,6 +2221,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x400
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2340,6 +2341,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index a27cb9cf18..ef4d89fe97 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -767,6 +767,7 @@ 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 dlsym F
 GLIBC_2.21 dngettext F
@@ -2385,6 +2386,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index 9acd54fa38..3cecf1ebac 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.21 dlinfo F
 GLIBC_2.21 dlopen F
 GLIBC_2.21 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 1a1cbb94ce..32661d6341 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2260,6 +2260,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2402,6 +2403,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 9b9dc9ef3a..e12df18b1c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2293,6 +2293,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2435,6 +2436,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index aad3704047..3262e1b917 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2112,6 +2112,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2249,6 +2250,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index c27f19ac95..ffbe9e75a3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,4 +1,4 @@
 GLIBC_2.3 dlopen F
 GLIBC_2.3 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 64a45a1c48..d166c4872c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -810,6 +810,7 @@ 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 dlsym F
 GLIBC_2.17 dngettext F
@@ -2548,6 +2549,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index 05eeace024..840db53856 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlopen F
 GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 94c3bcf6e2..5ff4d22e1b 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -660,6 +660,7 @@ 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 dlsym F
 GLIBC_2.33 dngettext F
@@ -2113,6 +2114,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 2b91d9886c..13eefd7db9 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.33 dlinfo F
 GLIBC_2.33 dlopen F
 GLIBC_2.33 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index d2cde862c3..caa8247be3 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -701,6 +701,7 @@ 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 dlsym F
 GLIBC_2.27 dngettext F
@@ -2313,6 +2314,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index 8e30134591..c4b5356c4a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.27 dlinfo F
 GLIBC_2.27 dlopen F
 GLIBC_2.27 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 30a533b622..9d4562eeb7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2269,6 +2269,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2400,6 +2401,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 77b21973db..14f9ab9a0e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2158,6 +2158,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2286,6 +2287,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index f882403fe2..5df5e71ebf 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,4 +1,4 @@
 GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 2700b6bf98..9646c17111 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2136,6 +2136,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2255,6 +2256,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index de6251d508..84643a9d87 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2136,6 +2136,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2252,6 +2253,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 7ada64410a..dc3bbcde02 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2263,6 +2263,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2393,6 +2394,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 75fb6e4bbe..1170aa5c51 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2187,6 +2187,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2305,6 +2306,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index 5f81d13a21..4722aad8b2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,5 +1,5 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index d94135174a..6aa4eedff4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2146,6 +2146,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 dladdr1 F
+GLIBC_2.3.3 dlinfo F
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
 GLIBC_2.3.3 gnu_dev_minor F
@@ -2264,6 +2265,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index 6b11f673cc..00764915cf 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,4 +1,4 @@
 GLIBC_2.2.5 dlopen F
 GLIBC_2.2.5 dlvsym F
-GLIBC_2.3.3 dlinfo F
+GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 989f276480..dab4cbc677 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -726,6 +726,7 @@ 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 dlsym F
 GLIBC_2.16 dngettext F
@@ -2367,6 +2368,7 @@ GLIBC_2.34 dladdr F
 GLIBC_2.34 dladdr1 F
 GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
+GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index fe8858d4ec..645f87e571 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlopen F
 GLIBC_2.16 dlvsym F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 12/16] dlfcn: Move dlvsym into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (10 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 11/16] dlfcn: Move dlinfo " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 14:34   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 13/16] dlfcn: Move dlopen " Florian Weimer
                   ` (3 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  3 +-
 dlfcn/Versions                                |  6 +-
 dlfcn/dlvsym.c                                | 66 +++++++++++--------
 dlfcn/sdlvsym.c                               |  1 -
 elf/dl-sym.c                                  |  2 +-
 include/dlfcn.h                               |  6 +-
 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 -
 69 files changed, 115 insertions(+), 65 deletions(-)
 delete mode 100644 dlfcn/sdlvsym.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index c65cdc2e2b..08d92f85fc 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,7 +21,7 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen dlvsym \
+libdl-routines	:= dlopen \
 		   dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
@@ -33,6 +33,7 @@ routines += \
   dlinfo \
   dlmopen \
   dlsym \
+  dlvsym \
   libc_dlerror_result \
 
 extra-libs-others := libdl
diff --git a/dlfcn/Versions b/dlfcn/Versions
index ca9a3e5591..3c4fa2742e 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -5,6 +5,9 @@ libc {
     dlerror;
     dlsym;
   }
+  GLIBC_2.1 {
+    dlvsym;
+  }
   GLIBC_2.3.3 {
     dladdr1;
     dlinfo;
@@ -20,6 +23,7 @@ libc {
     dlinfo;
     dlmopen;
     dlsym;
+    dlvsym;
   }
   GLIBC_PRIVATE {
     __libc_dlerror_result;
@@ -32,7 +36,7 @@ libdl {
     dlopen;
   }
   GLIBC_2.1 {
-    dlopen; dlvsym;
+    dlopen;
   }
   GLIBC_2.3.3 {
     __libdl_version_placeholder;
diff --git a/dlfcn/dlvsym.c b/dlfcn/dlvsym.c
index 519e706ea1..de6b340647 100644
--- a/dlfcn/dlvsym.c
+++ b/dlfcn/dlvsym.c
@@ -17,20 +17,9 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <dlfcn.h>
-#include <stddef.h>
-
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-void *
-weak_function
-dlvsym (void *handle, const char *name, const char *version_str)
-{
-  return __dlvsym (handle, name, version_str, RETURN_ADDRESS (0));
-}
-
-#else
+#include <shlib-compat.h>
+#include <stddef.h>
 
 struct dlvsym_args
 {
@@ -44,29 +33,23 @@ struct dlvsym_args
   void *sym;
 };
 
-
 static void
 dlvsym_doit (void *a)
 {
-  struct dlvsym_args *args = (struct dlvsym_args *)a;
+  struct dlvsym_args *args = (struct dlvsym_args *) a;
 
   args->sym = _dl_vsym (args->handle, args->name, args->version, args->who);
 }
 
-void *
-__dlvsym (void *handle, const char *name, const char *version_str
-	  DL_CALLER_DECL)
+static void *
+dlvsym_implementation (void *handle, const char *name, const char *version,
+		       void *dl_caller)
 {
-# ifdef SHARED
-  if (!rtld_active ())
-    return _dlfcn_hook->dlvsym (handle, name, version_str, DL_CALLER);
-# endif
-
   struct dlvsym_args args;
+  args.who = dl_caller;
   args.handle = handle;
   args.name = name;
-  args.who = DL_CALLER;
-  args.version = version_str;
+  args.version = version;
 
   /* Protect against concurrent loads and unloads.  */
   __rtld_lock_lock_recursive (GL(dl_load_lock));
@@ -77,7 +60,34 @@ __dlvsym (void *handle, const char *name, const char *version_str
 
   return result;
 }
-# ifdef SHARED
-weak_alias (__dlvsym, dlvsym)
+
+#ifdef SHARED
+void *
+___dlvsym (void *handle, const char *name, const char *version)
+{
+  if (!rtld_active ())
+    return _dlfcn_hook->dlvsym (handle, name, version, RETURN_ADDRESS (0));
+  else
+    return dlvsym_implementation (handle, name, version, RETURN_ADDRESS (0));
+}
+versioned_symbol (libc, ___dlvsym, dlvsym, GLIBC_2_34);
+
+# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libdl, ___dlvsym, dlvsym, GLIBC_2_1);
 # endif
-#endif
+
+#else /* !SHARED */
+/* Also used with _dlfcn_hook.  */
+void *
+__dlvsym (void *handle, const char *name, const char *version, void *dl_caller)
+{
+  return dlvsym_implementation (handle, name, version, dl_caller);
+}
+
+void *
+___dlvsym (void *handle, const char *name, const char *version)
+{
+  return __dlvsym (handle, name, version, RETURN_ADDRESS (0));
+}
+weak_alias (___dlvsym, dlvsym)
+#endif /* !SHARED */
diff --git a/dlfcn/sdlvsym.c b/dlfcn/sdlvsym.c
deleted file mode 100644
index ec4286058c..0000000000
--- a/dlfcn/sdlvsym.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlvsym.c"
diff --git a/elf/dl-sym.c b/elf/dl-sym.c
index b34cc2f8eb..fa0cce678f 100644
--- a/elf/dl-sym.c
+++ b/elf/dl-sym.c
@@ -188,7 +188,7 @@ _dl_vsym (void *handle, const char *name, const char *version, void *who)
 
   return do_sym (handle, name, who, &vers, 0);
 }
-
+libc_hidden_def (_dl_vsym)
 
 void *
 _dl_sym (void *handle, const char *name, void *who)
diff --git a/include/dlfcn.h b/include/dlfcn.h
index e898c17792..04ea4f6e2d 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -92,6 +92,7 @@ libc_hidden_proto (_dl_sym)
    NULL.  */
 extern void *_dl_vsym (void *handle, const char *name, const char *version,
 		       void *who);
+libc_hidden_proto (_dl_vsym)
 
 /* Helper function for <dlfcn.h> functions.  Runs the OPERATE function via
    _dl_catch_error.  Returns zero for success, nonzero for failure; and
@@ -137,9 +138,8 @@ extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
 			void *dl_caller);
 extern int __dlclose (void *handle);
 extern void *__dlsym (void *handle, const char *name, void *dl_caller);
-extern void *__dlvsym (void *handle, const char *name, const char *version
-		       DL_CALLER_DECL)
-     attribute_hidden;
+extern void *__dlvsym (void *handle, const char *name, const char *version,
+		       void *dl_caller);
 extern int __dladdr (const void *address, Dl_info *info);
 extern int __dladdr1 (const void *address, Dl_info *info,
 		      void **extra_info, int flags);
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index f4adfc6e5f..f0bd076005 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -745,6 +745,7 @@ GLIBC_2.2.6 dladdr F
 GLIBC_2.2.6 dlclose F
 GLIBC_2.2.6 dlerror F
 GLIBC_2.2.6 dlsym F
+GLIBC_2.2.6 dlvsym F
 GLIBC_2.2.6 dngettext F
 GLIBC_2.2.6 dprintf F
 GLIBC_2.2.6 drand48 F
@@ -2221,6 +2222,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 3a60902d2a..cd906eff75 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,4 +1,3 @@
 GLIBC_2.2.6 dlopen F
-GLIBC_2.2.6 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index a962e2966c..deebf612dc 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -725,6 +725,7 @@ GLIBC_2.17 dlerror F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlsym F
+GLIBC_2.17 dlvsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
 GLIBC_2.17 drand48 F
@@ -2356,6 +2357,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 840db53856..1fabf08e3c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.17 dlopen F
-GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index b4cab19c7e..a4f79e54d8 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1524,6 +1524,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2448,6 +2449,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 4e5440b6ae..ad8180833a 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -670,6 +670,7 @@ GLIBC_2.32 dlerror F
 GLIBC_2.32 dlinfo F
 GLIBC_2.32 dlmopen F
 GLIBC_2.32 dlsym F
+GLIBC_2.32 dlvsym F
 GLIBC_2.32 dngettext F
 GLIBC_2.32 dprintf F
 GLIBC_2.32 drand48 F
@@ -2115,6 +2116,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 dc71de1647..aef59c3c3c 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.32 dlopen F
-GLIBC_2.32 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 45fc27223e..a9eae3c20e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -214,6 +214,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1031,6 +1032,7 @@ GLIBC_2.4 dlerror F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
+GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index bfe4d7ede0..c93d59d01b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -211,6 +211,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1028,6 +1029,7 @@ GLIBC_2.4 dlerror F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
+GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index f773509d7f..226187a2e2 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -706,6 +706,7 @@ GLIBC_2.29 dlerror F
 GLIBC_2.29 dlinfo F
 GLIBC_2.29 dlmopen F
 GLIBC_2.29 dlsym F
+GLIBC_2.29 dlvsym F
 GLIBC_2.29 dngettext F
 GLIBC_2.29 dprintf F
 GLIBC_2.29 drand48 F
@@ -2299,6 +2300,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 a143948a4c..323b9117b2 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.29 dlopen F
-GLIBC_2.29 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 3050951d35..1b41bfd3d7 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2,6 +2,7 @@ GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2252,6 +2253,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 0be412ab6b..2c0369a482 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1498,6 +1498,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2436,6 +2437,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ad6bfa0d2a..852bba8bf8 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2,6 +2,7 @@ GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2288,6 +2289,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index bb62cc7a4f..c55e7622c7 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -215,6 +215,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1020,6 +1021,7 @@ GLIBC_2.4 dlerror F
 GLIBC_2.4 dlinfo F
 GLIBC_2.4 dlmopen F
 GLIBC_2.4 dlsym F
+GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.4 dlopen F
-GLIBC_2.4 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index c313cfbc58..b97c4a53f5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1495,6 +1495,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2379,6 +2380,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e841dcad21..f5a906f7c5 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -727,6 +727,7 @@ GLIBC_2.18 dlerror F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlsym F
+GLIBC_2.18 dlvsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
 GLIBC_2.18 drand48 F
@@ -2350,6 +2351,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 327d8ad43b..f8d2fc1b69 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.18 dlopen F
-GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 3d3e3d7fdb..81ccb4e029 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -727,6 +727,7 @@ GLIBC_2.18 dlerror F
 GLIBC_2.18 dlinfo F
 GLIBC_2.18 dlmopen F
 GLIBC_2.18 dlsym F
+GLIBC_2.18 dlvsym F
 GLIBC_2.18 dngettext F
 GLIBC_2.18 dprintf F
 GLIBC_2.18 drand48 F
@@ -2347,6 +2348,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 327d8ad43b..f8d2fc1b69 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.18 dlopen F
-GLIBC_2.18 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 9fe3e79ab1..e4e1b90620 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1680,6 +1680,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
 GLIBC_2.2 endutxent F
@@ -2344,6 +2345,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 d10be39aa7..69d0dae81c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.2 dlopen F
-GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index db04a7d0a7..458475399a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1678,6 +1678,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
 GLIBC_2.2 endutxent F
@@ -2342,6 +2343,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 d10be39aa7..69d0dae81c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.2 dlopen F
-GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 50b4c0cc57..c79ce36927 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1679,6 +1679,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
 GLIBC_2.2 endutxent F
@@ -2350,6 +2351,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 5d4e18b7f7..4f642a64f8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1675,6 +1675,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
 GLIBC_2.2 endutxent F
@@ -2344,6 +2345,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 ef4d89fe97..403a109f8f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -770,6 +770,7 @@ GLIBC_2.21 dlerror F
 GLIBC_2.21 dlinfo F
 GLIBC_2.21 dlmopen F
 GLIBC_2.21 dlsym F
+GLIBC_2.21 dlvsym F
 GLIBC_2.21 dngettext F
 GLIBC_2.21 dprintf F
 GLIBC_2.21 drand48 F
@@ -2389,6 +2390,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 3cecf1ebac..b83daf801c 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.21 dlopen F
-GLIBC_2.21 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 32661d6341..a51daed07a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1503,6 +1503,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2406,6 +2407,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index e12df18b1c..54b6d41c6d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1503,6 +1503,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2439,6 +2440,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 3262e1b917..be60141560 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -762,6 +762,7 @@ GLIBC_2.3 dladdr F
 GLIBC_2.3 dlclose F
 GLIBC_2.3 dlerror F
 GLIBC_2.3 dlsym F
+GLIBC_2.3 dlvsym F
 GLIBC_2.3 dngettext F
 GLIBC_2.3 dprintf F
 GLIBC_2.3 drand48 F
@@ -2253,6 +2254,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 ffbe9e75a3..c32fb65365 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,4 +1,3 @@
 GLIBC_2.3 dlopen F
-GLIBC_2.3 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index d166c4872c..4157f78a90 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -813,6 +813,7 @@ GLIBC_2.17 dlerror F
 GLIBC_2.17 dlinfo F
 GLIBC_2.17 dlmopen F
 GLIBC_2.17 dlsym F
+GLIBC_2.17 dlvsym F
 GLIBC_2.17 dngettext F
 GLIBC_2.17 dprintf F
 GLIBC_2.17 drand48 F
@@ -2552,6 +2553,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 840db53856..1fabf08e3c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.17 dlopen F
-GLIBC_2.17 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 5ff4d22e1b..367e46b2e2 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -663,6 +663,7 @@ GLIBC_2.33 dlerror F
 GLIBC_2.33 dlinfo F
 GLIBC_2.33 dlmopen F
 GLIBC_2.33 dlsym F
+GLIBC_2.33 dlvsym F
 GLIBC_2.33 dngettext F
 GLIBC_2.33 dprintf F
 GLIBC_2.33 drand48 F
@@ -2117,6 +2118,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 13eefd7db9..7014e0e280 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.33 dlopen F
-GLIBC_2.33 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index caa8247be3..aec46ac3c0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -704,6 +704,7 @@ GLIBC_2.27 dlerror F
 GLIBC_2.27 dlinfo F
 GLIBC_2.27 dlmopen F
 GLIBC_2.27 dlsym F
+GLIBC_2.27 dlvsym F
 GLIBC_2.27 dngettext F
 GLIBC_2.27 dprintf F
 GLIBC_2.27 drand48 F
@@ -2317,6 +2318,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 c4b5356c4a..d4d85e298f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.27 dlopen F
-GLIBC_2.27 dlvsym F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 9d4562eeb7..5dbfc50d2a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1495,6 +1495,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2404,6 +2405,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 14f9ab9a0e..c0d3d8362c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -699,6 +699,7 @@ GLIBC_2.2 dladdr F
 GLIBC_2.2 dlclose F
 GLIBC_2.2 dlerror F
 GLIBC_2.2 dlsym F
+GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 dprintf F
 GLIBC_2.2 drand48 F
@@ -2290,6 +2291,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 5df5e71ebf..59fedff595 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,4 +1,3 @@
 GLIBC_2.2 dlopen F
-GLIBC_2.2 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 9646c17111..1928e8a1fb 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2259,6 +2260,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 84643a9d87..738628c7b6 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2256,6 +2257,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index dc3bbcde02..c7e29c5d31 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1496,6 +1496,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
 GLIBC_2.1 fattach F
@@ -2397,6 +2398,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 1170aa5c51..e5c7a92b38 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
 GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2309,6 +2310,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.0 dlopen F
 GLIBC_2.1 dlopen F
-GLIBC_2.1 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 6aa4eedff4..7e35c50406 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -689,6 +689,7 @@ GLIBC_2.2.5 dladdr F
 GLIBC_2.2.5 dlclose F
 GLIBC_2.2.5 dlerror F
 GLIBC_2.2.5 dlsym F
+GLIBC_2.2.5 dlvsym F
 GLIBC_2.2.5 dngettext F
 GLIBC_2.2.5 dprintf F
 GLIBC_2.2.5 drand48 F
@@ -2268,6 +2269,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 00764915cf..7a82c097cf 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,4 +1,3 @@
 GLIBC_2.2.5 dlopen F
-GLIBC_2.2.5 dlvsym F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index dab4cbc677..4d1dd2b3a2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -729,6 +729,7 @@ GLIBC_2.16 dlerror F
 GLIBC_2.16 dlinfo F
 GLIBC_2.16 dlmopen F
 GLIBC_2.16 dlsym F
+GLIBC_2.16 dlvsym F
 GLIBC_2.16 dngettext F
 GLIBC_2.16 dprintf F
 GLIBC_2.16 drand48 F
@@ -2371,6 +2372,7 @@ GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
 GLIBC_2.34 dlsym F
+GLIBC_2.34 dlvsym 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 645f87e571..92d5e7d128 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1,2 +1 @@
 GLIBC_2.16 dlopen F
-GLIBC_2.16 dlvsym F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 13/16] dlfcn: Move dlopen into libc
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (11 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 12/16] dlfcn: Move dlvsym " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 14:54   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required Florian Weimer
                   ` (2 subsequent siblings)
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 dlfcn/Makefile                                |  8 +-
 dlfcn/Versions                                |  7 +-
 dlfcn/dlfcn.c                                 | 16 +++-
 dlfcn/dlopen.c                                | 82 ++++++++++---------
 dlfcn/dlopenold.c                             |  4 +-
 dlfcn/sdlopen.c                               |  1 -
 include/dlfcn.h                               |  3 +-
 sysdeps/mach/hurd/i386/libc.abilist           |  2 +
 sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/libdl.abilist |  2 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/alpha/libdl.abilist   |  4 +-
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/libdl.abilist     |  2 +-
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/be/libdl.abilist  |  2 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/le/libdl.abilist  |  2 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/csky/libdl.abilist    |  2 +-
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/hppa/libdl.abilist    |  4 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/i386/libdl.abilist    |  4 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  4 +-
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
 .../sysv/linux/m68k/coldfire/libdl.abilist    |  2 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
 .../unix/sysv/linux/m68k/m680x0/libdl.abilist |  4 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../sysv/linux/microblaze/be/libdl.abilist    |  2 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../sysv/linux/microblaze/le/libdl.abilist    |  2 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
 .../unix/sysv/linux/mips/mips32/libdl.abilist |  4 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
 .../unix/sysv/linux/mips/mips64/libdl.abilist |  4 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  3 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  2 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
 .../linux/powerpc/powerpc32/libdl.abilist     |  4 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/libdl.abilist  |  2 +-
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/libdl.abilist  |  2 +-
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/libdl.abilist  |  2 +-
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
 .../sysv/linux/s390/s390-32/libdl.abilist     |  4 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  4 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  4 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc32/libdl.abilist    |  4 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc64/libdl.abilist    |  4 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  2 +-
 70 files changed, 193 insertions(+), 96 deletions(-)
 delete mode 100644 dlfcn/sdlopen.c

diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 08d92f85fc..a471d86071 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -21,8 +21,7 @@ include ../Makeconfig
 
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
-libdl-routines	:= dlopen \
-		   dlfcn
+libdl-routines	:= dlfcn
 routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
 elide-routines.os := $(routines)
 routines += \
@@ -32,6 +31,7 @@ routines += \
   dlerror \
   dlinfo \
   dlmopen \
+  dlopen \
   dlsym \
   dlvsym \
   libc_dlerror_result \
@@ -39,8 +39,8 @@ routines += \
 extra-libs-others := libdl
 
 ifeq ($(build-shared),yes)
-libdl-routines	+= dlopenold
-libdl-shared-only-routines := dlopenold dlfcn
+routines += dlopenold
+shared-only-routines := dlopenold dlfcn
 endif
 
 ifeq (yes,$(build-shared))
diff --git a/dlfcn/Versions b/dlfcn/Versions
index 3c4fa2742e..cc34eb824d 100644
--- a/dlfcn/Versions
+++ b/dlfcn/Versions
@@ -3,9 +3,11 @@ libc {
     dladdr;
     dlclose;
     dlerror;
+    dlopen;
     dlsym;
   }
   GLIBC_2.1 {
+    dlopen;
     dlvsym;
   }
   GLIBC_2.3.3 {
@@ -22,6 +24,7 @@ libc {
     dlerror;
     dlinfo;
     dlmopen;
+    dlopen;
     dlsym;
     dlvsym;
   }
@@ -33,10 +36,10 @@ libc {
 }
 libdl {
   GLIBC_2.0 {
-    dlopen;
+    __libdl_version_placeholder;
   }
   GLIBC_2.1 {
-    dlopen;
+    __libdl_version_placeholder;
   }
   GLIBC_2.3.3 {
     __libdl_version_placeholder;
diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
index 55ecfcabbe..ef750bc27a 100644
--- a/dlfcn/dlfcn.c
+++ b/dlfcn/dlfcn.c
@@ -48,14 +48,22 @@ __libdl_version_placeholder_1 (void)
 {
 }
 
-#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34) \
-  && ABI_libdl_GLIBC_2_3_3 != ABI_libdl_GLIBC_2_1
+#if SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libdl, __libdl_version_placeholder_1,
+               __libdl_version_placeholder, GLIBC_2_0);
+#endif
+
+#if SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libdl, __libdl_version_placeholder_1,
+               __libdl_version_placeholder, GLIBC_2_1);
+#endif
+
+#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34)
 compat_symbol (libdl, __libdl_version_placeholder_1,
                __libdl_version_placeholder, GLIBC_2_3_3);
 #endif
 
-#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
-  && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
+#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34)
 compat_symbol (libdl, __libdl_version_placeholder_1,
                __libdl_version_placeholder, GLIBC_2_3_4);
 #endif
diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c
index d51e006453..afdc113efb 100644
--- a/dlfcn/dlopen.c
+++ b/dlfcn/dlopen.c
@@ -21,17 +21,7 @@
 #include <stddef.h>
 #include <unistd.h>
 #include <ldsodefs.h>
-
-#if !defined SHARED && IS_IN (libdl)
-
-void *
-dlopen (const char *file, int mode)
-{
-  return __dlopen (file, mode, RETURN_ADDRESS (0));
-}
-static_link_warning (dlopen)
-
-#else
+#include <shlib-compat.h>
 
 struct dlopen_args
 {
@@ -46,11 +36,11 @@ struct dlopen_args
 
 
 /* Non-shared code has no support for multiple namespaces.  */
-# ifdef SHARED
-#  define NS __LM_ID_CALLER
-# else
-#  define NS LM_ID_BASE
-# endif
+#ifdef SHARED
+# define NS __LM_ID_CALLER
+#else
+# define NS LM_ID_BASE
+#endif
 
 
 static void
@@ -66,38 +56,54 @@ dlopen_doit (void *a)
   args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
 			     args->caller,
 			     args->file == NULL ? LM_ID_BASE : NS,
-			     __dlfcn_argc, __dlfcn_argv, __environ);
+			     __libc_argc, __libc_argv, __environ);
 }
 
 
-void *
-__dlopen (const char *file, int mode DL_CALLER_DECL)
+static void *
+dlopen_implementation (const char *file, int mode, void *dl_caller)
 {
-# ifdef SHARED
-  if (!rtld_active ())
-    return _dlfcn_hook->dlopen (file, mode, DL_CALLER);
-# endif
-
   struct dlopen_args args;
   args.file = file;
   args.mode = mode;
-  args.caller = DL_CALLER;
+  args.caller = dl_caller;
 
-# ifdef SHARED
   return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
-# else
-  if (_dlerror_run (dlopen_doit, &args))
-    return NULL;
+}
 
-  __libc_register_dl_open_hook ((struct link_map *) args.new);
-  __libc_register_dlfcn_hook ((struct link_map *) args.new);
+#ifdef SHARED
+void *
+___dlopen (const char *file, int mode)
+{
+  if (!rtld_active ())
+    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
+  else
+    return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
+}
+versioned_symbol (libc, ___dlopen, dlopen, GLIBC_2_34);
 
-  return args.new;
+# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libdl, ___dlopen, dlopen, GLIBC_2_1);
 # endif
+#else /* !SHARED */
+/* Also used with _dlfcn_hook.  */
+void *
+__dlopen (const char *file, int mode, void *dl_caller)
+{
+  return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
 }
-# ifdef SHARED
-#  include <shlib-compat.h>
-strong_alias (__dlopen, __dlopen_check)
-versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1);
-# endif
-#endif
+
+void *
+___dlopen (const char *file, int mode)
+{
+  struct link_map *l = __dlopen (file, mode, RETURN_ADDRESS (0));
+  if (l != NULL)
+    {
+      __libc_register_dl_open_hook (l);
+      __libc_register_dlfcn_hook (l);
+    }
+  return l;
+}
+weak_alias (___dlopen, dlopen)
+static_link_warning (dlopen)
+#endif /* !SHARED */
diff --git a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
index 6174dcbb27..0fe5f24cc5 100644
--- a/dlfcn/dlopenold.c
+++ b/dlfcn/dlopenold.c
@@ -24,7 +24,7 @@
 /* This file is for compatibility with glibc 2.0.  Compile it only if
    versioning is used.  */
 #include <shlib-compat.h>
-#if SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_1)
+#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_1)
 
 struct dlopen_args
 {
@@ -54,7 +54,7 @@ dlopen_doit (void *a)
   args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
 			     args->caller,
 			     args->file == NULL ? LM_ID_BASE : NS,
-			     __dlfcn_argc, __dlfcn_argv, __environ);
+			     __libc_argc, __libc_argv, __environ);
 }
 
 extern void *__dlopen_nocheck (const char *file, int mode);
diff --git a/dlfcn/sdlopen.c b/dlfcn/sdlopen.c
deleted file mode 100644
index 1ff2eb2854..0000000000
--- a/dlfcn/sdlopen.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dlopen.c"
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 04ea4f6e2d..4274eddbc9 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -132,8 +132,7 @@ libc_hidden_proto (_dlfcn_hook)
    libraries.  Internal calls in glibc should use the __libc_dl*
    functions defined in elf/dl-libc.c instead.  */
 
-extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
-     attribute_hidden;
+extern void *__dlopen (const char *file, int mode, void *caller);
 extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
 			void *dl_caller);
 extern int __dlclose (void *handle);
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index f0bd076005..f651989962 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -744,6 +744,7 @@ GLIBC_2.2.6 dl_iterate_phdr F
 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
 GLIBC_2.2.6 dngettext F
@@ -2221,6 +2222,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
index cd906eff75..59397ee9b5 100644
--- a/sysdeps/mach/hurd/i386/libdl.abilist
+++ b/sysdeps/mach/hurd/i386/libdl.abilist
@@ -1,3 +1,3 @@
-GLIBC_2.2.6 dlopen F
+GLIBC_2.2.6 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index deebf612dc..bee807a6f8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -724,6 +724,7 @@ 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
 GLIBC_2.17 dlsym F
 GLIBC_2.17 dlvsym F
 GLIBC_2.17 dngettext F
@@ -2356,6 +2357,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
index 1fabf08e3c..4ba4ba9aae 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.17 dlopen F
+GLIBC_2.17 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index a4f79e54d8..43dd600039 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -412,6 +412,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1524,6 +1525,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2448,6 +2450,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index ad8180833a..033ed08877 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -669,6 +669,7 @@ 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
 GLIBC_2.32 dlsym F
 GLIBC_2.32 dlvsym F
 GLIBC_2.32 dngettext F
@@ -2115,6 +2116,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
index aef59c3c3c..051a968c87 100644
--- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.32 dlopen F
+GLIBC_2.32 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index a9eae3c20e..f66ee7aab1 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -213,6 +213,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
@@ -1031,6 +1032,7 @@ 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
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
index f6280a2f0d..65eb212007 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.4 dlopen F
+GLIBC_2.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index c93d59d01b..3798b32830 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -210,6 +210,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
@@ -1028,6 +1029,7 @@ 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
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
index f6280a2f0d..65eb212007 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.4 dlopen F
+GLIBC_2.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 226187a2e2..ba53b61ea6 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -705,6 +705,7 @@ 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
 GLIBC_2.29 dlsym F
 GLIBC_2.29 dlvsym F
 GLIBC_2.29 dngettext F
@@ -2299,6 +2300,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
index 323b9117b2..7f396d46e5 100644
--- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.29 dlopen F
+GLIBC_2.29 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 1b41bfd3d7..9783504c93 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1,7 +1,9 @@
 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
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2252,6 +2254,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 2c0369a482..c223c360ff 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1498,6 +1499,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2436,6 +2438,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 852bba8bf8..ea2be9ead2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1,7 +1,9 @@
 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
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2288,6 +2290,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index c55e7622c7..3cb4279b41 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -214,6 +214,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
@@ -1020,6 +1021,7 @@ 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
 GLIBC_2.4 dlsym F
 GLIBC_2.4 dlvsym F
 GLIBC_2.4 dngettext F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
index f6280a2f0d..65eb212007 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.4 dlopen F
+GLIBC_2.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index b97c4a53f5..94a718ff58 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -399,6 +399,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1495,6 +1496,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2379,6 +2381,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index f5a906f7c5..5823bf18ef 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -726,6 +726,7 @@ 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
 GLIBC_2.18 dlsym F
 GLIBC_2.18 dlvsym F
 GLIBC_2.18 dngettext F
@@ -2350,6 +2351,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
index f8d2fc1b69..97801fca23 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.18 dlopen F
+GLIBC_2.18 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 81ccb4e029..723c4bcb09 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -726,6 +726,7 @@ 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
 GLIBC_2.18 dlsym F
 GLIBC_2.18 dlvsym F
 GLIBC_2.18 dngettext F
@@ -2347,6 +2348,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
index f8d2fc1b69..97801fca23 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.18 dlopen F
+GLIBC_2.18 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index e4e1b90620..f67da8f37a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1680,6 +1681,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
@@ -2344,6 +2346,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
index 69d0dae81c..6ea9b0424f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.2 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.2 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 458475399a..e44a6be8aa 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1678,6 +1679,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
@@ -2342,6 +2344,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
index 69d0dae81c..6ea9b0424f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.2 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.2 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index c79ce36927..21cbe39166 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1679,6 +1680,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
@@ -2350,6 +2352,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4f642a64f8..a271342813 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -395,6 +395,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1675,6 +1676,7 @@ GLIBC_2.2 clock_settime F
 GLIBC_2.2 creat64 F
 GLIBC_2.2 dcngettext F
 GLIBC_2.2 des_setparity F
+GLIBC_2.2 dlopen F
 GLIBC_2.2 dlvsym F
 GLIBC_2.2 dngettext F
 GLIBC_2.2 ecb_crypt F
@@ -2344,6 +2346,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 403a109f8f..9429209215 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -769,6 +769,7 @@ 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
 GLIBC_2.21 dlsym F
 GLIBC_2.21 dlvsym F
 GLIBC_2.21 dngettext F
@@ -2389,6 +2390,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
index b83daf801c..70efb879ed 100644
--- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.21 dlopen F
+GLIBC_2.21 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index a51daed07a..eaca8e4b0c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -408,6 +408,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1503,6 +1504,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2406,6 +2408,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 54b6d41c6d..c754a181da 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -408,6 +408,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1503,6 +1504,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2439,6 +2441,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index be60141560..98bd6bea39 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -761,6 +761,7 @@ GLIBC_2.3 dl_iterate_phdr F
 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
 GLIBC_2.3 dngettext F
@@ -2253,6 +2254,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
index c32fb65365..d82eac3034 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
@@ -1,3 +1,3 @@
-GLIBC_2.3 dlopen F
+GLIBC_2.3 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 4157f78a90..d27f7448ed 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -812,6 +812,7 @@ 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
 GLIBC_2.17 dlsym F
 GLIBC_2.17 dlvsym F
 GLIBC_2.17 dngettext F
@@ -2552,6 +2553,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
index 1fabf08e3c..4ba4ba9aae 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.17 dlopen F
+GLIBC_2.17 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 367e46b2e2..33c9f98bf5 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -662,6 +662,7 @@ 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
 GLIBC_2.33 dlsym F
 GLIBC_2.33 dlvsym F
 GLIBC_2.33 dngettext F
@@ -2117,6 +2118,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
index 7014e0e280..8441999906 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.33 dlopen F
+GLIBC_2.33 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index aec46ac3c0..9902603cd4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -703,6 +703,7 @@ 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
 GLIBC_2.27 dlsym F
 GLIBC_2.27 dlvsym F
 GLIBC_2.27 dngettext F
@@ -2317,6 +2318,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
index d4d85e298f..33ff573df8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.27 dlopen F
+GLIBC_2.27 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 5dbfc50d2a..963e27571d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1495,6 +1496,7 @@ GLIBC_2.1 chown F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2404,6 +2406,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index c0d3d8362c..17c56a2658 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -698,6 +698,7 @@ GLIBC_2.2 div F
 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
 GLIBC_2.2 dngettext F
@@ -2290,6 +2291,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
index 59fedff595..a1deffc0c2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
@@ -1,3 +1,3 @@
-GLIBC_2.2 dlopen F
+GLIBC_2.2 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 1928e8a1fb..456abfb5bb 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
 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
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2259,6 +2261,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 738628c7b6..45e59f1821 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
 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
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2256,6 +2258,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c7e29c5d31..734e1f38b6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -400,6 +400,7 @@ GLIBC_2.0 div F
 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.0 dprintf F
 GLIBC_2.0 drand48 F
@@ -1496,6 +1497,7 @@ GLIBC_2.1 cbc_crypt F
 GLIBC_2.1 clntunix_create F
 GLIBC_2.1 creat64 F
 GLIBC_2.1 des_setparity F
+GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.1 ecb_crypt F
 GLIBC_2.1 endutxent F
@@ -2397,6 +2399,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index e5c7a92b38..9edf5ff234 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
 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
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
@@ -2309,6 +2311,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
index 8500feca8a..a455934421 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
@@ -1,4 +1,4 @@
-GLIBC_2.0 dlopen F
-GLIBC_2.1 dlopen F
+GLIBC_2.0 __libdl_version_placeholder F
+GLIBC_2.1 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 7e35c50406..bc8535fbed 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -688,6 +688,7 @@ GLIBC_2.2.5 dl_iterate_phdr F
 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
 GLIBC_2.2.5 dngettext F
@@ -2268,6 +2269,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
index 7a82c097cf..590424fbdc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
@@ -1,3 +1,3 @@
-GLIBC_2.2.5 dlopen F
+GLIBC_2.2.5 __libdl_version_placeholder F
 GLIBC_2.3.3 __libdl_version_placeholder F
 GLIBC_2.3.4 __libdl_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 4d1dd2b3a2..669cc664f5 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -728,6 +728,7 @@ 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
 GLIBC_2.16 dlsym F
 GLIBC_2.16 dlvsym F
 GLIBC_2.16 dngettext F
@@ -2371,6 +2372,7 @@ GLIBC_2.34 dlclose F
 GLIBC_2.34 dlerror F
 GLIBC_2.34 dlinfo F
 GLIBC_2.34 dlmopen F
+GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
index 92d5e7d128..583acd29f7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
@@ -1 +1 @@
-GLIBC_2.16 dlopen F
+GLIBC_2.16 __libdl_version_placeholder F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (12 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 13/16] dlfcn: Move dlopen " Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 18:08   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2 Florian Weimer
  2021-05-31 14:12 ` [PATCH 16/16] dlfcn: Rework static dlopen hooks Florian Weimer
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

This commit removes the ELF constructor and internal variables from
dlfcn, and adjusts the test suite not to use $(libdl).  The libdl.so
symbolic link is no longer installed.

Moving the dlfcn object file to libdl-shared-only-routines ensures
that libdl.a is empty.
---
 Makeconfig               |   6 --
 dlfcn/Makefile           |  40 +++------
 dlfcn/dlfcn.c            |  18 ----
 elf/Makefile             | 172 +++++++--------------------------------
 htl/Makefile             |   1 -
 iconvdata/Makefile       |   1 -
 include/dlfcn.h          |  18 ----
 malloc/Makefile          |   3 -
 misc/Makefile            |   2 -
 nptl/Makefile            |   7 --
 nss/Makefile             |   5 --
 resolv/Makefile          |  19 ++---
 stdlib/Makefile          |   8 +-
 string/Makefile          |   1 -
 sysdeps/mips/Makefile    |   1 -
 sysdeps/pthread/Makefile |   6 +-
 sysdeps/x86/Makefile     |  13 +--
 17 files changed, 56 insertions(+), 265 deletions(-)

diff --git a/Makeconfig b/Makeconfig
index 1d5e45926c..c3496452b6 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1255,12 +1255,6 @@ endif
 endif # build-shared
 
 
-ifeq ($(build-shared),yes)
-libdl = $(common-objpfx)dlfcn/libdl.so$(libdl.so-version)
-else
-libdl = $(common-objpfx)dlfcn/libdl.a
-endif
-
 ifeq ($(build-shared),yes)
 libm = $(common-objpfx)math/libm.so$(libm.so-version)
 libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index a471d86071..4d17f770a1 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -22,9 +22,7 @@ include ../Makeconfig
 headers		:= bits/dlfcn.h dlfcn.h
 extra-libs	:= libdl
 libdl-routines	:= dlfcn
-routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
-elide-routines.os := $(routines)
-routines += \
+routines = \
   dladdr \
   dladdr1 \
   dlclose \
@@ -38,9 +36,16 @@ routines += \
 
 extra-libs-others := libdl
 
+libdl-shared-only-routines += dlfcn
+
+# Pretend that libdl.so is a linker script, so that the symbolic
+# link is not installed.
+install-lib-ldscripts = libdl.so
+$(inst_libdir)/libdl.so:
+
 ifeq ($(build-shared),yes)
 routines += dlopenold
-shared-only-routines := dlopenold dlfcn
+shared-only-routines := dlopenold
 endif
 
 ifeq (yes,$(build-shared))
@@ -87,77 +92,54 @@ ifeq ($(build-shared),yes)
 tests: $(test-modules)
 endif
 
-$(objpfx)glrefmain: $(libdl)
 $(objpfx)glrefmain.out: $(objpfx)glrefmain \
 			$(objpfx)glreflib1.so $(objpfx)glreflib2.so
 
-$(objpfx)failtest: $(libdl)
 $(objpfx)failtest.out: $(objpfx)failtestmod.so
 
-$(objpfx)tst-dladdr: $(libdl)
 $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so
 
-$(objpfx)tst-dlinfo: $(libdl)
 $(objpfx)tst-dlinfo.out: $(objpfx)glreflib3.so
 LDFLAGS-glreflib3.so = -Wl,-rpath,:
 
 LDFLAGS-default = $(LDFLAGS-rdynamic)
-$(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
-$(objpfx)defaultmod1.so: $(libdl)
+$(objpfx)default: $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
 LDFLAGS-defaultmod2.so = $(LDFLAGS-Bsymbolic)
-$(objpfx)defaultmod2.so: $(libdl)
 
-$(objpfx)errmsg1: $(libdl)
 $(objpfx)errmsg1.out: $(objpfx)errmsg1 $(objpfx)errmsg1mod.so
 
-$(objpfx)tstatexit: $(libdl)
 $(objpfx)tstatexit.out: $(objpfx)tstatexit $(objpfx)modatexit.so
 
-$(objpfx)tstcxaatexit: $(libdl)
 $(objpfx)tstcxaatexit.out: $(objpfx)tstcxaatexit $(objpfx)modcxaatexit.so
 
-$(objpfx)tststatic: $(objpfx)libdl.a
 $(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so
 
-$(objpfx)tststatic2: $(objpfx)libdl.a
 $(objpfx)tststatic2.out: $(objpfx)tststatic2 $(objpfx)modstatic.so \
 			 $(objpfx)modstatic2.so
 
-$(objpfx)modstatic2.so: $(libdl)
-
-$(objpfx)tststatic3: $(objpfx)libdl.a
 $(objpfx)tststatic3.out: $(objpfx)tststatic3 $(objpfx)modstatic3.so
 
-$(objpfx)tststatic4: $(objpfx)libdl.a
 $(objpfx)tststatic4.out: $(objpfx)tststatic4 $(objpfx)modstatic3.so
 
-$(objpfx)tststatic5: $(objpfx)libdl.a
 $(objpfx)tststatic5.out: $(objpfx)tststatic5 $(objpfx)modstatic5.so
 
-$(objpfx)bug-dlopen1: $(libdl)
-
-$(objpfx)bug-dlsym1: $(libdl) $(objpfx)bug-dlsym1-lib2.so
+$(objpfx)bug-dlsym1: $(objpfx)bug-dlsym1-lib2.so
 $(objpfx)bug-dlsym1.out: $(objpfx)bug-dlsym1-lib1.so \
 			 $(objpfx)bug-dlsym1-lib2.so
 $(objpfx)bug-dlsym1-lib1.so: $(objpfx)bug-dlsym1-lib2.so
 
-$(objpfx)bug-atexit1: $(libdl)
 $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
 
-$(objpfx)bug-atexit2: $(libdl)
 $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
 
 ifneq (,$(CXX))
 LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
 $(objpfx)bug-atexit3-lib.so: $(libsupport)
-$(objpfx)bug-atexit3: $(libdl)
 $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
 endif
 
 $(objpfx)bug-dl-leaf: $(objpfx)bug-dl-leaf-lib.so
 $(objpfx)bug-dl-leaf.out: $(objpfx)bug-dl-leaf-lib-cb.so
-$(objpfx)bug-dl-leaf-lib.so: $(libdl)
 $(objpfx)bug-dl-leaf-lib-cb.so: $(objpfx)bug-dl-leaf-lib.so
 
-$(objpfx)tst-rec-dlopen: $(libdl)
 $(objpfx)tst-rec-dlopen.out: $(objpfx)moddummy1.so $(objpfx)moddummy2.so
diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
index ef750bc27a..e7fa01ecf5 100644
--- a/dlfcn/dlfcn.c
+++ b/dlfcn/dlfcn.c
@@ -19,24 +19,6 @@
 #include <dlfcn.h>
 #include <shlib-compat.h>
 
-int __dlfcn_argc attribute_hidden;
-char **__dlfcn_argv attribute_hidden;
-
-
-static void
-init (int argc, char *argv[])
-{
-  __dlfcn_argc = argc;
-  __dlfcn_argv = argv;
-}
-
-static void (*const init_array []) (int argc, char *argv[])
-     __attribute__ ((section (".init_array"), aligned (sizeof (void *))))
-     __attribute_used__ =
-{
-  init
-};
-
 /* The remainder of this file is used to keep specific symbol versions
    occupied, so that ld does not generate weak symbol version
    definitions.  */
diff --git a/elf/Makefile b/elf/Makefile
index 0ec736bb0f..e9788d3d4f 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -673,8 +673,6 @@ $(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \
 	chmod 555 $@.new
 	mv -f $@.new $@
 
-$(objpfx)sprof: $(libdl)
-
 $(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
 
 $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
@@ -699,28 +697,21 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
 test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
 generated += $(addsuffix .so,$(strip $(modules-names)))
 
-$(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
-$(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
-$(objpfx)testobj3.so: $(libdl)
-$(objpfx)testobj4.so: $(libdl)
-$(objpfx)testobj5.so: $(libdl)
-$(objpfx)testobj6.so: $(objpfx)testobj1.so $(objpfx)testobj2.so $(libdl)
+$(objpfx)testobj1_1.so: $(objpfx)testobj1.so
+$(objpfx)testobj2.so: $(objpfx)testobj1.so
+$(objpfx)testobj6.so: $(objpfx)testobj1.so $(objpfx)testobj2.so
 $(objpfx)failobj.so: $(objpfx)testobj6.so
 $(objpfx)dep1.so: $(objpfx)dep2.so $(objpfx)dep4.so
 $(objpfx)dep2.so: $(objpfx)dep3.so $(objpfx)dep4.so
 $(objpfx)dep4.so: $(objpfx)dep3.so
 $(objpfx)nodelmod3.so: $(objpfx)nodelmod4.so
-$(objpfx)nextmod1.so: $(libdl)
-$(objpfx)neededobj1.so: $(libdl)
-$(objpfx)neededobj2.so: $(objpfx)neededobj1.so $(libdl)
-$(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so $(libdl)
+$(objpfx)neededobj2.so: $(objpfx)neededobj1.so
+$(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so
 $(objpfx)neededobj4.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
-			$(objpfx)neededobj3.so $(libdl)
+			$(objpfx)neededobj3.so
 $(objpfx)neededobj6.so: $(objpfx)neededobj5.so
 $(objpfx)unload2mod.so: $(objpfx)unload2dep.so
-$(objpfx)ltglobmod2.so: $(libdl)
 $(objpfx)firstobj.so: $(shared-thread-library)
-$(objpfx)globalmod1.so: $(libdl)
 $(objpfx)reldep4mod1.so: $(objpfx)reldep4mod3.so
 $(objpfx)reldep4mod2.so: $(objpfx)reldep4mod4.so
 $(objpfx)dblloadmod1.so: $(objpfx)dblloadmod3.so
@@ -750,14 +741,9 @@ $(objpfx)unload3mod2.so: $(objpfx)unload3mod3.so
 $(objpfx)unload3mod3.so: $(objpfx)unload3mod4.so
 $(objpfx)unload4mod1.so: $(objpfx)unload4mod2.so $(objpfx)unload4mod3.so
 $(objpfx)unload4mod2.so: $(objpfx)unload4mod4.so $(objpfx)unload4mod3.so
-$(objpfx)unload6mod1.so: $(libdl)
-$(objpfx)unload6mod2.so: $(libdl)
-$(objpfx)unload6mod3.so: $(libdl)
-$(objpfx)unload7mod1.so: $(libdl)
 $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
 $(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
 $(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
-$(objpfx)unload8mod3.so: $(libdl)
 $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
 $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so
 $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so
@@ -766,8 +752,6 @@ $(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so
 $(objpfx)tst-null-argv: $(objpfx)tst-null-argv-lib.so
 $(objpfx)tst-tlsalign: $(objpfx)tst-tlsalign-lib.so
 $(objpfx)tst-nodelete-opened.out: $(objpfx)tst-nodelete-opened-lib.so
-$(objpfx)tst-nodelete-opened: $(libdl)
-$(objpfx)tst-noload: $(libdl)
 
 $(objpfx)tst-tlsalign-extern: $(objpfx)tst-tlsalign-vars.o
 $(objpfx)tst-tlsalign-extern-static: $(objpfx)tst-tlsalign-vars.o
@@ -842,30 +826,25 @@ ifeq ($(build-shared),yes)
 tests: $(test-modules)
 endif
 
-$(objpfx)loadtest: $(libdl)
 LDFLAGS-loadtest = -rdynamic
 
 $(objpfx)loadtest.out: $(test-modules)
 
-$(objpfx)neededtest: $(libdl)
 $(objpfx)neededtest.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
 			 $(objpfx)neededobj3.so
 
-$(objpfx)neededtest2: $(libdl)
 $(objpfx)neededtest2.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
 			  $(objpfx)neededobj3.so
 
-$(objpfx)neededtest3: $(libdl)
 $(objpfx)neededtest3.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
 			  $(objpfx)neededobj3.so $(objpfx)neededobj4.so
 
-$(objpfx)neededtest4: $(libdl) $(objpfx)neededobj1.so
+$(objpfx)neededtest4: $(objpfx)neededobj1.so
 $(objpfx)neededtest4.out: $(objpfx)neededobj5.so $(objpfx)neededobj6.so
 
-$(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so $(libdl)
+$(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so
 LDFLAGS-restest1 = -rdynamic
 
-$(objpfx)restest2: $(libdl)
 LDFLAGS-restest2 = -rdynamic
 
 $(objpfx)restest1.out: $(test-modules)
@@ -877,31 +856,24 @@ $(objpfx)preloadtest.out: $(preloadtest-preloads:%=$(objpfx)%.so)
 preloadtest-ENV = \
   LD_PRELOAD=$(subst $(empty) ,:,$(strip $(preloadtest-preloads:=.so)))
 
-$(objpfx)loadfail: $(libdl)
 LDFLAGS-loadfail = -rdynamic
 
 $(objpfx)loadfail.out: $(objpfx)failobj.so
 
-$(objpfx)multiload: $(libdl)
 LDFLAGS-multiload = -rdynamic
 CFLAGS-multiload.c += -DOBJDIR=\"$(elf-objpfx)\"
 
 $(objpfx)multiload.out: $(objpfx)testobj1.so
 
-$(objpfx)origtest: $(libdl)
 LDFLAGS-origtest = -rdynamic
 $(objpfx)origtest.out: $(objpfx)testobj1.so
 
 ifeq ($(have-thread-library),yes)
-$(objpfx)resolvfail: $(libdl) $(shared-thread-library)
-else
-$(objpfx)resolvfail: $(libdl)
+$(objpfx)resolvfail: $(shared-thread-library)
 endif
 
-$(objpfx)constload1: $(libdl)
 $(objpfx)constload1.out: $(objpfx)constload2.so $(objpfx)constload3.so
 
-$(objpfx)circleload1: $(libdl)
 $(objpfx)circleload1.out: $(objpfx)circlemod1.so \
 			  $(objpfx)circlemod1a.so
 
@@ -920,7 +892,7 @@ $(objpfx)vismain: $(addprefix $(objpfx),vismod1.so vismod2.so)
 $(objpfx)vismain.out: $(addprefix $(objpfx),vismod3.so)
 vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),vismod3.so)
 
-$(objpfx)noload: $(objpfx)testobj1.so $(libdl)
+$(objpfx)noload: $(objpfx)testobj1.so
 LDFLAGS-noload = -rdynamic -Wl,--no-as-needed
 $(objpfx)noload.out: $(objpfx)testobj5.so
 
@@ -932,16 +904,13 @@ noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace
 LDFLAGS-nodelete = -rdynamic
 LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete
 LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete
-$(objpfx)nodelete: $(libdl)
 $(objpfx)nodelete.out: $(objpfx)nodelmod1.so $(objpfx)nodelmod2.so \
 		       $(objpfx)nodelmod3.so
 
 LDFLAGS-nodlopenmod.so = -Wl,--enable-new-dtags,-z,nodlopen
-$(objpfx)nodlopen: $(libdl)
 $(objpfx)nodlopen.out: $(objpfx)nodlopenmod.so
 
 $(objpfx)nodlopenmod2.so: $(objpfx)nodlopenmod.so
-$(objpfx)nodlopen2: $(libdl)
 $(objpfx)nodlopen2.out: $(objpfx)nodlopenmod2.so
 
 $(objpfx)filtmod1.so: $(objpfx)filtmod1.os $(objpfx)filtmod2.so
@@ -954,31 +923,23 @@ $(objpfx)filter: $(objpfx)filtmod1.so
 # This does not link against libc.
 CFLAGS-filtmod1.c += $(no-stack-protector)
 
-$(objpfx)unload: $(libdl)
 $(objpfx)unload.out: $(objpfx)unloadmod.so
 
-$(objpfx)reldep: $(libdl)
 $(objpfx)reldep.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod2.so
 
-$(objpfx)reldep2: $(libdl)
 $(objpfx)reldep2.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod3.so
 
-$(objpfx)reldep3: $(libdl)
 $(objpfx)reldep3.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so
 
-$(objpfx)reldep4: $(libdl)
 $(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so
 
-$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so $(libdl)
+$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so
 LDFLAGS-next = -Wl,--no-as-needed
 
-$(objpfx)unload2: $(libdl)
 $(objpfx)unload2.out: $(objpfx)unload2mod.so $(objpfx)unload2dep.so
 
-$(objpfx)lateglobal: $(libdl)
 $(objpfx)lateglobal.out: $(objpfx)ltglobmod1.so $(objpfx)ltglobmod2.so
 
-$(objpfx)tst-pathopt: $(libdl)
 $(objpfx)tst-pathopt.out: tst-pathopt.sh $(objpfx)tst-pathopt \
 			  $(objpfx)pathoptobj.so
 	$(SHELL) $< $(common-objpfx) '$(test-wrapper-env)' \
@@ -998,55 +959,40 @@ $(objpfx)tst-rtld-preload.out: tst-rtld-preload.sh $(objpfx)ld.so \
 		    '$(rpath-link)' '$(tst-rtld-preload-OBJS)' > $@; \
 	$(evaluate-test)
 
-$(objpfx)initfirst: $(libdl)
 $(objpfx)initfirst.out: $(objpfx)firstobj.so
 
 $(objpfx)global: $(objpfx)globalmod1.so
 $(objpfx)global.out: $(objpfx)reldepmod1.so
 
-$(objpfx)dblload: $(libdl)
 $(objpfx)dblload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
 
-$(objpfx)dblunload: $(libdl)
 $(objpfx)dblunload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
 
-$(objpfx)reldep5: $(libdl)
 $(objpfx)reldep5.out: $(objpfx)reldepmod5.so $(objpfx)reldepmod6.so
 
-$(objpfx)reldep6: $(libdl)
 $(objpfx)reldep6.out: $(objpfx)reldep6mod3.so $(objpfx)reldep6mod4.so
 
-$(objpfx)reldep7: $(libdl)
 $(objpfx)reldep7.out: $(objpfx)reldep7mod1.so $(objpfx)reldep7mod2.so
 
-$(objpfx)reldep8: $(libdl)
 $(objpfx)reldep8.out: $(objpfx)reldep8mod3.so
 
 LDFLAGS-nodel2mod2.so = -Wl,--enable-new-dtags,-z,nodelete
-$(objpfx)nodelete2: $(libdl)
 $(objpfx)nodelete2.out: $(objpfx)nodel2mod3.so
 
-$(objpfx)reldep9: $(libdl)
 $(objpfx)reldep9.out: $(objpfx)reldep9mod3.so
 
 $(objpfx)tst-tls3: $(objpfx)tst-tlsmod1.so
 
-$(objpfx)tst-tls4: $(libdl)
 $(objpfx)tst-tls4.out: $(objpfx)tst-tlsmod2.so
 
-$(objpfx)tst-tls5: $(libdl)
 $(objpfx)tst-tls5.out: $(objpfx)tst-tlsmod2.so
 
-$(objpfx)tst-tls6: $(libdl)
 $(objpfx)tst-tls6.out: $(objpfx)tst-tlsmod2.so
 
-$(objpfx)tst-tls7: $(libdl)
 $(objpfx)tst-tls7.out: $(objpfx)tst-tlsmod3.so
 
-$(objpfx)tst-tls8: $(libdl)
 $(objpfx)tst-tls8.out: $(objpfx)tst-tlsmod3.so $(objpfx)tst-tlsmod4.so
 
-$(objpfx)tst-tls9: $(libdl)
 $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
 
 $(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
@@ -1055,67 +1001,53 @@ $(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
 
 $(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
 
-$(objpfx)tst-tls13: $(libdl)
 $(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
 
-$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl)
+$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so
 $(objpfx)tst-tls14.out: $(objpfx)tst-tlsmod14b.so
 
-$(objpfx)tst-tls15: $(libdl)
 $(objpfx)tst-tls15.out: $(objpfx)tst-tlsmod15a.so $(objpfx)tst-tlsmod15b.so
 
-$(objpfx)tst-tls-dlinfo: $(libdl)
 $(objpfx)tst-tls-dlinfo.out: $(objpfx)tst-tlsmod2.so
 
 
 
-$(objpfx)tst-tls16: $(libdl)
 $(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so
 
-$(objpfx)tst-tls17: $(libdl)
 $(objpfx)tst-tls17.out: $(objpfx)tst-tlsmod17b.so
 $(patsubst %,$(objpfx)%.os,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.os: tst-tlsmod17a.c
 	$(compile-command.c) -DN=$*
 $(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.so: $(objpfx)ld.so
 $(objpfx)tst-tlsmod17b.so: $(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules))
 
-$(objpfx)tst-tls18: $(libdl)
 $(objpfx)tst-tls18.out: $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules))
 $(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : tst-tlsmod18a.c
 	$(compile-command.c) -DN=$*
 $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so
 
-$(objpfx)tst-tls19: $(libdl)
 $(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so
 
 CFLAGS-tst-align.c += $(stack-align-test-flags)
 CFLAGS-tst-align2.c += $(stack-align-test-flags)
 CFLAGS-tst-alignmod.c += $(stack-align-test-flags)
 CFLAGS-tst-alignmod2.c += $(stack-align-test-flags)
-$(objpfx)tst-align: $(libdl)
 $(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
 $(objpfx)tst-align2: $(objpfx)tst-alignmod2.so
 
-$(objpfx)unload3: $(libdl)
 $(objpfx)unload3.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
 		      $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
 
-$(objpfx)unload4: $(libdl)
 $(objpfx)unload4.out: $(objpfx)unload4mod1.so $(objpfx)unload4mod3.so
 
-$(objpfx)unload5: $(libdl)
 $(objpfx)unload5.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
 		      $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
 
-$(objpfx)unload6: $(libdl)
 $(objpfx)unload6.out: $(objpfx)unload6mod1.so $(objpfx)unload6mod2.so \
 		      $(objpfx)unload6mod3.so
 
-$(objpfx)unload7: $(libdl)
 $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so
 unload7-ENV = MALLOC_PERTURB_=85
 
-$(objpfx)unload8: $(libdl)
 $(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
 
 ifdef libdl
@@ -1124,7 +1056,6 @@ $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
 endif
 
 ifeq ($(have-z-execstack),yes)
-$(objpfx)tst-execstack: $(libdl)
 $(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
 CPPFLAGS-tst-execstack.c += -DUSE_PTHREADS=0
 LDFLAGS-tst-execstack = -Wl,-z,noexecstack
@@ -1159,7 +1090,6 @@ $(objpfx)tst-array3-cmp.out: tst-array1.exp $(objpfx)tst-array3.out
 	cmp $^ > $@; \
 	$(evaluate-test)
 
-$(objpfx)tst-array4: $(libdl)
 $(objpfx)tst-array4.out: $(objpfx)tst-array2dep.so
 $(objpfx)tst-array4-cmp.out: tst-array4.exp $(objpfx)tst-array4.out
 	cmp $^ > $@; \
@@ -1180,7 +1110,6 @@ CFLAGS-tst-pie2.c += $(pie-ccflag)
 
 $(objpfx)tst-piemod1.so: $(libsupport)
 $(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
-$(objpfx)tst-dlopen-pie: $(libdl)
 $(objpfx)tst-dlopen-pie.out: $(objpfx)tst-pie1
 
 ifeq (yes,$(build-shared))
@@ -1239,7 +1168,6 @@ $(objpfx)check-wx-segment.out: $(..)scripts/check-wx-segment.py \
 	$(evaluate-test)
 generated += check-wx-segment.out
 
-$(objpfx)tst-dlmodcount: $(libdl)
 $(objpfx)tst-dlmodcount.out: $(test-modules)
 
 $(all-built-dso:=.jmprel): %.jmprel: % Makefile
@@ -1292,38 +1220,31 @@ $(objpfx)check-initfini.out: $(..)scripts/check-initfini.awk \
 	$(evaluate-test)
 generated += check-initfini.out
 
-$(objpfx)tst-dlopenrpathmod.so: $(libdl)
-$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so $(libdl)
+$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so
 CFLAGS-tst-dlopenrpath.c += -DPFX=\"$(objpfx)\"
 LDFLAGS-tst-dlopenrpathmod.so += -Wl,-rpath,\$$ORIGIN/test-subdir
 $(objpfx)tst-dlopenrpath.out: $(objpfx)firstobj.so
 
 $(objpfx)tst-deep1mod2.so: $(objpfx)tst-deep1mod3.so
-$(objpfx)tst-deep1: $(libdl) $(objpfx)tst-deep1mod1.so
+$(objpfx)tst-deep1: $(objpfx)tst-deep1mod1.so
 $(objpfx)tst-deep1.out: $(objpfx)tst-deep1mod2.so
 LDFLAGS-tst-deep1 += -rdynamic
 tst-deep1mod3.so-no-z-defs = yes
 
-$(objpfx)tst-dlmopen1mod.so: $(libdl)
-$(objpfx)tst-dlmopen1: $(libdl)
 $(objpfx)tst-dlmopen1.out: $(objpfx)tst-dlmopen1mod.so
 
-$(objpfx)tst-dlmopen2: $(libdl)
 $(objpfx)tst-dlmopen2.out: $(objpfx)tst-dlmopen1mod.so
 
-$(objpfx)tst-dlmopen3: $(libdl)
 $(objpfx)tst-dlmopen3.out: $(objpfx)tst-dlmopen1mod.so
 
 $(objpfx)tst-audit1.out: $(objpfx)tst-auditmod1.so
 tst-audit1-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
 
-$(objpfx)tst-audit2: $(libdl)
 $(objpfx)tst-audit2.out: $(objpfx)tst-auditmod1.so $(objpfx)tst-auditmod9b.so
 # Prevent GCC-5 from translating a malloc/memset pair into calloc
 CFLAGS-tst-audit2.c += -fno-builtin
 tst-audit2-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
 
-$(objpfx)tst-audit9: $(libdl)
 $(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so
 tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so
 
@@ -1331,10 +1252,8 @@ $(objpfx)tst-audit8: $(libm)
 $(objpfx)tst-audit8.out: $(objpfx)tst-auditmod1.so
 tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
 
-$(objpfx)tst-global1: $(libdl)
 $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
 
-$(objpfx)order2: $(libdl)
 $(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so
 $(objpfx)order2-cmp.out: $(objpfx)order2.out
 	(echo "12345" | cmp $< -) > $@; \
@@ -1355,7 +1274,6 @@ tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child"
 CFLAGS-tst-ptrguard1-static.c += -DPTRGUARD_LOCAL
 tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child"
 
-$(objpfx)tst-leaks1: $(libdl)
 $(objpfx)tst-leaks1-mem.out: $(objpfx)tst-leaks1.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks1.mtrace > $@; \
 	$(evaluate-test)
@@ -1368,24 +1286,19 @@ $(objpfx)tst-leaks1-static-mem.out: $(objpfx)tst-leaks1-static.out
 tst-leaks1-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1.mtrace
 tst-leaks1-static-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1-static.mtrace
 
-$(objpfx)tst-addr1: $(libdl)
-
-$(objpfx)tst-thrlock: $(libdl) $(shared-thread-library)
+$(objpfx)tst-thrlock: $(shared-thread-library)
 
 tst-tst-dlopen-tlsmodid-no-pie = yes
-$(objpfx)tst-dlopen-tlsmodid: $(libdl) $(shared-thread-library)
+$(objpfx)tst-dlopen-tlsmodid: $(shared-thread-library)
 $(objpfx)tst-dlopen-tlsmodid.out: $(objpfx)tst-dlopen-self
 CFLAGS-tst-dlopen-tlsmodid-pie.c += $(pie-ccflag)
-$(objpfx)tst-dlopen-tlsmodid-pie: $(libdl) $(shared-thread-library)
+$(objpfx)tst-dlopen-tlsmodid-pie: $(shared-thread-library)
 $(objpfx)tst-dlopen-tlsmodid-pie.out: $(objpfx)tst-dlopen-self-pie
-$(objpfx)tst-dlopen-tlsmodid-container: $(libdl) $(shared-thread-library)
+$(objpfx)tst-dlopen-tlsmodid-container: $(shared-thread-library)
 LDFLAGS-tst-dlopen-tlsmodid-container += -Wl,-rpath,\$$ORIGIN
 
 tst-tst-dlopen-self-no-pie = yes
-$(objpfx)tst-dlopen-self: $(libdl)
 CFLAGS-tst-dlopen-self-pie.c += $(pie-ccflag)
-$(objpfx)tst-dlopen-self-pie: $(libdl)
-$(objpfx)tst-dlopen-self-container: $(libdl)
 LDFLAGS-tst-dlopen-self-container += -Wl,-rpath,\$$ORIGIN
 
 CFLAGS-ifuncmain1pic.c += $(pic-ccflag)
@@ -1437,7 +1350,6 @@ $(objpfx)ifuncmain2pic: $(addprefix $(objpfx),ifuncdep2pic.o)
 $(objpfx)ifuncmain2static: $(addprefix $(objpfx),ifuncdep2.o)
 $(objpfx)ifuncmain2picstatic: $(addprefix $(objpfx),ifuncdep2pic.o)
 
-$(objpfx)ifuncmain3: $(libdl)
 $(objpfx)ifuncmain3.out: $(objpfx)ifuncmod3.so
 
 $(objpfx)ifuncmain5: $(addprefix $(objpfx),ifuncmod5.so)
@@ -1461,19 +1373,17 @@ $(objpfx)tst-ifunc-fault-bindnow.out: $(objpfx)tst-ifunc-fault-bindnow \
    $(objpfx)ld.so
 	$(tst-ifunc-fault-script)
 
-$(objpfx)tst-unique1: $(libdl)
 $(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \
 			  $(objpfx)tst-unique1mod2.so
 
-$(objpfx)tst-unique2: $(libdl) $(objpfx)tst-unique2mod1.so
+$(objpfx)tst-unique2: $(objpfx)tst-unique2mod1.so
 $(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so
 
-$(objpfx)tst-unique3: $(libdl) $(objpfx)tst-unique3lib.so
+$(objpfx)tst-unique3: $(objpfx)tst-unique3lib.so
 $(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so
 
 $(objpfx)tst-unique4: $(objpfx)tst-unique4lib.so
 
-$(objpfx)tst-nodelete: $(libdl)
 $(objpfx)tst-nodelete.out: $(objpfx)tst-nodelete-uniquemod.so \
 			   $(objpfx)tst-nodelete-rtldmod.so \
 			   $(objpfx)tst-nodelete-zmod.so
@@ -1481,7 +1391,6 @@ $(objpfx)tst-nodelete.out: $(objpfx)tst-nodelete-uniquemod.so \
 LDFLAGS-tst-nodelete = -rdynamic
 LDFLAGS-tst-nodelete-zmod.so = -Wl,--enable-new-dtags,-z,nodelete
 
-$(objpfx)tst-nodelete2: $(libdl)
 $(objpfx)tst-nodelete2.out: $(objpfx)tst-nodelete2mod.so
 
 LDFLAGS-tst-nodelete2 = -rdynamic
@@ -1509,7 +1418,6 @@ $(objpfx)tst-initorder2-cmp.out: tst-initorder2.exp $(objpfx)tst-initorder2.out
 	cmp $^ > $@; \
 	$(evaluate-test)
 
-$(objpfx)tst-relsort1: $(libdl)
 $(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
 $(objpfx)tst-relsort1mod2.so: $(libm)
 $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
@@ -1529,13 +1437,11 @@ $(objpfx)tst-unused-dep-cmp.out: $(objpfx)tst-unused-dep.out
 	$(evaluate-test)
 
 $(objpfx)tst-audit11.out: $(objpfx)tst-auditmod11.so $(objpfx)tst-audit11mod1.so
-$(objpfx)tst-audit11: $(libdl)
 tst-audit11-ENV = LD_AUDIT=$(objpfx)tst-auditmod11.so
 $(objpfx)tst-audit11mod1.so: $(objpfx)tst-audit11mod2.so
 LDFLAGS-tst-audit11mod2.so = -Wl,--version-script=tst-audit11mod2.map,-soname,tst-audit11mod2.so
 
 $(objpfx)tst-audit12.out: $(objpfx)tst-auditmod12.so $(objpfx)tst-audit12mod1.so $(objpfx)tst-audit12mod3.so
-$(objpfx)tst-audit12: $(libdl)
 tst-audit12-ENV = LD_AUDIT=$(objpfx)tst-auditmod12.so
 $(objpfx)tst-audit12mod1.so: $(objpfx)tst-audit12mod2.so
 LDFLAGS-tst-audit12mod2.so = -Wl,--version-script=tst-audit12mod2.map
@@ -1585,13 +1491,11 @@ $(objpfx)tst-sonamemove-link: $(objpfx)tst-sonamemove-linkmod1.so
 $(objpfx)tst-sonamemove-link.out: \
   $(objpfx)tst-sonamemove-runmod1.so \
   $(objpfx)tst-sonamemove-runmod2.so
-$(objpfx)tst-sonamemove-dlopen: $(libdl)
 $(objpfx)tst-sonamemove-dlopen.out: \
   $(objpfx)tst-sonamemove-runmod1.so \
   $(objpfx)tst-sonamemove-runmod2.so
 
-$(objpfx)tst-dlmopen-dlerror: $(libdl)
-$(objpfx)tst-dlmopen-dlerror-mod.so: $(libdl) $(libsupport)
+$(objpfx)tst-dlmopen-dlerror-mod.so: $(libsupport)
 $(objpfx)tst-dlmopen-dlerror.out: $(objpfx)tst-dlmopen-dlerror-mod.so
 
 # Override -z defs, so that we can reference an undefined symbol.
@@ -1602,7 +1506,6 @@ LDFLAGS-tst-latepthreadmod.so = \
 # function this_function_is_not_defined.
 CFLAGS-tst-latepthreadmod.c += -fno-optimize-sibling-calls
 $(objpfx)tst-latepthreadmod.so: $(shared-thread-library)
-$(objpfx)tst-latepthread: $(libdl)
 $(objpfx)tst-latepthread.out: $(objpfx)tst-latepthreadmod.so
 
 # The test modules are parameterized by preprocessor macros.
@@ -1610,7 +1513,7 @@ $(patsubst %,$(objpfx)%.os,$(tst-tls-many-dynamic-modules)): \
   $(objpfx)tst-tls-manydynamic%mod.os : tst-tls-manydynamicmod.c
 	$(compile-command.c) \
 	  -DNAME=tls_global_$* -DSETTER=set_value_$* -DGETTER=get_value_$*
-$(objpfx)tst-tls-manydynamic: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls-manydynamic: $(shared-thread-library)
 $(objpfx)tst-tls-manydynamic.out: \
   $(patsubst %,$(objpfx)%.so,$(tst-tls-many-dynamic-modules))
 
@@ -1626,8 +1529,6 @@ $(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig
 		 '$(run-program-env)' > $@; \
 	$(evaluate-test)
 
-$(objpfx)tst-dlsym-error: $(libdl)
-
 # Test static linking of all the libraries we can possibly link
 # together.  Note that in some configurations this may be less than the
 # complete list of libraries we build but we try to maxmimize this list.
@@ -1661,7 +1562,6 @@ endif
 # The application depends on the DSO, and the DSO loads the plugin.
 # The plugin also depends on the DSO. This creates the circular
 # dependency via dlopen that we're testing to make sure works.
-$(objpfx)tst-nodelete-dlclose-dso.so: $(libdl)
 $(objpfx)tst-nodelete-dlclose-plugin.so: $(objpfx)tst-nodelete-dlclose-dso.so
 $(objpfx)tst-nodelete-dlclose: $(objpfx)tst-nodelete-dlclose-dso.so
 $(objpfx)tst-nodelete-dlclose.out: $(objpfx)tst-nodelete-dlclose-dso.so \
@@ -1670,7 +1570,6 @@ $(objpfx)tst-nodelete-dlclose.out: $(objpfx)tst-nodelete-dlclose-dso.so \
 tst-env-setuid-ENV = MALLOC_CHECK_=2 MALLOC_MMAP_THRESHOLD_=4096 \
 		     LD_HWCAP_MASK=0x1
 
-$(objpfx)tst-debug1: $(libdl)
 $(objpfx)tst-debug1.out: $(objpfx)tst-debug1mod1.so
 
 $(objpfx)tst-debug1mod1.so: $(objpfx)testobj1.so
@@ -1692,8 +1591,7 @@ $(objpfx)tst-absolute-zero: $(objpfx)tst-absolute-zero-lib.so
 
 # Both the main program and the DSO for tst-libc_dlvsym need to link
 # against libdl.
-$(objpfx)tst-libc_dlvsym: $(libdl)
-$(objpfx)tst-libc_dlvsym-dso.so: $(libsupport) $(libdl)
+$(objpfx)tst-libc_dlvsym-dso.so: $(libsupport)
 $(objpfx)tst-libc_dlvsym.out: $(objpfx)tst-libc_dlvsym-dso.so
 $(objpfx)tst-libc_dlvsym-static: $(common-objpfx)dlfcn/libdl.a
 tst-libc_dlvsym-static-ENV = \
@@ -1711,7 +1609,6 @@ $(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
 
 CFLAGS-tst-unwind-main.c += -funwind-tables -DUSE_PTHREADS=0
 
-$(objpfx)tst-initfinilazyfail: $(libdl)
 $(objpfx)tst-initfinilazyfail.out: \
   $(objpfx)tst-initlazyfailmod.so $(objpfx)tst-finilazyfailmod.so
 # Override -z defs, so that we can reference an undefined symbol.
@@ -1721,7 +1618,6 @@ LDFLAGS-tst-initlazyfailmod.so = \
 LDFLAGS-tst-finilazyfailmod.so = \
   -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
 
-$(objpfx)tst-dlopenfail: $(libdl)
 $(objpfx)tst-dlopenfail.out: \
   $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so
 # Order matters here.  tst-dlopenfaillinkmod.so's soname ensures a
@@ -1733,7 +1629,6 @@ $(objpfx)tst-dlopenfailmod1.so: \
   $(shared-thread-library) $(objpfx)tst-dlopenfaillinkmod.so
 LDFLAGS-tst-dlopenfaillinkmod.so = -Wl,-soname,tst-dlopenfail-missingmod.so
 $(objpfx)tst-dlopenfailmod2.so: $(objpfx)tst-dlopenfailnodelmod.so
-$(objpfx)tst-dlopenfail-2: $(libdl)
 $(objpfx)tst-dlopenfail-2.out: \
   $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so \
   $(objpfx)tst-dlopenfailmod3.so
@@ -1745,7 +1640,6 @@ LDFLAGS-tst-dlopenfailnodelmod.so = \
 # tst-dlopenfailnodelmod.so uses them for error reporting.
 LDFLAGS-tst-dlopenfail = -Wl,-E
 
-$(objpfx)tst-dlopen-nodelete-reloc: $(libdl)
 $(objpfx)tst-dlopen-nodelete-reloc.out: \
   $(objpfx)tst-dlopen-nodelete-reloc-mod1.so \
   $(objpfx)tst-dlopen-nodelete-reloc-mod2.so \
@@ -1774,8 +1668,6 @@ $(objpfx)tst-dlopen-nodelete-reloc-mod5.so: \
 LDFLAGS-tst-dlopen-nodelete-reloc-mod5.so = -Wl,-z,nodelete,--no-as-needed
 tst-dlopen-nodelete-reloc-mod5.so-no-z-defs = yes
 tst-dlopen-nodelete-reloc-mod7.so-no-z-defs = yes
-$(objpfx)tst-dlopen-nodelete-reloc-mod8.so: $(libdl)
-$(objpfx)tst-dlopen-nodelete-reloc-mod10.so: $(libdl)
 tst-dlopen-nodelete-reloc-mod11.so-no-z-defs = yes
 $(objpfx)tst-dlopen-nodelete-reloc-mod13.so: \
   $(objpfx)tst-dlopen-nodelete-reloc-mod12.so
@@ -1791,21 +1683,18 @@ $(objpfx)tst-dlopen-nodelete-reloc-mod17.so: \
 LDFLAGS-tst-dlopen-nodelete-reloc-mod17.so = -Wl,--no-as-needed
 
 $(objpfx)tst-ldconfig-ld_so_conf-update.out: $(objpfx)tst-ldconfig-ld-mod.so
-$(objpfx)tst-ldconfig-ld_so_conf-update: $(libdl)
 
 LDFLAGS-tst-filterobj-flt.so = -Wl,--filter=$(objpfx)tst-filterobj-filtee.so
 $(objpfx)tst-filterobj: $(objpfx)tst-filterobj-flt.so
-$(objpfx)tst-filterobj-dlopen: $(libdl)
 $(objpfx)tst-filterobj.out: $(objpfx)tst-filterobj-filtee.so
 $(objpfx)tst-filterobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
 
 LDFLAGS-tst-filterobj-aux.so = -Wl,--auxiliary=$(objpfx)tst-filterobj-filtee.so
 $(objpfx)tst-auxobj: $(objpfx)tst-filterobj-aux.so
-$(objpfx)tst-auxobj-dlopen: $(libdl)
 $(objpfx)tst-auxobj.out: $(objpfx)tst-filterobj-filtee.so
 $(objpfx)tst-auxobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
 
-$(objpfx)tst-single_threaded: $(objpfx)tst-single_threaded-mod1.so $(libdl)
+$(objpfx)tst-single_threaded: $(objpfx)tst-single_threaded-mod1.so
 $(objpfx)tst-single_threaded.out: \
   $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so
 $(objpfx)tst-single_threaded-static-dlopen: \
@@ -1813,13 +1702,13 @@ $(objpfx)tst-single_threaded-static-dlopen: \
 $(objpfx)tst-single_threaded-static-dlopen.out: \
   $(objpfx)tst-single_threaded-mod2.so
 $(objpfx)tst-single_threaded-pthread: \
-  $(objpfx)tst-single_threaded-mod1.so $(libdl) $(shared-thread-library)
+  $(objpfx)tst-single_threaded-mod1.so $(shared-thread-library)
 $(objpfx)tst-single_threaded-pthread.out: \
   $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so \
   $(objpfx)tst-single_threaded-mod4.so
 $(objpfx)tst-single_threaded-pthread-static: $(static-thread-library)
 
-$(objpfx)tst-tls-ie: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls-ie: $(shared-thread-library)
 $(objpfx)tst-tls-ie.out: \
   $(objpfx)tst-tls-ie-mod0.so \
   $(objpfx)tst-tls-ie-mod1.so \
@@ -1829,7 +1718,7 @@ $(objpfx)tst-tls-ie.out: \
   $(objpfx)tst-tls-ie-mod5.so \
   $(objpfx)tst-tls-ie-mod6.so
 
-$(objpfx)tst-tls-ie-dlmopen: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls-ie-dlmopen: $(shared-thread-library)
 $(objpfx)tst-tls-ie-dlmopen.out: \
   $(objpfx)tst-tls-ie-mod0.so \
   $(objpfx)tst-tls-ie-mod1.so \
@@ -1839,8 +1728,6 @@ $(objpfx)tst-tls-ie-dlmopen.out: \
   $(objpfx)tst-tls-ie-mod5.so \
   $(objpfx)tst-tls-ie-mod6.so
 
-$(objpfx)tst-tls-surplus: $(libdl)
-
 $(objpfx)argv0test.out: tst-rtld-argv0.sh $(objpfx)ld.so \
 			$(objpfx)argv0test
 	$(SHELL) $< $(objpfx)ld.so $(objpfx)argv0test \
@@ -1896,7 +1783,6 @@ $(objpfx)tst-glibc-hwcaps-prepend.out: \
 # Like tst-glibc-hwcaps-prepend, but uses a container and loads the
 # library via ld.so.cache.  Test setup is contained in the test
 # itself.
-$(objpfx)tst-glibc-hwcaps-prepend-cache: $(libdl)
 $(objpfx)tst-glibc-hwcaps-prepend-cache.out: \
   $(objpfx)tst-glibc-hwcaps-prepend-cache $(objpfx)libmarkermod1-1.so \
   $(objpfx)libmarkermod1-2.so $(objpfx)libmarkermod1-3.so
@@ -1941,12 +1827,12 @@ $(objpfx)tst-rtld-help.out: $(objpfx)ld.so
 
 # Reuses tst-tls-many-dynamic-modules
 tst-tls20mod-bad.so-no-z-defs = yes
-$(objpfx)tst-tls20: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls20: $(shared-thread-library)
 $(objpfx)tst-tls20.out: $(objpfx)tst-tls20mod-bad.so \
 			$(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
 
 # Reuses tst-tls-many-dynamic-modules
-$(objpfx)tst-tls21: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls21: $(shared-thread-library)
 $(objpfx)tst-tls21.out: $(objpfx)tst-tls21mod.so
 $(objpfx)tst-tls21mod.so: $(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
 
diff --git a/htl/Makefile b/htl/Makefile
index 4c5767b04c..8c5ad3c5de 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -215,7 +215,6 @@ $(addprefix $(objpfx), \
     $(tests-nolibpthread), \
     $(tests) $(tests-internal) $(xtests) $(test-srcs) $(tests-container))): \
 	$(objpfx)libpthread.so
-$(objpfx)tst-unload: $(libdl)
 # $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
 # since otherwise libpthread.so comes before libc.so when linking.
 $(addprefix $(objpfx), $(tests-reverse)): \
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 55c527a5f7..6eeb92f4b3 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -307,7 +307,6 @@ $(objpfx)bug-iconv1.out: $(objpfx)gconv-modules \
 			 $(addprefix $(objpfx),$(modules.so))
 $(objpfx)bug-iconv2.out: $(objpfx)gconv-modules \
 			 $(addprefix $(objpfx),$(modules.so))
-$(objpfx)bug-iconv3: $(libdl)
 $(objpfx)bug-iconv3.out: $(objpfx)gconv-modules \
 			 $(addprefix $(objpfx),$(modules.so))
 $(objpfx)bug-iconv5.out: $(objpfx)gconv-modules \
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 4274eddbc9..711bbb0f12 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -19,16 +19,6 @@
 extern int __libc_argc attribute_hidden;
 extern char **__libc_argv attribute_hidden;
 
-#ifdef SHARED
-/* Locally stored program arguments.  */
-extern int __dlfcn_argc attribute_hidden;
-extern char **__dlfcn_argv attribute_hidden;
-#else
-# define __dlfcn_argc __libc_argc
-# define __dlfcn_argv __libc_argv
-#endif
-
-
 /* Now define the internal interfaces.  */
 
 /* Use RTLD_NOW here because:
@@ -101,14 +91,6 @@ libc_hidden_proto (_dl_vsym)
 extern int _dlerror_run (void (*operate) (void *), void *args);
 libc_hidden_proto (_dlerror_run)
 
-#ifdef SHARED
-# define DL_CALLER_DECL /* Nothing */
-# define DL_CALLER RETURN_ADDRESS (0)
-#else
-# define DL_CALLER_DECL , void *dl_caller
-# define DL_CALLER dl_caller
-#endif
-
 struct dlfcn_hook
 {
   void *(*dlopen) (const char *file, int mode, void *dl_caller);
diff --git a/malloc/Makefile b/malloc/Makefile
index 857e2ebbd9..149dc7471f 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -244,9 +244,6 @@ $(objpfx)memusage: memusage.sh
 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
 
 
-# The implementation uses `dlsym'
-$(objpfx)libmemusage.so: $(libdl)
-
 # Extra dependencies
 $(foreach o,$(all-object-suffixes),$(objpfx)malloc$(o)): arena.c hooks.c
 
diff --git a/misc/Makefile b/misc/Makefile
index 38dad737f2..c103b6bff4 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -158,5 +158,3 @@ tst-allocate_once-ENV = MALLOC_TRACE=$(objpfx)tst-allocate_once.mtrace
 $(objpfx)tst-allocate_once-mem.out: $(objpfx)tst-allocate_once.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-allocate_once.mtrace > $@; \
 	$(evaluate-test)
-
-$(objpfx)tst-gethostid: $(libdl)
diff --git a/nptl/Makefile b/nptl/Makefile
index 9a5628b751..f7d7a2c7e2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -497,7 +497,6 @@ $(objpfx)tst-stack3-mem.out: $(objpfx)tst-stack3.out
 	$(evaluate-test)
 generated += tst-stack3-mem.out tst-stack3.mtrace
 
-$(objpfx)tst-stack4: $(libdl)
 tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \
 				   11 12 13 14 15 16 17 18 19; do \
 			    for j in 0 1 2 3 4 5 6 7 8 9 10 \
@@ -513,11 +512,9 @@ clean:
 $(objpfx)tst-cleanup4: $(objpfx)tst-cleanup4aux.o
 $(objpfx)tst-cleanupx4: $(objpfx)tst-cleanupx4aux.o
 
-$(objpfx)tst-tls3: $(libdl)
 LDFLAGS-tst-tls3 = -rdynamic
 $(objpfx)tst-tls3.out: $(objpfx)tst-tls3mod.so
 
-$(objpfx)tst-tls3-malloc: $(libdl)
 LDFLAGS-tst-tls3-malloc = -rdynamic
 $(objpfx)tst-tls3-malloc.out: $(objpfx)tst-tls3mod.so
 
@@ -535,8 +532,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
 	$(evaluate-test)
 endif
 
-$(objpfx)tst-dlsym1: $(libdl)
-
 ifeq (yes,$(build-shared))
 librt = $(common-objpfx)rt/librt.so
 else
@@ -550,14 +545,12 @@ LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
 LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
 
 ifeq ($(build-shared),yes)
-$(objpfx)tst-unload: $(libdl)
 
 generated += multidir.mk tst-tls6.out
 endif
 
 tst-exec4-ARGS = $(host-test-program-cmd)
 
-$(objpfx)tst-execstack: $(libdl)
 $(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
 LDFLAGS-tst-execstack = -Wl,-z,noexecstack
 CFLAGS-tst-execstack-mod.c += -Wno-trampolines
diff --git a/nss/Makefile b/nss/Makefile
index 71fbe583bf..9682a31e20 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -181,10 +181,5 @@ ifeq (yes,$(have-thread-library))
 $(objpfx)tst-cancel-getpwuid_r: $(shared-thread-library)
 endif
 
-$(objpfx)tst-nss-files-hosts-erange: $(libdl)
-$(objpfx)tst-nss-files-hosts-multi: $(libdl)
-$(objpfx)tst-nss-files-hosts-getent: $(libdl)
-$(objpfx)tst-nss-files-alias-leak: $(libdl)
 $(objpfx)tst-nss-files-alias-leak.out: $(objpfx)/libnss_files.so
-$(objpfx)tst-nss-files-alias-truncated: $(libdl)
 $(objpfx)tst-nss-files-alias-truncated.out: $(objpfx)/libnss_files.so
diff --git a/resolv/Makefile b/resolv/Makefile
index fb19c93026..3fbc320ee1 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -149,7 +149,7 @@ $(objpfx)libnss_dns.so: $(objpfx)libresolv.so
 # The asynchronous name lookup code needs the thread library.
 $(objpfx)libanl.so: $(shared-thread-library)
 
-$(objpfx)tst-res_hconf_reorder: $(libdl) $(shared-thread-library)
+$(objpfx)tst-res_hconf_reorder: $(shared-thread-library)
 tst-res_hconf_reorder-ENV = RESOLV_REORDER=on
 
 $(objpfx)tst-leaks: $(objpfx)libresolv.so
@@ -173,12 +173,11 @@ $(objpfx)mtrace-tst-resolv-res_ninit.out: $(objpfx)tst-resolv-res_ninit.out
 
 $(objpfx)tst-bug18665-tcp: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-bug18665: $(objpfx)libresolv.so $(shared-thread-library)
-$(objpfx)tst-resolv-ai_idn: \
-  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
+$(objpfx)tst-resolv-ai_idn: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-ai_idn-latin1: \
-  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
+  $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-ai_idn-nolibidn2: \
-  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
+  $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-ai_idn.out: $(gen-locales)
 $(objpfx)tst-resolv-ai_idn-latin1.out: $(gen-locales)
 $(objpfx)tst-resolv-ai_idn-nolibidn2.out: \
@@ -187,22 +186,20 @@ $(objpfx)tst-resolv-basic: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-binary: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-edns: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-network: $(objpfx)libresolv.so $(shared-thread-library)
-$(objpfx)tst-resolv-res_init: $(libdl) $(objpfx)libresolv.so
+$(objpfx)tst-resolv-res_init: $(objpfx)libresolv.so
 $(objpfx)tst-resolv-res_init-multi: $(objpfx)libresolv.so \
   $(shared-thread-library)
-$(objpfx)tst-resolv-res_init-thread: $(libdl) $(objpfx)libresolv.so \
+$(objpfx)tst-resolv-res_init-thread: $(objpfx)libresolv.so \
   $(shared-thread-library)
 $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
-$(objpfx)tst-resolv-threads: \
-  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
+$(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \
   $(static-thread-library)
-$(objpfx)tst-resolv-canonname: \
-  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
+$(objpfx)tst-resolv-canonname: $(objpfx)libresolv.so $(shared-thread-library)
 $(objpfx)tst-resolv-trustad: $(objpfx)libresolv.so $(shared-thread-library)
 
 $(objpfx)tst-ns_name: $(objpfx)libresolv.so
diff --git a/stdlib/Makefile b/stdlib/Makefile
index ec30011b4c..7c15549caf 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -106,7 +106,7 @@ LDLIBS-test-cxa_atexit-race2 = $(shared-thread-library)
 LDLIBS-test-on_exit-race = $(shared-thread-library)
 LDLIBS-tst-canon-bz26341 = $(shared-thread-library)
 
-LDLIBS-test-dlclose-exit-race = $(shared-thread-library) $(libdl)
+LDLIBS-test-dlclose-exit-race = $(shared-thread-library)
 LDFLAGS-test-dlclose-exit-race = $(LDFLAGS-rdynamic)
 LDLIBS-test-dlclose-exit-race-helper.so = $(libsupport) $(shared-thread-library)
 
@@ -233,10 +233,10 @@ $(objpfx)tst-strtod-nan-sign: $(libm)
 tst-tls-atexit-lib.so-no-z-defs = yes
 test-dlclose-exit-race-helper.so-no-z-defs = yes
 
-$(objpfx)tst-tls-atexit: $(shared-thread-library) $(libdl)
+$(objpfx)tst-tls-atexit: $(shared-thread-library)
 $(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so
 
-$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library) $(libdl)
+$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library)
 $(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so
 
 $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
@@ -244,5 +244,3 @@ $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
 		 '$(run-program-env)' '$(test-program-prefix-after-env)' \
 		 $(common-objpfx)stdlib/; \
 	$(evaluate-test)
-
-$(objpfx)tst-makecontext: $(libdl)
diff --git a/string/Makefile b/string/Makefile
index d17626ed39..f0fce2a0b8 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -80,7 +80,6 @@ xtests = tst-strcoll-overflow
 # This test needs libdl.
 ifeq (yes,$(build-shared))
 tests += test-strerror-errno
-LDLIBS-test-strerror-errno = $(libdl)
 endif
 
 ifeq ($(run-built-tests),yes)
diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile
index 150518bc6d..d770e59fc9 100644
--- a/sysdeps/mips/Makefile
+++ b/sysdeps/mips/Makefile
@@ -64,7 +64,6 @@ fpabi_list=$(subst $(space),$(comma),$(patsubst tst-abi-%mod,o_%,\
 CPPFLAGS-tst-abi-interlink.c += -DFPABI_LIST=$(fpabi_list)
 CPPFLAGS-tst-abi-interlink.c += -DFPABI_COUNT=$(words $(fpabi-modules-names))
 CPPFLAGS-tst-abi-interlink.c += -DFPABI_NATIVE=o_fp$(o32-fpabi)
-$(objpfx)tst-abi-interlink: $(libdl)
 $(objpfx)tst-abi-interlink.out: $(patsubst %,$(objpfx)%.so,\
 					   $(fpabi-modules-names))
 endif
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index bca642f438..e4690a7bc4 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -203,7 +203,7 @@ CFLAGS-tst-pt-align3.c += $(stack-align-test-flags)
 
 tst-umask1-ARGS = $(objpfx)tst-umask1.temp
 
-$(objpfx)tst-atfork2: $(libdl) $(shared-thread-library)
+$(objpfx)tst-atfork2: $(shared-thread-library)
 LDFLAGS-tst-atfork2 = -rdynamic
 tst-atfork2-ENV = MALLOC_TRACE=$(objpfx)tst-atfork2.mtrace
 $(objpfx)tst-atfork2mod.so: $(shared-thread-library)
@@ -236,7 +236,7 @@ LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
 $(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
 		    $(shared-thread-library)
 
-$(objpfx)tst-pt-tls4: $(libdl) $(shared-thread-library)
+$(objpfx)tst-pt-tls4: $(shared-thread-library)
 $(objpfx)tst-pt-tls4.out: $(objpfx)tst-tls4moda.so $(objpfx)tst-tls4modb.so
 
 generated += tst-atfork2.mtrace
@@ -260,7 +260,7 @@ CFLAGS-tst-oncex4.c += -fexceptions
 CFLAGS-tst-oncey3.c += -fno-exceptions -fno-asynchronous-unwind-tables
 CFLAGS-tst-oncey4.c += -fno-exceptions -fno-asynchronous-unwind-tables
 
-$(objpfx)tst-join7: $(libdl) $(shared-thread-library)
+$(objpfx)tst-join7: $(shared-thread-library)
 $(objpfx)tst-join7.out: $(objpfx)tst-join7mod.so
 $(objpfx)tst-join7mod.so: $(shared-thread-library)
 LDFLAGS-tst-join7mod.so = -Wl,-soname,tst-join7mod.so
diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
index aa016f7b5a..346ec491b3 100644
--- a/sysdeps/x86/Makefile
+++ b/sysdeps/x86/Makefile
@@ -51,7 +51,6 @@ CFLAGS-tst-isa-level-mod-1-v4.c += -DINCLUDE_X86_ISA_LEVEL \
 				   -DISA_LEVEL=0xf \
 				   -march=x86-64
 
-$(objpfx)tst-isa-level-1: $(libdl)
 $(objpfx)tst-isa-level-1.out: $(objpfx)tst-isa-level-mod-1-baseline.so \
 			      $(objpfx)tst-isa-level-mod-1-v2.so \
 			      $(objpfx)tst-isa-level-mod-1-v3.so \
@@ -162,38 +161,30 @@ $(objpfx)tst-cet-legacy-1: $(objpfx)tst-cet-legacy-mod-1.so \
 		       $(objpfx)tst-cet-legacy-mod-2.so
 $(objpfx)tst-cet-legacy-1a: $(objpfx)tst-cet-legacy-mod-1.so \
 		       $(objpfx)tst-cet-legacy-mod-2.so
-$(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
+$(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so
 $(objpfx)tst-cet-legacy-2.out: $(objpfx)tst-cet-legacy-mod-1.so
-$(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
+$(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so
 $(objpfx)tst-cet-legacy-2a.out: $(objpfx)tst-cet-legacy-mod-1.so
-$(objpfx)tst-cet-legacy-4: $(libdl)
 $(objpfx)tst-cet-legacy-4.out: $(objpfx)tst-cet-legacy-mod-4.so
-$(objpfx)tst-cet-legacy-5a: $(libdl)
 $(objpfx)tst-cet-legacy-5a.out: $(objpfx)tst-cet-legacy-mod-5a.so \
 				$(objpfx)tst-cet-legacy-mod-5b.so
 $(objpfx)tst-cet-legacy-mod-5a.so: $(objpfx)tst-cet-legacy-mod-5c.so
 $(objpfx)tst-cet-legacy-mod-5b.so: $(objpfx)tst-cet-legacy-mod-5c.so
-$(objpfx)tst-cet-legacy-6a: $(libdl)
 $(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \
 				$(objpfx)tst-cet-legacy-mod-6b.so
 $(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so
 $(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so
 LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete
 ifneq (no,$(have-tunables))
-$(objpfx)tst-cet-legacy-4a: $(libdl)
 $(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so
 tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive
-$(objpfx)tst-cet-legacy-4b: $(libdl)
 $(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so
 tst-cet-legacy-4b-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=on
-$(objpfx)tst-cet-legacy-4c: $(libdl)
 $(objpfx)tst-cet-legacy-4c.out: $(objpfx)tst-cet-legacy-mod-4.so
 tst-cet-legacy-4c-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=off
-$(objpfx)tst-cet-legacy-5b: $(libdl)
 $(objpfx)tst-cet-legacy-5b.out: $(objpfx)tst-cet-legacy-mod-5a.so \
 				$(objpfx)tst-cet-legacy-mod-5b.so
 tst-cet-legacy-5b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
-$(objpfx)tst-cet-legacy-6b: $(libdl)
 $(objpfx)tst-cet-legacy-6b.out: $(objpfx)tst-cet-legacy-mod-6a.so \
 				$(objpfx)tst-cet-legacy-mod-6b.so
 tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (13 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 18:09   ` Adhemerval Zanella
  2021-05-31 14:12 ` [PATCH 16/16] dlfcn: Rework static dlopen hooks Florian Weimer
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

The test appears to use _dlfcn_hook@@GLIBC_PRIVATE as a way to
test dlvsym without having to know the appropriate symbol version.
With <first-versions.h>, we can use a public symbol and the symbol
version at which it was defined first.
---
 dlfcn/modstatic2.c | 10 +++++++++-
 dlfcn/tststatic2.c | 10 +++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/dlfcn/modstatic2.c b/dlfcn/modstatic2.c
index 9b5aae8b9f..02d561a7b0 100644
--- a/dlfcn/modstatic2.c
+++ b/dlfcn/modstatic2.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <gnu/lib-names.h>
+#include <first-versions.h>
 
 int test (FILE *out, int a);
 
@@ -117,11 +118,18 @@ test (FILE *out, int a)
       exit (1);
     }
 
-  if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
+  /* _exit is very unlikely to receive a second symbol version.  */
+  void *exit_ptr = dlvsym (handle2, "_exit", FIRST_VERSION_libc__exit_STRING);
+  if (exit_ptr == NULL)
     {
       fprintf (out, "dlvsym: %s\n", dlerror ());
       exit (1);
     }
+  if (exit_ptr != dlsym (handle2, "_exit"))
+    {
+      fprintf (out, "dlvsym for _exit does not match dlsym\n");
+      exit (1);
+    }
 
   void *(*dlsymfn) (void *, const char *);
   dlsymfn = dlsym (handle2, "dlsym");
diff --git a/dlfcn/tststatic2.c b/dlfcn/tststatic2.c
index f8cd5a964b..5d8a7831b2 100644
--- a/dlfcn/tststatic2.c
+++ b/dlfcn/tststatic2.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <gnu/lib-names.h>
+#include <first-versions.h>
 
 static int
 do_test (void)
@@ -115,11 +116,18 @@ do_test (void)
       exit (1);
     }
 
-  if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
+  /* _exit is very unlikely to receive a second symbol version.  */
+  void *exit_ptr = dlvsym (handle2, "_exit", FIRST_VERSION_libc__exit_STRING);
+  if (exit_ptr == NULL)
     {
       printf ("dlvsym: %s\n", dlerror ());
       exit (1);
     }
+  if (exit_ptr != dlsym (handle2, "_exit"))
+    {
+      printf ("dlvsym for _exit does not match dlsym\n");
+      exit (1);
+    }
 
   void *(*dlsymfn) (void *, const char *);
   dlsymfn = dlsym (handle2, "dlsym");
-- 
2.31.1



^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 16/16] dlfcn: Rework static dlopen hooks
  2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
                   ` (14 preceding siblings ...)
  2021-05-31 14:12 ` [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2 Florian Weimer
@ 2021-05-31 14:12 ` Florian Weimer
  2021-06-02 19:18   ` Adhemerval Zanella
  15 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-05-31 14:12 UTC (permalink / raw)
  To: libc-alpha

Consolidate all hooks structures into a single one.  There are
no static dlopen ABI concerns because glibc 2.34 already comes
with substantial ABI-incompatible chagnes in this area.  (Static
dlopen requires the exact same dynamic glibc version that was used
for static linking.)

The new approach uses a pointer to the hooks structure into
_rtld_global_ro and initalizes it in __rtld_static_init.  This avoids
a back-and-forth with various callback functions.
---
 dlfcn/dladdr.c             |  2 +-
 dlfcn/dladdr1.c            |  2 +-
 dlfcn/dlclose.c            |  2 +-
 dlfcn/dlerror.c            | 32 +----------------
 dlfcn/dlinfo.c             |  2 +-
 dlfcn/dlmopen.c            | 10 ++----
 dlfcn/dlopen.c             | 10 ++----
 dlfcn/dlopenold.c          |  2 +-
 dlfcn/dlsym.c              |  2 +-
 dlfcn/dlvsym.c             |  3 +-
 elf/Versions               |  1 -
 elf/dl-libc.c              | 73 ++++----------------------------------
 elf/rtld_static_init.c     | 18 ++++++++++
 include/dlfcn.h            | 31 ++++++++--------
 sysdeps/generic/ldsodefs.h |  3 ++
 15 files changed, 54 insertions(+), 139 deletions(-)

diff --git a/dlfcn/dladdr.c b/dlfcn/dladdr.c
index 3ef1b7f0b6..1cc305f0c4 100644
--- a/dlfcn/dladdr.c
+++ b/dlfcn/dladdr.c
@@ -25,7 +25,7 @@ __dladdr (const void *address, Dl_info *info)
 {
 #ifdef SHARED
   if (!rtld_active ())
-    return _dlfcn_hook->dladdr (address, info);
+    return GLRO (dl_dlfcn_hook)->dladdr (address, info);
 #endif
   return _dl_addr (address, info, NULL, NULL);
 }
diff --git a/dlfcn/dladdr1.c b/dlfcn/dladdr1.c
index 203d6398e4..78560dbac2 100644
--- a/dlfcn/dladdr1.c
+++ b/dlfcn/dladdr1.c
@@ -25,7 +25,7 @@ __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
 {
 #ifdef SHARED
   if (!rtld_active ())
-    return _dlfcn_hook->dladdr1 (address, info, extra, flags);
+    return GLRO (dl_dlfcn_hook)->dladdr1 (address, info, extra, flags);
 #endif
 
   switch (flags)
diff --git a/dlfcn/dlclose.c b/dlfcn/dlclose.c
index 4d5d307ab1..6a013a81bb 100644
--- a/dlfcn/dlclose.c
+++ b/dlfcn/dlclose.c
@@ -25,7 +25,7 @@ __dlclose (void *handle)
 {
 #ifdef SHARED
   if (!rtld_active ())
-    return _dlfcn_hook->dlclose (handle);
+    return GLRO (dl_dlfcn_hook)->dlclose (handle);
 #endif
 
   return _dlerror_run (GLRO (dl_close), handle) ? -1 : 0;
diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c
index 3df8602f4d..d0194a7cef 100644
--- a/dlfcn/dlerror.c
+++ b/dlfcn/dlerror.c
@@ -33,7 +33,7 @@ __dlerror (void)
 {
 # ifdef SHARED
   if (!rtld_active ())
-    return _dlfcn_hook->dlerror ();
+    return GLRO (dl_dlfcn_hook)->dlerror ();
 # endif
 
   struct dl_action_result *result = __libc_dlerror_result;
@@ -197,33 +197,3 @@ _dlerror_run (void (*operate) (void *), void *args)
     }
 }
 libc_hidden_def (_dlerror_run)
-
-#ifdef SHARED
-struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon));
-libc_hidden_data_def (_dlfcn_hook)
-
-#else /* !SHARED */
-
-static struct dlfcn_hook _dlfcn_hooks =
-  {
-    .dlopen = __dlopen,
-    .dlclose = __dlclose,
-    .dlsym = __dlsym,
-    .dlvsym = __dlvsym,
-    .dlerror = __dlerror,
-    .dladdr = __dladdr,
-    .dladdr1 = __dladdr1,
-    .dlinfo = __dlinfo,
-    .dlmopen = __dlmopen
-  };
-
-void
-__libc_register_dlfcn_hook (struct link_map *map)
-{
-  struct dlfcn_hook **hook;
-
-  hook = (struct dlfcn_hook **) __libc_dlsym_private (map, "_dlfcn_hook");
-  if (hook != NULL)
-    *hook = &_dlfcn_hooks;
-}
-#endif /* !SHARED */
diff --git a/dlfcn/dlinfo.c b/dlfcn/dlinfo.c
index 15fcbc5dc1..c6f9a1da09 100644
--- a/dlfcn/dlinfo.c
+++ b/dlfcn/dlinfo.c
@@ -90,7 +90,7 @@ int
 ___dlinfo (void *handle, int request, void *arg)
 {
   if (!rtld_active ())
-    return _dlfcn_hook->dlinfo (handle, request, arg);
+    return GLRO (dl_dlfcn_hook)->dlinfo (handle, request, arg);
   else
     return dlinfo_implementation (handle, request, arg);
 }
diff --git a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
index ae42814bbf..c171c8953d 100644
--- a/dlfcn/dlmopen.c
+++ b/dlfcn/dlmopen.c
@@ -81,7 +81,7 @@ void *
 ___dlmopen (Lmid_t nsid, const char *file, int mode)
 {
   if (!rtld_active ())
-    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
+    return GLRO (dl_dlfcn_hook)->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
   else
     return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
 }
@@ -101,13 +101,7 @@ __dlmopen (Lmid_t nsid, const char *file, int mode, void *dl_caller)
 void *
 ___dlmopen (Lmid_t nsid, const char *file, int mode)
 {
-  struct link_map *l = __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
-  if (l != NULL)
-    {
-      __libc_register_dl_open_hook (l);
-      __libc_register_dlfcn_hook (l);
-    }
-  return l;
+  return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
 }
 weak_alias (___dlmopen, dlmopen)
 static_link_warning (dlmopen)
diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c
index afdc113efb..e04b374b82 100644
--- a/dlfcn/dlopen.c
+++ b/dlfcn/dlopen.c
@@ -76,7 +76,7 @@ void *
 ___dlopen (const char *file, int mode)
 {
   if (!rtld_active ())
-    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
+    return GLRO (dl_dlfcn_hook)->dlopen (file, mode, RETURN_ADDRESS (0));
   else
     return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
 }
@@ -96,13 +96,7 @@ __dlopen (const char *file, int mode, void *dl_caller)
 void *
 ___dlopen (const char *file, int mode)
 {
-  struct link_map *l = __dlopen (file, mode, RETURN_ADDRESS (0));
-  if (l != NULL)
-    {
-      __libc_register_dl_open_hook (l);
-      __libc_register_dlfcn_hook (l);
-    }
-  return l;
+  return __dlopen (file, mode, RETURN_ADDRESS (0));
 }
 weak_alias (___dlopen, dlopen)
 static_link_warning (dlopen)
diff --git a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
index 0fe5f24cc5..9115501ac1 100644
--- a/dlfcn/dlopenold.c
+++ b/dlfcn/dlopenold.c
@@ -71,7 +71,7 @@ __dlopen_nocheck (const char *file, int mode)
   args.mode = mode;
 
   if (!rtld_active ())
-    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
+    return GLRO (dl_dlfcn_hook)->dlopen (file, mode, RETURN_ADDRESS (0));
 
   return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
 }
diff --git a/dlfcn/dlsym.c b/dlfcn/dlsym.c
index 6b03b7b7ab..43044cf7bb 100644
--- a/dlfcn/dlsym.c
+++ b/dlfcn/dlsym.c
@@ -63,7 +63,7 @@ void *
 ___dlsym (void *handle, const char *name)
 {
   if (!rtld_active ())
-    return _dlfcn_hook->dlsym (handle, name, RETURN_ADDRESS (0));
+    return GLRO (dl_dlfcn_hook)->dlsym (handle, name, RETURN_ADDRESS (0));
   else
     return dlsym_implementation (handle, name, RETURN_ADDRESS (0));
 }
diff --git a/dlfcn/dlvsym.c b/dlfcn/dlvsym.c
index de6b340647..9b76f9afa5 100644
--- a/dlfcn/dlvsym.c
+++ b/dlfcn/dlvsym.c
@@ -66,7 +66,8 @@ void *
 ___dlvsym (void *handle, const char *name, const char *version)
 {
   if (!rtld_active ())
-    return _dlfcn_hook->dlvsym (handle, name, version, RETURN_ADDRESS (0));
+    return GLRO (dl_dlfcn_hook)->dlvsym (handle, name, version,
+					 RETURN_ADDRESS (0));
   else
     return dlvsym_implementation (handle, name, version, RETURN_ADDRESS (0));
 }
diff --git a/elf/Versions b/elf/Versions
index be88c48e6d..a12d64e8db 100644
--- a/elf/Versions
+++ b/elf/Versions
@@ -23,7 +23,6 @@ libc {
   GLIBC_PRIVATE {
     # functions used in other libraries
     _dl_addr;
-    _dl_open_hook; _dl_open_hook2;
     _dl_sym; _dl_vsym;
     __libc_dlclose; __libc_dlopen_mode; __libc_dlsym; __libc_dlvsym;
     __libc_early_init;
diff --git a/elf/dl-libc.c b/elf/dl-libc.c
index ed551f6e56..3ac2a0645f 100644
--- a/elf/dl-libc.c
+++ b/elf/dl-libc.c
@@ -126,32 +126,7 @@ do_dlclose (void *ptr)
   GLRO(dl_close) ((struct link_map *) ptr);
 }
 
-/* This code is to support __libc_dlopen from __libc_dlopen'ed shared
-   libraries.  We need to ensure the statically linked __libc_dlopen
-   etc. functions are used instead of the dynamically loaded.  */
-struct dl_open_hook
-{
-  void *(*dlopen_mode) (const char *name, int mode);
-  void *(*dlsym) (void *map, const char *name);
-  int (*dlclose) (void *map);
-  void *(*dlvsym) (void *map, const char *name, const char *version);
-};
-
-#ifdef SHARED
-extern struct dl_open_hook *_dl_open_hook;
-libc_hidden_proto (_dl_open_hook);
-struct dl_open_hook *_dl_open_hook __attribute__ ((nocommon));
-libc_hidden_data_def (_dl_open_hook);
-
-/* The dlvsym member was added retroactively to struct dl_open_hook.
-   Static applications which have it will set _dl_open_hook2 in
-   addition to _dl_open_hook.  */
-extern struct dl_open_hook *_dl_open_hook2;
-libc_hidden_proto (_dl_open_hook2);
-struct dl_open_hook *_dl_open_hook2 __attribute__ ((nocommon));
-libc_hidden_data_def (_dl_open_hook2);
-
-#else
+#ifndef SHARED
 static void
 do_dlsym_private (void *ptr)
 {
@@ -169,14 +144,6 @@ do_dlsym_private (void *ptr)
 				args->map->l_scope, &vers, 0, 0, NULL);
   args->loadbase = l;
 }
-
-static struct dl_open_hook _dl_open_hook =
-  {
-    .dlopen_mode = __libc_dlopen_mode,
-    .dlsym = __libc_dlsym,
-    .dlclose = __libc_dlclose,
-    .dlvsym = __libc_dlvsym,
-  };
 #endif
 
 /* ... and these functions call dlerror_run. */
@@ -191,16 +158,9 @@ __libc_dlopen_mode (const char *name, int mode)
 
 #ifdef SHARED
   if (!rtld_active ())
-    return _dl_open_hook->dlopen_mode (name, mode);
-  return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);
-#else
-  if (dlerror_run (do_dlopen, &args))
-    return NULL;
-
-  __libc_register_dl_open_hook (args.map);
-  __libc_register_dlfcn_hook (args.map);
-  return (void *) args.map;
+    return GLRO (dl_dlfcn_hook)->libc_dlopen_mode (name, mode);
 #endif
+  return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);
 }
 libc_hidden_def (__libc_dlopen_mode)
 
@@ -216,21 +176,6 @@ __libc_dlsym_private (struct link_map *map, const char *name)
     return DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref);
   return NULL;
 }
-
-void
-__libc_register_dl_open_hook (struct link_map *map)
-{
-  struct dl_open_hook **hook;
-
-  hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook");
-  if (hook != NULL)
-    *hook = &_dl_open_hook;
-
-  /* For dlvsym support.  */
-  hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook2");
-  if (hook != NULL)
-    *hook = &_dl_open_hook;
-}
 #endif
 
 void *
@@ -242,7 +187,7 @@ __libc_dlsym (void *map, const char *name)
 
 #ifdef SHARED
   if (!rtld_active ())
-    return _dl_open_hook->dlsym (map, name);
+    return GLRO (dl_dlfcn_hook)->libc_dlsym (map, name);
 #endif
   return (dlerror_run (do_dlsym, &args) ? NULL
 	  : (void *) (DL_SYMBOL_ADDRESS (args.loadbase, args.ref)));
@@ -257,13 +202,7 @@ __libc_dlvsym (void *map, const char *name, const char *version)
 {
 #ifdef SHARED
   if (!rtld_active ())
-    {
-      /* The static application is too old and does not provide the
-	 dlvsym hook.  */
-      if (_dl_open_hook2 == NULL)
-	return NULL;
-      return _dl_open_hook2->dlvsym (map, name, version);
-    }
+    return GLRO (dl_dlfcn_hook)->libc_dlvsym (map, name, version);
 #endif
 
   struct do_dlvsym_args args;
@@ -287,7 +226,7 @@ __libc_dlclose (void *map)
 {
 #ifdef SHARED
   if (!rtld_active ())
-    return _dl_open_hook->dlclose (map);
+    return GLRO (dl_dlfcn_hook)->libc_dlclose (map);
 #endif
   return dlerror_run (do_dlclose, map);
 }
diff --git a/elf/rtld_static_init.c b/elf/rtld_static_init.c
index 42efecfbff..3f8abb6800 100644
--- a/elf/rtld_static_init.c
+++ b/elf/rtld_static_init.c
@@ -25,6 +25,23 @@
 
 #include <rtld_static_init.h>
 
+static const struct dlfcn_hook _dlfcn_hook =
+  {
+    .dlopen = __dlopen,
+    .dlclose = __dlclose,
+    .dlsym = __dlsym,
+    .dlvsym = __dlvsym,
+    .dlerror = __dlerror,
+    .dladdr = __dladdr,
+    .dladdr1 = __dladdr1,
+    .dlinfo = __dlinfo,
+    .dlmopen = __dlmopen,
+    .libc_dlopen_mode = __libc_dlopen_mode,
+    .libc_dlsym = __libc_dlsym,
+    .libc_dlvsym = __libc_dlvsym,
+    .libc_dlclose = __libc_dlclose,
+  };
+
 void
 __rtld_static_init (struct link_map *map)
 {
@@ -45,6 +62,7 @@ __rtld_static_init (struct link_map *map)
   extern __typeof (dl->_dl_clktck) _dl_clktck attribute_hidden;
   dl->_dl_clktck = _dl_clktck;
 #endif
+  dl->_dl_dlfcn_hook = &_dlfcn_hook;
   extern __typeof (dl->_dl_hwcap) _dl_hwcap attribute_hidden;
   dl->_dl_hwcap = _dl_hwcap;
   extern __typeof (dl->_dl_hwcap2) _dl_hwcap2 attribute_hidden;
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 711bbb0f12..d4440c567e 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -91,8 +91,12 @@ libc_hidden_proto (_dl_vsym)
 extern int _dlerror_run (void (*operate) (void *), void *args);
 libc_hidden_proto (_dlerror_run)
 
+/* This structure is used to make the outer (statically linked)
+   implementation of dlopen and related functions to the inner libc
+   after static dlopen, via the GLRO (dl_dlfcn_hook) pointer.  */
 struct dlfcn_hook
 {
+  /* Public interfaces.  */
   void *(*dlopen) (const char *file, int mode, void *dl_caller);
   int (*dlclose) (void *handle);
   void *(*dlsym) (void *handle, const char *name, void *dl_caller);
@@ -104,15 +108,17 @@ struct dlfcn_hook
 		  void **extra_info, int flags);
   int (*dlinfo) (void *handle, int request, void *arg);
   void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller);
-  void *pad[4];
-};
 
-extern struct dlfcn_hook *_dlfcn_hook;
-libc_hidden_proto (_dlfcn_hook)
+  /* Internal interfaces.  */
+  void* (*libc_dlopen_mode)  (const char *__name, int __mode);
+  void* (*libc_dlsym)  (void *map, const char *name);
+  void* (*libc_dlvsym)  (void *map, const char *name, const char *version);
+  int   (*libc_dlclose) (void *map);
+};
 
-/* Note: These prototypes are for initializing _dflcn_hook in static
-   libraries.  Internal calls in glibc should use the __libc_dl*
-   functions defined in elf/dl-libc.c instead.  */
+/* Note: These prototypes are for initializing _dlfcn_hook in static
+   builds; see __rtld_static_init.  Internal calls in glibc should use
+   the __libc_dl* functions defined in elf/dl-libc.c instead.  */
 
 extern void *__dlopen (const char *file, int mode, void *caller);
 extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
@@ -125,16 +131,7 @@ extern int __dladdr (const void *address, Dl_info *info);
 extern int __dladdr1 (const void *address, Dl_info *info,
 		      void **extra_info, int flags);
 extern int __dlinfo (void *handle, int request, void *arg);
-
-#ifndef SHARED
-struct link_map;
-extern void * __libc_dlsym_private (struct link_map *map, const char *name)
-     attribute_hidden;
-extern void __libc_register_dl_open_hook (struct link_map *map)
-     attribute_hidden;
-extern void __libc_register_dlfcn_hook (struct link_map *map)
-     attribute_hidden;
-#endif
+extern char *__dlerror (void);
 
 #endif
 #endif
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index e383aa1dc3..176394de4d 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -687,6 +687,9 @@ struct rtld_global_ro
   int (*_dl_discover_osversion) (void);
 #endif
 
+  /* Dynamic linker operations used after static dlopen.  */
+  const struct dlfcn_hook *_dl_dlfcn_hook;
+
   /* List of auditing interfaces.  */
   struct audit_ifaces *_dl_audit;
   unsigned int _dl_naudit;
-- 
2.31.1


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf
  2021-05-31 14:11 ` [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf Florian Weimer
@ 2021-05-31 19:42   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-05-31 19:42 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> The symbol has never been exported, so no compatibility symbol is
> needed.  Removing this file prevents ld from creation an exported
> symbol in case GLIBC_2_0 expands to a symbol version which
> does not have a local: *; directive in the symbol version map file.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  libio/libio.h                               |  2 --
>  stdio-common/Makefile                       |  2 +-
>  stdio-common/iovfwscanf.c                   | 38 ---------------------
>  sysdeps/ieee754/ldbl-128ibm-compat/Makefile |  1 -
>  4 files changed, 1 insertion(+), 42 deletions(-)
>  delete mode 100644 stdio-common/iovfwscanf.c
> 
> diff --git a/libio/libio.h b/libio/libio.h
> index 511b39457f..98d526dec7 100644
> --- a/libio/libio.h
> +++ b/libio/libio.h
> @@ -254,8 +254,6 @@ weak_extern (_IO_stdin_used);
>         __result = _IO_fwide (__fp, __result);				      \
>       __result; })
>  
> -extern int _IO_vfwscanf (FILE * __restrict, const wchar_t * __restrict,
> -			 __gnuc_va_list, int *__restrict);
>  extern __ssize_t _IO_wpadn (FILE *, wint_t, __ssize_t);
>  extern void _IO_free_wbackup_area (FILE *) __THROW;
>  

Ok.

> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index b2458ba4a6..f87796a8ce 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -40,7 +40,7 @@ routines	:=							      \
>  	isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \
>  	isoc99_vsscanf							      \
>  	psiginfo gentempfd						      \
> -	vfscanf-internal vfwscanf-internal iovfscanf iovfwscanf		      \
> +	vfscanf-internal vfwscanf-internal iovfscanf			      \
>  	vfprintf-internal vfwprintf-internal
>  
>  aux	:= errlist siglist printf-parsemb printf-parsewc fxprintf

Ok.

> diff --git a/stdio-common/iovfwscanf.c b/stdio-common/iovfwscanf.c
> deleted file mode 100644
> index 56b6b3b0d5..0000000000
> --- a/stdio-common/iovfwscanf.c
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -/* Implementation and symbols for _IO_vfwscanf.
> -   Copyright (C) 1991-2021 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 <libioP.h>
> -#include <shlib-compat.h>
> -
> -/* This function is provided for ports older than GLIBC 2.29 because
> -   external callers could theoretically exist.  Newer ports do not need,
> -   since it is not part of the API.  */
> -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_29)
> -
> -int
> -attribute_compat_text_section
> -__IO_vfwscanf (FILE *fp, const wchar_t *format, va_list ap, int *errp)
> -{
> -  int rv = __vfwscanf_internal (fp, format, ap, 0);
> -  if (__glibc_unlikely (errp != 0))
> -    *errp = (rv == -1);
> -  return rv;
> -}
> -compat_symbol (libc, __IO_vfwscanf, _IO_vfwscanf, GLIBC_2_0);
> -
> -#endif

Ok.

> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> index 7b42746c34..67d476383a 100644
> --- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> @@ -325,7 +325,6 @@ ldbl-ibm128-files := $(objpfx)test-%-ibm128^ \
>  		     $(objpfx)iovsscanf^ \
>  		     $(objpfx)iovswscanf^ \
>  		     $(objpfx)iovfscanf^ \
> -		     $(objpfx)iovfwscanf^ \
>  		     $(objpfx)mpn2ldbl^ \
>  		     $(objpfx)ldbl2mpn^ \
>  		     $(objpfx)strtold_nan^ \
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 02/16] Add missing symbols to Version files
  2021-05-31 14:11 ` [PATCH 02/16] Add missing symbols to Version files Florian Weimer
@ 2021-06-01 19:12   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-01 19:12 UTC (permalink / raw)
  To: libc-alpha, Florian Weimer



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> Some symbols have explicit versioned_symbol or compat_symbol markers
> in the sources, but no corresponding entry in the Versions files.
> This presently works because the local: * directive is only applied
> to the base version.

LGTM, although I would add one entry per line (so future patch diff
would be easier to read).

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  inet/Versions                                      |  2 +-
>  io/Versions                                        |  1 +
>  libio/Versions                                     |  2 ++
>  nptl/Versions                                      |  8 ++++++++
>  posix/Versions                                     |  4 ++++
>  sysdeps/mach/hurd/i386/Versions                    |  3 +++
>  sysdeps/unix/sysv/linux/Versions                   | 12 ++++++++++++
>  sysdeps/unix/sysv/linux/alpha/Versions             | 10 ++++------
>  sysdeps/unix/sysv/linux/i386/Versions              |  4 ----
>  sysdeps/unix/sysv/linux/ia64/Versions              | 10 ++++------
>  sysdeps/unix/sysv/linux/mips/Versions              |  4 ++++
>  sysdeps/unix/sysv/linux/powerpc/Versions           |  4 ++++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions |  8 +-------
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions |  7 +------
>  sysdeps/unix/sysv/linux/s390/s390-32/Versions      |  3 ---
>  sysdeps/unix/sysv/linux/sh/Versions                |  3 ---
>  sysdeps/unix/sysv/linux/sparc/Versions             | 11 ++++-------
>  sysdeps/unix/sysv/linux/sparc/sparc32/Versions     |  3 ---
>  18 files changed, 53 insertions(+), 46 deletions(-)
> 
> diff --git a/inet/Versions b/inet/Versions
> index 9b3661e046..c0a2ad202d 100644
> --- a/inet/Versions
> +++ b/inet/Versions
> @@ -53,7 +53,7 @@ libc {
>      getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
>      gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
>      getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
> -    getprotoent_r; getservbyname_r;
> +    getprotoent_r; getservbyname_r; getservbyport_r; getservent_r;
>    }
>    GLIBC_2.2 {
>      # i*
> diff --git a/io/Versions b/io/Versions
> index 49c4d2d40a..88caf76bbc 100644
> --- a/io/Versions
> +++ b/io/Versions
> @@ -129,6 +129,7 @@ libc {
>      copy_file_range;
>    }
>    GLIBC_2.28 {
> +    fcntl;
>      fcntl64;
>      statx;
>    }
> diff --git a/libio/Versions b/libio/Versions
> index 6f1ab96100..01fc065577 100644
> --- a/libio/Versions
> +++ b/libio/Versions
> @@ -92,6 +92,8 @@ libc {
>      # Changed getline function in libio.
>      _IO_getline_info;
>  
> +    _IO_fgetpos64; _IO_fsetpos64;
> +
>      # f*
>      fgetpos64; fopen64; freopen64; fseeko; fseeko64; fsetpos64; ftello;
>      ftello64; fopen; fclose; fdopen; fread_unlocked; fwrite_unlocked;
> diff --git a/nptl/Versions b/nptl/Versions
> index af62a47cca..b8b82991fd 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -175,6 +175,7 @@ libc {
>    GLIBC_2.3.4 {
>      pthread_attr_getaffinity_np;
>      pthread_attr_setaffinity_np;
> +    pthread_getaffinity_np;
>      pthread_setaffinity_np;
>      pthread_setschedprio;
>    }
> @@ -258,6 +259,7 @@ libc {
>      __pthread_register_cancel_defer;
>      __pthread_unregister_cancel;
>      __pthread_unregister_cancel_restore;
> +    __pthread_unwind_next;
>      call_once;
>      cnd_broadcast;
>      cnd_destroy;
> @@ -294,6 +296,7 @@ libc {
>      pthread_condattr_getpshared;
>      pthread_condattr_setclock;
>      pthread_condattr_setpshared;
> +    pthread_create;
>      pthread_detach;
>      pthread_getattr_default_np;
>      pthread_getconcurrency;
> @@ -308,9 +311,12 @@ libc {
>      pthread_mutex_consistent;
>      pthread_mutex_getprioceiling;
>      pthread_mutex_setprioceiling;
> +    pthread_mutex_timedlock;
> +    pthread_mutex_trylock;
>      pthread_mutexattr_destroy;
>      pthread_mutexattr_getprioceiling;
>      pthread_mutexattr_getprotocol;
> +    pthread_mutexattr_getpshared;
>      pthread_mutexattr_getrobust;
>      pthread_mutexattr_gettype;
>      pthread_mutexattr_init;
> @@ -323,6 +329,7 @@ libc {
>      pthread_rwlock_clockrdlock;
>      pthread_rwlock_clockwrlock;
>      pthread_rwlock_destroy;
> +    pthread_rwlock_init;
>      pthread_rwlock_rdlock;
>      pthread_rwlock_timedrdlock;
>      pthread_rwlock_timedwrlock;
> @@ -336,6 +343,7 @@ libc {
>      pthread_rwlockattr_init;
>      pthread_rwlockattr_setkind_np;
>      pthread_rwlockattr_setpshared;
> +    pthread_setaffinity_np;
>      pthread_setattr_default_np;
>      pthread_setconcurrency;
>      pthread_setname_np;
> diff --git a/posix/Versions b/posix/Versions
> index b77e251e00..5983144d01 100644
> --- a/posix/Versions
> +++ b/posix/Versions
> @@ -138,6 +138,10 @@ libc {
>    GLIBC_2.11 {
>      execvpe;
>    }
> +  GLIBC_2.15 {
> +    posix_spawn;
> +    posix_spawnp;
> +  }
>    GLIBC_2.27 {
>      glob; glob64;
>    }
> diff --git a/sysdeps/mach/hurd/i386/Versions b/sysdeps/mach/hurd/i386/Versions
> index 67e6d94204..69572f46f5 100644
> --- a/sysdeps/mach/hurd/i386/Versions
> +++ b/sysdeps/mach/hurd/i386/Versions
> @@ -7,4 +7,7 @@ libc {
>    GLIBC_2.2.6 {
>      ioperm;
>    }
> +  GLIBC_2.3.3 {
> +    posix_fadvise64; posix_fallocate64;
> +  }
>  }
> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 220bb2dffe..47f5d198ba 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -86,6 +86,16 @@ libc {
>  
>      # ipc ctl interface change.
>      semctl; shmctl; msgctl;
> +
> +    # Old symbol versions from libpthread.
> +    __pread64;
> +    __pwrite64;
> +    lseek64;
> +    open64;
> +    pread;
> +    pread64;
> +    pwrite;
> +    pwrite64;
>    }
>    GLIBC_2.2.1 {
>      # p*
> @@ -103,6 +113,8 @@ libc {
>    }
>    GLIBC_2.3.3 {
>      gnu_dev_major; gnu_dev_minor; gnu_dev_makedev;
> +    _sys_siglist; sys_siglist; sys_sigabbrev;
> +    posix_fadvise64; posix_fallocate64;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;
> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index b90d5f2e5a..b157e2694a 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -64,6 +64,10 @@ libc {
>    GLIBC_2.3 {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
>    }
> +  GLIBC_2.3.3 {
> +    # Changed PTHREAD_STACK_MIN.
> +    pthread_attr_setstack; pthread_attr_setstacksize;
> +  }
>    GLIBC_2.4 {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
>    }
> @@ -85,12 +89,6 @@ ld {
>      __libc_alpha_cache_shape;
>    }
>  }
> -libpthread {
> -  GLIBC_2.3.3 {
> -    # Changed PTHREAD_STACK_MIN.
> -    pthread_attr_setstack; pthread_attr_setstacksize;
> -  }
> -}
>  librt {
>    GLIBC_2.3 {
>      # AIO functions.
> diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions
> index b59ace48da..1335e6551b 100644
> --- a/sysdeps/unix/sysv/linux/i386/Versions
> +++ b/sysdeps/unix/sysv/linux/i386/Versions
> @@ -33,10 +33,6 @@ libc {
>      # v*
>      versionsort64;
>    }
> -  GLIBC_2.3.3 {
> -    # p*
> -    posix_fadvise64; posix_fallocate64;
> -  }
>    GLIBC_2.3.4 {
>      # v*
>      vm86;
> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index 214e6f9f1a..f6994151aa 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -14,6 +14,10 @@ libc {
>      # w*
>      wordexp;
>    }
> +  GLIBC_2.3.3 {
> +    # Changed PTHREAD_STACK_MIN.
> +    pthread_attr_setstack; pthread_attr_setstacksize;
> +  }
>    GLIBC_2.2.6 {
>      getunwind;
>    }
> @@ -21,12 +25,6 @@ libc {
>      recvmsg; sendmsg;
>    }
>  }
> -libpthread {
> -  GLIBC_2.3.3 {
> -    # Changed PTHREAD_STACK_MIN.
> -    pthread_attr_setstack; pthread_attr_setstacksize;
> -  }
> -}
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> diff --git a/sysdeps/unix/sysv/linux/mips/Versions b/sysdeps/unix/sysv/linux/mips/Versions
> index aeaac41744..9c6f909e0d 100644
> --- a/sysdeps/unix/sysv/linux/mips/Versions
> +++ b/sysdeps/unix/sysv/linux/mips/Versions
> @@ -21,6 +21,10 @@ libc {
>      # _*
>      _test_and_set;
>    }
> +  GLIBC_2.3.3 {
> +    # Changed PTHREAD_STACK_MIN.
> +    pthread_attr_setstack; pthread_attr_setstacksize;
> +  }
>    GLIBC_2.11 {
>      fallocate64;
>    }
> diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions
> index 416272b718..6778adf5c7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/Versions
> @@ -1,4 +1,8 @@
>  libc {
> +  GLIBC_2.6 {
> +    # Changed PTHREAD_STACK_MIN.
> +    pthread_attr_setstack; pthread_attr_setstacksize;
> +  }
>    GLIBC_PRIVATE {
>      __vdso_get_tbfreq;
>      __vdso_clock_gettime;
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
> index ee505efb9e..0e6c8692b0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
> @@ -21,10 +21,10 @@ libc {
>      scandir64;
>    }
>    GLIBC_2.3.3 {
> -    posix_fadvise64; posix_fallocate64;
>      setcontext; getcontext; swapcontext; makecontext;
>    }
>    GLIBC_2.3.4 {
> +    longjmp; siglongjmp;
>      setcontext; getcontext; swapcontext; makecontext;
>    }
>    GLIBC_2.11 {
> @@ -34,9 +34,3 @@ libc {
>      __ppc_get_timebase_freq;
>    }
>  }
> -
> -libpthread {
> -  GLIBC_2.3.4 {
> -    longjmp; siglongjmp;
> -  }
> -}
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> index 7a166f2400..13717b2c5e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -18,6 +18,7 @@ libc {
>      getcontext;
>      setcontext;
>      swapcontext;
> +    longjmp; siglongjmp;
>    }
>    GLIBC_2.17 {
>      __ppc_get_timebase_freq;
> @@ -31,9 +32,3 @@ librt {
>      timer_settime;
>    }
>  }
> -
> -libpthread {
> -  GLIBC_2.3.4 {
> -    longjmp; siglongjmp;
> -  }
> -}
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
> index 99193982a7..cc03e70015 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
> @@ -26,9 +26,6 @@ libc {
>      # v*
>      versionsort64;
>    }
> -  GLIBC_2.3.3 {
> -    posix_fadvise64; posix_fallocate64;
> -  }
>    GLIBC_2.9 {
>      getutent;
>      getutid;
> diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
> index e0938c4165..19ba1d8d91 100644
> --- a/sysdeps/unix/sysv/linux/sh/Versions
> +++ b/sysdeps/unix/sysv/linux/sh/Versions
> @@ -21,9 +21,6 @@ libc {
>      # v*
>      versionsort64;
>    }
> -  GLIBC_2.3.3 {
> -    posix_fadvise64; posix_fallocate64;
> -  }
>    GLIBC_2.11 {
>      fallocate64;
>    }
> diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions
> index 61e57fae99..c4ec7ab537 100644
> --- a/sysdeps/unix/sysv/linux/sparc/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/Versions
> @@ -8,6 +8,10 @@ libc {
>    GLIBC_2.3 {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
>    }
> +  GLIBC_2.3.3 {
> +    # Changed PTHREAD_STACK_MIN.
> +    pthread_attr_setstack; pthread_attr_setstacksize;
> +  }
>    GLIBC_2.4 {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
>    }
> @@ -25,13 +29,6 @@ libc {
>    }
>  }
>  
> -libpthread {
> -  GLIBC_2.3.3 {
> -    # Changed PTHREAD_STACK_MIN.
> -    pthread_attr_setstack; pthread_attr_setstacksize;
> -  }
> -}
> -
>  librt {
>    GLIBC_2.3 {
>      # AIO functions.
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
> index c9a5b3e9d5..d928a65346 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
> @@ -17,9 +17,6 @@ libc {
>      # s*
>      scandir64;
>    }
> -  GLIBC_2.3.3 {
> -    posix_fadvise64; posix_fallocate64;
> -  }
>    GLIBC_2.11 {
>      fallocate64;
>    }
> 

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes
  2021-05-31 14:11 ` [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes Florian Weimer
@ 2021-06-01 19:23   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-01 19:23 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> This requires that all exported symbol versions are listed in
> Versions files.  It results in more consistent behavior across
> architectures because previously, symbols could be exported
> via explicit versioned_symbol and compat_symbol clauses if the
> version node existed in some Versions file (without listing the
> symbol) and it was not the base version for the library.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  scripts/versions.awk | 6 +-----
>  1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/scripts/versions.awk b/scripts/versions.awk
> index 3291123666..a7154480e3 100644
> --- a/scripts/versions.awk
> +++ b/scripts/versions.awk
> @@ -95,10 +95,7 @@ function ord(c) {
>  
>  
>  function closeversion(name, oldname) {
> -  if (firstinfile) {
> -    printf("  local:\n    *;\n") > outfile;
> -    firstinfile = 0;
> -  }
> +  printf("  local:\n    *;\n") > outfile;
>    # This version inherits from the last one only if they
>    # have the same nonnumeric prefix, i.e. GLIBC_x.y and GLIBC_x.z
>    # or FOO_x and FOO_y but not GLIBC_x and FOO_y.
> @@ -157,7 +154,6 @@ END {
>        oldlib = $1;
>        real_outfile = buildroot oldlib ".map";
>        outfile = real_outfile "T";
> -      firstinfile = 1;
>        veryoldver = "";
>        printf(" %s.map", oldlib);
>      }
> 

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols
  2021-05-31 14:11 ` [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols Florian Weimer
@ 2021-06-01 19:31   ` Adhemerval Zanella
  2021-06-01 19:34     ` Florian Weimer
  0 siblings, 1 reply; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-01 19:31 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> Some targets have a GLIBC_2.0 baseline for libdl, while using
> GLIBC_2.2 for libc.  This means that the generated libc.map file
> does not have any version nodes for GLIBC_2.0 or GLIBC_2.1.  However,
> moving symbols from libdl into libc needs such version nodes.
> (Future symbol moves from librt will need this as well.)
> 
> This kludge is only necessary for symbols predating GLIBC_2.2 because
> the affected targets use GLIBC_2.2 as the baseline for libc.  Given
> the small number and fixexd set of affected architectures, no generic

Typo 'fixexd'

> mechanism is implemented, and instead the map file fragment is
> hard-coded in scripts/versions.mk.
> 
> The compat_symbol macro already emits the appropriate version strings,
> so no adjustments are needed there.

I guess this quite specific mismatched version issue justify this
ad-hoc solution. 

LGTM, thanks. There is only a small nit regarding the version tag
name used.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  scripts/versions.awk                          | 26 ++++++++++++++++++-
>  sysdeps/unix/sysv/linux/hppa/Versions         |  1 +
>  sysdeps/unix/sysv/linux/ia64/Versions         |  1 +
>  sysdeps/unix/sysv/linux/sh/Versions           |  1 +
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  1 +
>  5 files changed, 29 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/versions.awk b/scripts/versions.awk
> index a7154480e3..1e8d8e4dc5 100644
> --- a/scripts/versions.awk
> +++ b/scripts/versions.awk
> @@ -93,6 +93,26 @@ function ord(c) {
>    printf("%s %s %s\n", actlib, sortver, $0) | sort;
>  }
>  
> +# Some targets do not set the ABI baseline for libdl.  As a result,
> +# symbols originally in libdl need to be moved under historic symbol
> +# versions, without altering the baseline version for libc itself.
> +/^ *!libc_abi_extension/ {

Maybe use a different name like 'libc_compat_versions', the 'extension'
wording does not really fits in what it is providing.

> +    libc_abi_extension_active = 1;
> +}
> +
> +function libc_abi_extension() {
> +    # No local: * here, so that we do not have to update this script
> +    # if symbols are moved into libc.  The abilist files and the other
> +    # targets (with a real GLIBC_2.0 baseline) provide testing
> +    # coverage.
> +    printf("\
> +GLIBC_2.0 {\n\
> +};\n\
> +GLIBC_2.1 {\n\
> +} GLIBC_2.0;\n\
> +") > outfile;
> +    return "GLIBC_2.1";
> +}
>  
>  function closeversion(name, oldname) {
>    printf("  local:\n    *;\n") > outfile;
> @@ -154,7 +174,11 @@ END {
>        oldlib = $1;
>        real_outfile = buildroot oldlib ".map";
>        outfile = real_outfile "T";
> -      veryoldver = "";
> +      if ($1 == "libc" && libc_abi_extension_active) {
> +	  veryoldver = libc_abi_extension();
> +      } else {
> +	  veryoldver = "";
> +      }
>        printf(" %s.map", oldlib);
>      }
>      if ($2 != oldver) {

Ok.

> diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions
> index 9532d207fc..8969fc08af 100644
> --- a/sysdeps/unix/sysv/linux/hppa/Versions
> +++ b/sysdeps/unix/sysv/linux/hppa/Versions
> @@ -1,3 +1,4 @@
> +!libc_abi_extension
>  libc {
>    GLIBC_2.1 {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index f6994151aa..7cac57a8e1 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -1,3 +1,4 @@
> +!libc_abi_extension
>  libc {
>    GLIBC_2.2 {
>      ioperm; iopl;
> diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
> index 19ba1d8d91..fc89ff1c18 100644
> --- a/sysdeps/unix/sysv/linux/sh/Versions
> +++ b/sysdeps/unix/sysv/linux/sh/Versions
> @@ -1,3 +1,4 @@
> +!libc_abi_extension
>  libc {
>    GLIBC_2.2 {
>      # functions used in other libraries
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> index fbea1bb2ef..3059d56f80 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -1,3 +1,4 @@
> +!libc_abi_extension
>  libc {
>    GLIBC_2.0 {
>      # Exception handling support functions from libgcc
> 

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols
  2021-06-01 19:31   ` Adhemerval Zanella
@ 2021-06-01 19:34     ` Florian Weimer
  2021-06-01 19:38       ` Adhemerval Zanella
  0 siblings, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-06-01 19:34 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> +# Some targets do not set the ABI baseline for libdl.  As a result,
>> +# symbols originally in libdl need to be moved under historic symbol
>> +# versions, without altering the baseline version for libc itself.
>> +/^ *!libc_abi_extension/ {
>
> Maybe use a different name like 'libc_compat_versions', the 'extension'
> wording does not really fits in what it is providing.

It extends the version nodes below the actual baseline.  Maybe
libc_pre_versions?

Thanks,
Florian


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 05/16] dlfcn: Move dlerror into libc
  2021-05-31 14:11 ` [PATCH 05/16] dlfcn: Move dlerror into libc Florian Weimer
@ 2021-06-01 19:36   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-01 19:36 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



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.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols
  2021-06-01 19:34     ` Florian Weimer
@ 2021-06-01 19:38       ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-01 19:38 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha



On 01/06/2021 16:34, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>>> +# Some targets do not set the ABI baseline for libdl.  As a result,
>>> +# symbols originally in libdl need to be moved under historic symbol
>>> +# versions, without altering the baseline version for libc itself.
>>> +/^ *!libc_abi_extension/ {
>>
>> Maybe use a different name like 'libc_compat_versions', the 'extension'
>> wording does not really fits in what it is providing.
> 
> It extends the version nodes below the actual baseline.  Maybe
> libc_pre_versions?

Good for me.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 06/16] dlfcn: Move dlclose into libc
  2021-05-31 14:11 ` [PATCH 06/16] dlfcn: Move dlclose " Florian Weimer
@ 2021-06-02 12:58   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 12:58 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.  Just a small suggestion for the Versions change.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 +-
>  dlfcn/Versions                                |  4 ++-
>  dlfcn/dlclose.c                               | 30 +++++--------------
>  dlfcn/sdlclose.c                              |  1 -
>  include/dlfcn.h                               |  7 +++--
>  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, 84 insertions(+), 57 deletions(-)
>  delete mode 100644 dlfcn/sdlclose.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index b194762d3e..4bdf524492 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,11 +21,12 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlclose dlsym dlvsym dladdr dladdr1 dlinfo \
> +libdl-routines	:= dlopen dlsym dlvsym dladdr dladdr1 dlinfo \
>  		   dlmopen dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
>  routines += \
> +  dlclose \
>    dlerror \
>    libc_dlerror_result \
>  

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index e7a6081d60..e2978c2a1c 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -1,8 +1,10 @@
>  libc {
>    GLIBC_2.0 {
> +    dlclose;
>      dlerror;
>    }
>    GLIBC_2.34 {
> +    dlclose;
>      dlerror;
>    }
>    GLIBC_PRIVATE {
> @@ -13,7 +15,7 @@ libc {
>  }
>  libdl {
>    GLIBC_2.0 {
> -    dladdr; dlclose; dlopen; dlsym;
> +    dladdr; dlopen; dlsym;

Maybe one entry per line?

>    }
>    GLIBC_2.1 {
>      dlopen; dlvsym;
> diff --git a/dlfcn/dlclose.c b/dlfcn/dlclose.c
> index 4bed5de55d..4d5d307ab1 100644
> --- a/dlfcn/dlclose.c
> +++ b/dlfcn/dlclose.c
> @@ -18,34 +18,20 @@
>  
>  #include <dlfcn.h>
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -int
> -dlclose (void *handle)
> -{
> -  return __dlclose (handle);
> -}
> -
> -#else
> -
> -static void
> -dlclose_doit (void *handle)
> -{
> -  GLRO(dl_close) (handle);
> -}
> +#include <shlib-compat.h>
>  
>  int
>  __dlclose (void *handle)
>  {
> -# ifdef SHARED
> +#ifdef SHARED
>    if (!rtld_active ())
>      return _dlfcn_hook->dlclose (handle);
> -# endif
> +#endif
>  
> -  return _dlerror_run (dlclose_doit, handle) ? -1 : 0;
> +  return _dlerror_run (GLRO (dl_close), handle) ? -1 : 0;
>  }
> -# ifdef SHARED
> -strong_alias (__dlclose, dlclose)
> -# endif
> +versioned_symbol (libc, __dlclose, dlclose, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libdl, __dlclose, dlclose, GLIBC_2_0);
>  #endif

Ok.

> diff --git a/dlfcn/sdlclose.c b/dlfcn/sdlclose.c
> deleted file mode 100644
> index dc89b98029..0000000000
> --- a/dlfcn/sdlclose.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlclose.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index a92b2aefb8..352eb79500 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -126,12 +126,15 @@ struct dlfcn_hook
>  extern struct dlfcn_hook *_dlfcn_hook;
>  libc_hidden_proto (_dlfcn_hook)
>  
> +/* Note: These prototypes are for initializing _dflcn_hook in static
> +   libraries.  Internal calls in glibc should use the __libc_dl*
> +   functions defined in elf/dl-libc.c instead.  */
> +
>  extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
>       attribute_hidden;
>  extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
>       attribute_hidden;
> -extern int __dlclose (void *handle)
> -     attribute_hidden;
> +extern int __dlclose (void *handle);
>  extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
>       attribute_hidden;
>  extern void *__dlvsym (void *handle, const char *name, const char *version

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 4c62bf215f..7e1b9845fc 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 dlclose F
>  GLIBC_2.2.6 dlerror F
>  GLIBC_2.2.6 dngettext F
>  GLIBC_2.2.6 dprintf F
> @@ -2208,6 +2209,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 timespec_getres F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index 1073ce7845..d267e7d457 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.6 dladdr F
> -GLIBC_2.2.6 dlclose 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 cf1e160614..8fdbe6548e 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 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
> @@ -2343,6 +2344,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index cb92fbf091..201e1e7146 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dladdr1 F
> -GLIBC_2.17 dlclose 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 9b303bfeea..c2bae6f242 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2435,6 +2436,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 804e109621..bcc9352407 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 dlclose F
>  GLIBC_2.32 dlerror F
>  GLIBC_2.32 dngettext F
>  GLIBC_2.32 dprintf F
> @@ -2102,6 +2103,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index 3f7f805044..7dc68475ea 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.32 dladdr F
>  GLIBC_2.32 dladdr1 F
> -GLIBC_2.32 dlclose 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 1c766b317d..d883be6028 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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1018,6 +1019,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 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index 1951f0a9af..0ddfa10b3d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
> -GLIBC_2.4 dlclose 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 6e5898f5a0..4dbb5e3442 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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1015,6 +1016,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 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index 1951f0a9af..0ddfa10b3d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
> -GLIBC_2.4 dlclose 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 cd740fb61e..0da7522411 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 dlclose F
>  GLIBC_2.29 dlerror F
>  GLIBC_2.29 dngettext F
>  GLIBC_2.29 dprintf F
> @@ -2286,6 +2287,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 7477354fa8..359b2d6267 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.29 dladdr F
>  GLIBC_2.29 dladdr1 F
> -GLIBC_2.29 dlclose 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 79ef2450fb..53128aae93 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt 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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 a5c5cb5868..0731f99ab1 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2423,6 +2424,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 9d1e50984f..87acf0b861 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2275,6 +2276,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 8cc0f0402f..ed482a6551 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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1007,6 +1008,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 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index 1951f0a9af..0ddfa10b3d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
> -GLIBC_2.4 dlclose 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 9df60dda8a..eff3f537f0 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2366,6 +2367,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 a10b65e1c9..aeda8130c1 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 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
> @@ -2337,6 +2338,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index 1bb6077e6f..90dcb88bab 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dladdr1 F
> -GLIBC_2.18 dlclose 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 aa80f6db28..cf8583acf8 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 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
> @@ -2334,6 +2335,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index 1bb6077e6f..90dcb88bab 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dladdr1 F
> -GLIBC_2.18 dlclose 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 969e1febcf..72a1879260 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2331,6 +2332,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index 3b3e0c7d60..c35888c87a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 82813866d0..7f116922cf 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2329,6 +2330,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index 3b3e0c7d60..c35888c87a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 6f9d2b0842..af7ab63030 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2337,6 +2338,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index c75f9a8535..17f64d7c1e 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2331,6 +2332,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 7c13372bed..7c0d6dbd03 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 dlclose F
>  GLIBC_2.21 dlerror F
>  GLIBC_2.21 dngettext F
>  GLIBC_2.21 dprintf F
> @@ -2376,6 +2377,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index f47d113867..2de1533f42 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.21 dladdr F
>  GLIBC_2.21 dladdr1 F
> -GLIBC_2.21 dlclose 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 a974a27468..c3f9df2b67 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2393,6 +2394,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 ea3daaf85f..b122dce9f5 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2426,6 +2427,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 1204e120c7..c5cee140ea 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 dlclose F
>  GLIBC_2.3 dlerror F
>  GLIBC_2.3 dngettext F
>  GLIBC_2.3 dprintf F
> @@ -2240,6 +2241,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index fdda336bd2..183a4b1526 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.3 dladdr F
> -GLIBC_2.3 dlclose 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 58359362ad..14a53736ff 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 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
> @@ -2539,6 +2540,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index cb92fbf091..201e1e7146 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dladdr1 F
> -GLIBC_2.17 dlclose 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 2717605ce0..4076eb1fc3 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 dlclose F
>  GLIBC_2.33 dlerror F
>  GLIBC_2.33 dngettext F
>  GLIBC_2.33 dprintf F
> @@ -2104,6 +2105,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 8bb5ee8f56..40991dffcd 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.33 dladdr F
>  GLIBC_2.33 dladdr1 F
> -GLIBC_2.33 dlclose 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 6d5cfc1003..b608d9384a 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 dlclose F
>  GLIBC_2.27 dlerror F
>  GLIBC_2.27 dngettext F
>  GLIBC_2.27 dprintf F
> @@ -2304,6 +2305,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index 044092c8ba..6dea0435f8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.27 dladdr F
>  GLIBC_2.27 dladdr1 F
> -GLIBC_2.27 dlclose 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 5050039c86..c5809de838 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2391,6 +2392,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 4baccfe878..b118d56f0d 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 dlclose F
>  GLIBC_2.2 dlerror F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 dprintf F
> @@ -2277,6 +2278,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 88c2b76660..99bb237244 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2 dladdr F
> -GLIBC_2.2 dlclose 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 a0b0006997..e6748c96dc 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2246,6 +2247,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 12f05ed141..fa0e795ec1 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2243,6 +2244,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 2a19e65697..897b34dabf 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -2384,6 +2385,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 99bf107f54..2d7e5a0ca1 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 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2296,6 +2297,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 62dfb3059d..a975af50ec 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dladdr F
> -GLIBC_2.0 dlclose 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 ec26f0c30a..62bded4298 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 dlclose F
>  GLIBC_2.2.5 dlerror F
>  GLIBC_2.2.5 dngettext F
>  GLIBC_2.2.5 dprintf F
> @@ -2255,6 +2256,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index 0d933bc3d6..f4f0482c24 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.5 dladdr F
> -GLIBC_2.2.5 dlclose 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 a74f962b63..f197d4301f 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 dlclose F
>  GLIBC_2.16 dlerror F
>  GLIBC_2.16 dngettext F
>  GLIBC_2.16 dprintf F
> @@ -2358,6 +2359,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 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index 0360ee41e6..a29fef95d4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.16 dladdr F
>  GLIBC_2.16 dladdr1 F
> -GLIBC_2.16 dlclose F
>  GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlmopen F
>  GLIBC_2.16 dlopen F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 07/16] dlfcn: Move dladdr into libc
  2021-05-31 14:11 ` [PATCH 07/16] dlfcn: Move dladdr " Florian Weimer
@ 2021-06-02 14:02   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:02 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 ++-
>  dlfcn/Versions                                |  4 +++-
>  dlfcn/dladdr.c                                | 22 ++++++-------------
>  dlfcn/sdladdr.c                               |  1 -
>  include/dlfcn.h                               |  3 +--
>  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, 79 insertions(+), 50 deletions(-)
>  delete mode 100644 dlfcn/sdladdr.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index 4bdf524492..f0793468c7 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,11 +21,12 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlsym dlvsym dladdr dladdr1 dlinfo \
> +libdl-routines	:= dlopen dlsym dlvsym dladdr1 dlinfo \
>  		   dlmopen dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
>  routines += \
> +  dladdr \
>    dlclose \
>    dlerror \
>    libc_dlerror_result \

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index e2978c2a1c..89e4a1236a 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -1,9 +1,11 @@
>  libc {
>    GLIBC_2.0 {
> +    dladdr;
>      dlclose;
>      dlerror;
>    }
>    GLIBC_2.34 {
> +    dladdr;
>      dlclose;
>      dlerror;
>    }
> @@ -15,7 +17,7 @@ libc {
>  }
>  libdl {
>    GLIBC_2.0 {
> -    dladdr; dlopen; dlsym;
> +    dlopen; dlsym;
>    }
>    GLIBC_2.1 {
>      dlopen; dlvsym;

Ok.

> diff --git a/dlfcn/dladdr.c b/dlfcn/dladdr.c
> index 27a6e49cac..3ef1b7f0b6 100644
> --- a/dlfcn/dladdr.c
> +++ b/dlfcn/dladdr.c
> @@ -18,27 +18,19 @@
>  
>  #include <dlfcn.h>
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -int
> -dladdr (const void *address, Dl_info *info)
> -{
> -  return __dladdr (address, info);
> -}
> -
> -#else
> +#include <shlib-compat.h>
>  
>  int
>  __dladdr (const void *address, Dl_info *info)
>  {
> -# ifdef SHARED
> +#ifdef SHARED
>    if (!rtld_active ())
>      return _dlfcn_hook->dladdr (address, info);
> -# endif
> +#endif
>    return _dl_addr (address, info, NULL, NULL);
>  }
> -# ifdef SHARED
> -strong_alias (__dladdr, dladdr)
> -# endif
> +versioned_symbol (libc, __dladdr, dladdr, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT  (libdl, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libdl, __dladdr, dladdr, GLIBC_2_0);
>  #endif

Ok.

> diff --git a/dlfcn/sdladdr.c b/dlfcn/sdladdr.c
> deleted file mode 100644
> index c484d63b29..0000000000
> --- a/dlfcn/sdladdr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dladdr.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 352eb79500..a018144808 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -140,8 +140,7 @@ 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 int __dladdr (const void *address, Dl_info *info)
> -     attribute_hidden;
> +extern int __dladdr (const void *address, Dl_info *info);
>  extern int __dladdr1 (const void *address, Dl_info *info,
>  		      void **extra_info, int flags)
>       attribute_hidden;

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 7e1b9845fc..abf3f3cf7f 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 dladdr F
>  GLIBC_2.2.6 dlclose F
>  GLIBC_2.2.6 dlerror F
>  GLIBC_2.2.6 dngettext F
> @@ -2209,6 +2210,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index d267e7d457..5b9579b3d2 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2.6 dladdr 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 8fdbe6548e..f912cea6a0 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 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dngettext F
> @@ -2344,6 +2345,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index 201e1e7146..731d6a1377 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 dladdr F
>  GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index c2bae6f242..c0dfb9be95 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2436,6 +2437,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 bcc9352407..c2a4c1f9ba 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 dladdr F
>  GLIBC_2.32 dlclose F
>  GLIBC_2.32 dlerror F
>  GLIBC_2.32 dngettext 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index 7dc68475ea..1c818309f2 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.32 dladdr F
>  GLIBC_2.32 dladdr1 F
>  GLIBC_2.32 dlinfo F
>  GLIBC_2.32 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index d883be6028..db80c07019 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> @@ -1019,6 +1020,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 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index 0ddfa10b3d..69ffaf4edf 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 4dbb5e3442..3600075a47 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> @@ -1016,6 +1017,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 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index 0ddfa10b3d..69ffaf4edf 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 0da7522411..d7beb5db45 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 dladdr F
>  GLIBC_2.29 dlclose F
>  GLIBC_2.29 dlerror F
>  GLIBC_2.29 dngettext F
> @@ -2287,6 +2288,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 359b2d6267..2c8047a614 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.29 dladdr F
>  GLIBC_2.29 dladdr1 F
>  GLIBC_2.29 dlinfo F
>  GLIBC_2.29 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 53128aae93..59b0e421a7 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2240,6 +2241,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 0731f99ab1..e33dd7d91e 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2424,6 +2425,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 87acf0b861..772b686c1d 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1,3 +1,4 @@
> +GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 ed482a6551..6ee063131e 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> @@ -1008,6 +1009,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 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index 0ddfa10b3d..69ffaf4edf 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr F
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index eff3f537f0..9fb78fd4fd 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2367,6 +2368,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 aeda8130c1..6ba6e439c5 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 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dngettext F
> @@ -2338,6 +2339,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index 90dcb88bab..721e823b1b 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 dladdr F
>  GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index cf8583acf8..b3d12892e6 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 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dngettext F
> @@ -2335,6 +2336,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index 90dcb88bab..721e823b1b 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 dladdr F
>  GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 72a1879260..43fe36e7d1 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2332,6 +2333,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index c35888c87a..d8aab2a6de 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 7f116922cf..699ad445f7 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index c35888c87a..d8aab2a6de 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 af7ab63030..3da887b94b 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2338,6 +2339,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 17f64d7c1e..8c34936cc0 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2332,6 +2333,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 7c0d6dbd03..e1bc50caf5 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 dladdr F
>  GLIBC_2.21 dlclose F
>  GLIBC_2.21 dlerror F
>  GLIBC_2.21 dngettext F
> @@ -2377,6 +2378,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index 2de1533f42..835ee02768 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.21 dladdr F
>  GLIBC_2.21 dladdr1 F
>  GLIBC_2.21 dlinfo F
>  GLIBC_2.21 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c3f9df2b67..8c3c1bb5c5 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2394,6 +2395,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 b122dce9f5..018f9c0253 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2427,6 +2428,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index c5cee140ea..330f5fdc1a 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 dladdr F
>  GLIBC_2.3 dlclose F
>  GLIBC_2.3 dlerror F
>  GLIBC_2.3 dngettext F
> @@ -2241,6 +2242,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index 183a4b1526..4446495717 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.3 dladdr 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 14a53736ff..b770ac88b3 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 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dngettext F
> @@ -2540,6 +2541,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index 201e1e7146..731d6a1377 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 dladdr F
>  GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 4076eb1fc3..ea14f58edb 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 dladdr F
>  GLIBC_2.33 dlclose F
>  GLIBC_2.33 dlerror F
>  GLIBC_2.33 dngettext F
> @@ -2105,6 +2106,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 40991dffcd..b140aa0b09 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.33 dladdr F
>  GLIBC_2.33 dladdr1 F
>  GLIBC_2.33 dlinfo F
>  GLIBC_2.33 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index b608d9384a..5c2a87a3b0 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 dladdr F
>  GLIBC_2.27 dlclose F
>  GLIBC_2.27 dlerror F
>  GLIBC_2.27 dngettext F
> @@ -2305,6 +2306,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index 6dea0435f8..3536869c77 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.27 dladdr F
>  GLIBC_2.27 dladdr1 F
>  GLIBC_2.27 dlinfo F
>  GLIBC_2.27 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index c5809de838..937a3ba942 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf 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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 b118d56f0d..cce8034393 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 dladdr F
>  GLIBC_2.2 dlclose F
>  GLIBC_2.2 dlerror F
>  GLIBC_2.2 dngettext F
> @@ -2278,6 +2279,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 99bb237244..c995dec160 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 dladdr 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 e6748c96dc..28154a96dd 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2247,6 +2248,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 fa0e795ec1..d9a16e9ccf 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2244,6 +2245,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 897b34dabf..98e6db33fe 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dprintf F
> @@ -2385,6 +2386,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 2d7e5a0ca1..479a1b38a6 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 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2297,6 +2298,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index a975af50ec..25cf9cd21e 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.0 dladdr 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 62bded4298..3c6750b3a4 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 dladdr F
>  GLIBC_2.2.5 dlclose F
>  GLIBC_2.2.5 dlerror F
>  GLIBC_2.2.5 dngettext F
> @@ -2256,6 +2257,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index f4f0482c24..28f001d6ec 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2.5 dladdr 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 f197d4301f..0bfba9edbc 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 dladdr F
>  GLIBC_2.16 dlclose F
>  GLIBC_2.16 dlerror F
>  GLIBC_2.16 dngettext F
> @@ -2359,6 +2360,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 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index a29fef95d4..f61c4a59d3 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.16 dladdr F
>  GLIBC_2.16 dladdr1 F
>  GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlmopen F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 08/16] dlfcn: Move dlsym into libc
  2021-05-31 14:11 ` [PATCH 08/16] dlfcn: Move dlsym " Florian Weimer
@ 2021-06-02 14:12   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:12 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:11, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> In elf/Makefile, remove the $(libdl) dependency from testobj1.so
> because it the unused libdl DSO now causes elf/tst-unused-deps to
> fail.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 +-
>  dlfcn/Versions                                |  4 +-
>  dlfcn/dlsym.c                                 | 59 +++++++++++--------
>  dlfcn/sdlsym.c                                |  1 -
>  elf/Makefile                                  |  1 -
>  elf/dl-sym.c                                  |  1 +
>  include/dlfcn.h                               |  4 +-
>  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 -
>  70 files changed, 109 insertions(+), 60 deletions(-)
>  delete mode 100644 dlfcn/sdlsym.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index f0793468c7..b0f2e8a986 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,7 +21,7 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlsym dlvsym dladdr1 dlinfo \
> +libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
>  		   dlmopen dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
> @@ -29,6 +29,7 @@ routines += \
>    dladdr \
>    dlclose \
>    dlerror \
> +  dlsym \
>    libc_dlerror_result \
>  
>  extra-libs-others := libdl

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index 89e4a1236a..7d6b51a4e3 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -3,11 +3,13 @@ libc {
>      dladdr;
>      dlclose;
>      dlerror;
> +    dlsym;
>    }
>    GLIBC_2.34 {
>      dladdr;
>      dlclose;
>      dlerror;
> +    dlsym;
>    }
>    GLIBC_PRIVATE {
>      __libc_dlerror_result;
> @@ -17,7 +19,7 @@ libc {
>  }
>  libdl {
>    GLIBC_2.0 {
> -    dlopen; dlsym;
> +    dlopen;
>    }
>    GLIBC_2.1 {
>      dlopen; dlvsym;

Ok.

> diff --git a/dlfcn/dlsym.c b/dlfcn/dlsym.c
> index 26cea4ba6d..6b03b7b7ab 100644
> --- a/dlfcn/dlsym.c
> +++ b/dlfcn/dlsym.c
> @@ -17,19 +17,9 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <dlfcn.h>
> -#include <stddef.h>
> -
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -void *
> -dlsym (void *handle, const char *name)
> -{
> -  return __dlsym (handle, name, RETURN_ADDRESS (0));
> -}
> -
> -#else
> +#include <shlib-compat.h>
> +#include <stddef.h>
>  
>  struct dlsym_args
>  {
> @@ -50,17 +40,11 @@ dlsym_doit (void *a)
>    args->sym = _dl_sym (args->handle, args->name, args->who);
>  }
>  
> -
> -void *
> -__dlsym (void *handle, const char *name DL_CALLER_DECL)
> +static void *
> +dlsym_implementation (void *handle, const char *name, void *dl_caller)
>  {
> -# ifdef SHARED
> -  if (!rtld_active ())
> -    return _dlfcn_hook->dlsym (handle, name, DL_CALLER);
> -# endif
> -
>    struct dlsym_args args;
> -  args.who = DL_CALLER;
> +  args.who = dl_caller;
>    args.handle = handle;
>    args.name = name;
>  
> @@ -73,7 +57,34 @@ __dlsym (void *handle, const char *name DL_CALLER_DECL)
>  
>    return result;
>  }
> -# ifdef SHARED
> -strong_alias (__dlsym, dlsym)
> +
> +#ifdef SHARED
> +void *
> +___dlsym (void *handle, const char *name)
> +{
> +  if (!rtld_active ())
> +    return _dlfcn_hook->dlsym (handle, name, RETURN_ADDRESS (0));
> +  else
> +    return dlsym_implementation (handle, name, RETURN_ADDRESS (0));
> +}
> +versioned_symbol (libc, ___dlsym, dlsym, GLIBC_2_34);
> +
> +# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libdl, ___dlsym, dlsym, GLIBC_2_0);
>  # endif
> -#endif
> +
> +#else /* !SHARED */
> +/* Also used with _dlfcn_hook.  */
> +void *
> +__dlsym (void *handle, const char *name, void *dl_caller)
> +{
> +  return dlsym_implementation (handle, name, dl_caller);
> +}
> +
> +void *
> +___dlsym (void *handle, const char *name)
> +{
> +  return __dlsym (handle, name, RETURN_ADDRESS (0));
> +}
> +weak_alias (___dlsym, dlsym)
> +#endif /* !SHARED */

Ok.

> diff --git a/dlfcn/sdlsym.c b/dlfcn/sdlsym.c
> deleted file mode 100644
> index 0234f23f8f..0000000000
> --- a/dlfcn/sdlsym.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlsym.c"

Ok.

> diff --git a/elf/Makefile b/elf/Makefile
> index 834ec858a8..0ec736bb0f 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -699,7 +699,6 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
>  test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
>  generated += $(addsuffix .so,$(strip $(modules-names)))
>  
> -$(objpfx)testobj1.so: $(libdl)
>  $(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
>  $(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
>  $(objpfx)testobj3.so: $(libdl)

Ok.

> diff --git a/elf/dl-sym.c b/elf/dl-sym.c
> index dfd6169e12..b34cc2f8eb 100644
> --- a/elf/dl-sym.c
> +++ b/elf/dl-sym.c
> @@ -195,3 +195,4 @@ _dl_sym (void *handle, const char *name, void *who)
>  {
>    return do_sym (handle, name, who, NULL, DL_LOOKUP_RETURN_NEWEST);
>  }
> +libc_hidden_def (_dl_sym)

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index a018144808..2b174f8670 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -84,6 +84,7 @@ extern void _dl_close_worker (struct link_map *map, bool force)
>     RTLD_NEXT).  WHO is the calling function, for RTLD_NEXT.  Returns
>     the symbol value, which may be NULL.  */
>  extern void *_dl_sym (void *handle, const char *name, void *who);
> +libc_hidden_proto (_dl_sym)
>  
>  /* Look up version VERSION of symbol NAME in shared object HANDLE
>     (which may be RTLD_DEFAULT or RTLD_NEXT).  WHO is the calling

Ok.

> @@ -135,8 +136,7 @@ extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
>  extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
>       attribute_hidden;
>  extern int __dlclose (void *handle);
> -extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
> -     attribute_hidden;
> +extern void *__dlsym (void *handle, const char *name, void *dl_caller);
>  extern void *__dlvsym (void *handle, const char *name, const char *version
>  		       DL_CALLER_DECL)
>       attribute_hidden;

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index abf3f3cf7f..02ba6c3593 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -744,6 +744,7 @@ GLIBC_2.2.6 dl_iterate_phdr F
>  GLIBC_2.2.6 dladdr F
>  GLIBC_2.2.6 dlclose F
>  GLIBC_2.2.6 dlerror F
> +GLIBC_2.2.6 dlsym F
>  GLIBC_2.2.6 dngettext F
>  GLIBC_2.2.6 dprintf F
>  GLIBC_2.2.6 drand48 F
> @@ -2213,6 +2214,7 @@ GLIBC_2.34 _hurd_libc_proc_init F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 5b9579b3d2..e4fe2ccab6 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.6 dlopen F
> -GLIBC_2.2.6 dlsym F
>  GLIBC_2.2.6 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index f912cea6a0..9da6e869fa 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -721,6 +721,7 @@ GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
> +GLIBC_2.17 dlsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
>  GLIBC_2.17 drand48 F
> @@ -2348,6 +2349,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 731d6a1377..d3822d83fc 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlopen F
> -GLIBC_2.17 dlsym F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index c0dfb9be95..1c9805a7f4 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -412,6 +412,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2440,6 +2441,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index c2a4c1f9ba..1a83cb2288 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -666,6 +666,7 @@ GLIBC_2.32 dl_iterate_phdr F
>  GLIBC_2.32 dladdr F
>  GLIBC_2.32 dlclose F
>  GLIBC_2.32 dlerror F
> +GLIBC_2.32 dlsym F
>  GLIBC_2.32 dngettext F
>  GLIBC_2.32 dprintf F
>  GLIBC_2.32 drand48 F
> @@ -2107,6 +2108,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 1c818309f2..74e8c10002 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.32 dladdr1 F
>  GLIBC_2.32 dlinfo F
>  GLIBC_2.32 dlmopen F
>  GLIBC_2.32 dlopen F
> -GLIBC_2.32 dlsym F
>  GLIBC_2.32 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index db80c07019..b49c187be7 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -210,6 +210,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1023,6 +1024,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 3600075a47..7f49a4977f 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -207,6 +207,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1020,6 +1021,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index d7beb5db45..f060c2b0d5 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -702,6 +702,7 @@ GLIBC_2.29 dl_iterate_phdr F
>  GLIBC_2.29 dladdr F
>  GLIBC_2.29 dlclose F
>  GLIBC_2.29 dlerror F
> +GLIBC_2.29 dlsym F
>  GLIBC_2.29 dngettext F
>  GLIBC_2.29 dprintf F
>  GLIBC_2.29 drand48 F
> @@ -2291,6 +2292,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 2c8047a614..78edf27275 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.29 dladdr1 F
>  GLIBC_2.29 dlinfo F
>  GLIBC_2.29 dlmopen F
>  GLIBC_2.29 dlopen F
> -GLIBC_2.29 dlsym F
>  GLIBC_2.29 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 59b0e421a7..bd4bbe548d 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1,6 +1,7 @@
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2244,6 +2245,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index e33dd7d91e..c781b36839 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -398,6 +398,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2428,6 +2429,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 772b686c1d..f0af999f5d 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1,6 +1,7 @@
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2280,6 +2281,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 6ee063131e..8b58481a8c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -211,6 +211,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1012,6 +1013,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlsym 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 69ffaf4edf..816b953a69 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 9fb78fd4fd..d4f2220a6a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -399,6 +399,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2371,6 +2372,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 6ba6e439c5..d443e72888 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
> +GLIBC_2.18 dlsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
>  GLIBC_2.18 drand48 F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 721e823b1b..9f0b07e50d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlopen F
> -GLIBC_2.18 dlsym F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index b3d12892e6..5d899de9e1 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
> +GLIBC_2.18 dlsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
>  GLIBC_2.18 drand48 F
> @@ -2339,6 +2340,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 721e823b1b..9f0b07e50d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlopen F
> -GLIBC_2.18 dlsym F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 43fe36e7d1..80f71d2c9d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym 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_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 d8aab2a6de..e79fbf179b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 699ad445f7..041df76409 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2334,6 +2335,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 d8aab2a6de..e79fbf179b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 3da887b94b..9d741ee23b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 8c34936cc0..eb2b387ce6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -395,6 +395,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym 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_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 e1bc50caf5..91e8dac129 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -766,6 +766,7 @@ GLIBC_2.21 dl_iterate_phdr F
>  GLIBC_2.21 dladdr F
>  GLIBC_2.21 dlclose F
>  GLIBC_2.21 dlerror F
> +GLIBC_2.21 dlsym F
>  GLIBC_2.21 dngettext F
>  GLIBC_2.21 dprintf F
>  GLIBC_2.21 drand48 F
> @@ -2381,6 +2382,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 835ee02768..354d0b0f1f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.21 dladdr1 F
>  GLIBC_2.21 dlinfo F
>  GLIBC_2.21 dlmopen F
>  GLIBC_2.21 dlopen F
> -GLIBC_2.21 dlsym F
>  GLIBC_2.21 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 8c3c1bb5c5..3531cf9744 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -408,6 +408,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2398,6 +2399,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 018f9c0253..b2610134a9 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -408,6 +408,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2431,6 +2432,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 330f5fdc1a..cb9457053d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -761,6 +761,7 @@ GLIBC_2.3 dl_iterate_phdr F
>  GLIBC_2.3 dladdr F
>  GLIBC_2.3 dlclose F
>  GLIBC_2.3 dlerror F
> +GLIBC_2.3 dlsym F
>  GLIBC_2.3 dngettext F
>  GLIBC_2.3 dprintf F
>  GLIBC_2.3 drand48 F
> @@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 4446495717..5344e7141c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.3 dlopen F
> -GLIBC_2.3 dlsym F
>  GLIBC_2.3 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index b770ac88b3..43e579db72 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -809,6 +809,7 @@ GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
> +GLIBC_2.17 dlsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
>  GLIBC_2.17 drand48 F
> @@ -2544,6 +2545,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 731d6a1377..d3822d83fc 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlopen F
> -GLIBC_2.17 dlsym F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index ea14f58edb..fe9784bfe7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -659,6 +659,7 @@ GLIBC_2.33 dl_iterate_phdr F
>  GLIBC_2.33 dladdr F
>  GLIBC_2.33 dlclose F
>  GLIBC_2.33 dlerror F
> +GLIBC_2.33 dlsym F
>  GLIBC_2.33 dngettext F
>  GLIBC_2.33 dprintf F
>  GLIBC_2.33 drand48 F
> @@ -2109,6 +2110,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 b140aa0b09..12113b56ff 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.33 dladdr1 F
>  GLIBC_2.33 dlinfo F
>  GLIBC_2.33 dlmopen F
>  GLIBC_2.33 dlopen F
> -GLIBC_2.33 dlsym F
>  GLIBC_2.33 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 5c2a87a3b0..241850b78d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -700,6 +700,7 @@ GLIBC_2.27 dl_iterate_phdr F
>  GLIBC_2.27 dladdr F
>  GLIBC_2.27 dlclose F
>  GLIBC_2.27 dlerror F
> +GLIBC_2.27 dlsym F
>  GLIBC_2.27 dngettext F
>  GLIBC_2.27 dprintf F
>  GLIBC_2.27 drand48 F
> @@ -2309,6 +2310,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 3536869c77..e42f9d97a8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.27 dladdr1 F
>  GLIBC_2.27 dlinfo F
>  GLIBC_2.27 dlmopen F
>  GLIBC_2.27 dlopen F
> -GLIBC_2.27 dlsym F
>  GLIBC_2.27 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 937a3ba942..72baa14350 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -398,6 +398,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2396,6 +2397,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index cce8034393..2e58f6151b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -698,6 +698,7 @@ GLIBC_2.2 div F
>  GLIBC_2.2 dladdr F
>  GLIBC_2.2 dlclose F
>  GLIBC_2.2 dlerror F
> +GLIBC_2.2 dlsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 dprintf F
>  GLIBC_2.2 drand48 F
> @@ -2282,6 +2283,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 c995dec160..97dcae5bf1 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2 dlopen F
> -GLIBC_2.2 dlsym F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 28154a96dd..ab113c966d 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2251,6 +2252,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index d9a16e9ccf..e733d13430 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2248,6 +2249,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 98e6db33fe..0534abb5b4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -400,6 +400,7 @@ GLIBC_2.0 div F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.0 dprintf F
>  GLIBC_2.0 drand48 F
>  GLIBC_2.0 drand48_r F
> @@ -2389,6 +2390,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 479a1b38a6..89e1646f02 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -5,6 +5,7 @@ GCC_3.0 __register_frame_info_table_bases F
>  GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
> +GLIBC_2.0 dlsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2301,6 +2302,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 25cf9cd21e..9019e8db65 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
> -GLIBC_2.0 dlsym F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 3c6750b3a4..842a613fdb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -688,6 +688,7 @@ GLIBC_2.2.5 dl_iterate_phdr F
>  GLIBC_2.2.5 dladdr F
>  GLIBC_2.2.5 dlclose F
>  GLIBC_2.2.5 dlerror F
> +GLIBC_2.2.5 dlsym F
>  GLIBC_2.2.5 dngettext F
>  GLIBC_2.2.5 dprintf F
>  GLIBC_2.2.5 drand48 F
> @@ -2260,6 +2261,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 28f001d6ec..a43447856f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.5 dlopen F
> -GLIBC_2.2.5 dlsym F
>  GLIBC_2.2.5 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 0bfba9edbc..5e8c5a64f2 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -725,6 +725,7 @@ GLIBC_2.16 dl_iterate_phdr F
>  GLIBC_2.16 dladdr F
>  GLIBC_2.16 dlclose F
>  GLIBC_2.16 dlerror F
> +GLIBC_2.16 dlsym F
>  GLIBC_2.16 dngettext F
>  GLIBC_2.16 dprintf F
>  GLIBC_2.16 drand48 F
> @@ -2363,6 +2364,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlsym 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 f61c4a59d3..7586a5f0b7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -2,5 +2,4 @@ GLIBC_2.16 dladdr1 F
>  GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlmopen F
>  GLIBC_2.16 dlopen F
> -GLIBC_2.16 dlsym F
>  GLIBC_2.16 dlvsym F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-05-31 14:12 ` [PATCH 09/16] dlfcn: Move dlmopen " Florian Weimer
@ 2021-06-02 14:19   ` Adhemerval Zanella
  2021-06-02 14:37     ` Florian Weimer
  2021-06-02 17:49     ` Florian Weimer
  0 siblings, 2 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:19 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks. I would move the compat symbols at dlfcn/dlfcn.c to
a dlfcn/libdl-compat.c, similar to what is done for libpthread.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 +-
>  dlfcn/Versions                                |  6 +-
>  dlfcn/dlfcn.c                                 | 19 ++++-
>  dlfcn/dlmopen.c                               | 73 ++++++++++---------
>  dlfcn/sdlmopen.c                              |  1 -
>  include/dlfcn.h                               | 12 +--
>  sysdeps/mach/hurd/i386/libc.abilist           |  2 +
>  sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
>  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   |  2 +-
>  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    |  2 +-
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/libdl.abilist    |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  2 +-
>  .../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 |  2 +-
>  .../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 |  2 +-
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../unix/sysv/linux/mips/mips64/libdl.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 +
>  sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../linux/powerpc/powerpc32/libdl.abilist     |  2 +-
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
>  .../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     |  2 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  2 +-
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  2 +-
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc32/libdl.abilist    |  2 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc64/libdl.abilist    |  2 +-
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  1 -
>  69 files changed, 154 insertions(+), 73 deletions(-)
>  delete mode 100644 dlfcn/sdlmopen.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index b0f2e8a986..f7ffd242dc 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -22,13 +22,14 @@ include ../Makeconfig
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
>  libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
> -		   dlmopen dlfcn
> +		   dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
>  routines += \
>    dladdr \
>    dlclose \
>    dlerror \
> +  dlmopen \
>    dlsym \
>    libc_dlerror_result \
>  

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index 7d6b51a4e3..584035e203 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -5,10 +5,14 @@ libc {
>      dlerror;
>      dlsym;
>    }
> +  GLIBC_2.3.4 {
> +    dlmopen;
> +  }
>    GLIBC_2.34 {
>      dladdr;
>      dlclose;
>      dlerror;
> +    dlmopen;
>      dlsym;
>    }
>    GLIBC_PRIVATE {
> @@ -28,6 +32,6 @@ libdl {
>      dladdr1; dlinfo;
>    }
>    GLIBC_2.3.4 {
> -    dlmopen;
> +    __libdl_version_placeholder;
>    }
>  }

Ok.

> diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
> index 8f85308b5f..90cdee0903 100644
> --- a/dlfcn/dlfcn.c
> +++ b/dlfcn/dlfcn.c
> @@ -17,7 +17,7 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <dlfcn.h>
> -
> +#include <shlib-compat.h>
>  
>  int __dlfcn_argc attribute_hidden;
>  char **__dlfcn_argv attribute_hidden;
> @@ -36,3 +36,20 @@ static void (*const init_array []) (int argc, char *argv[])
>  {
>    init
>  };
> +
> +/* The remainder of this file is used to keep specific symbol versions
> +   occupied, so that ld does not generate weak symbol version
> +   definitions.  */
> +

I think it should built only for SHARED.

> +void
> +attribute_compat_text_section
> +__attribute_used__
> +__libdl_version_placeholder_1 (void)
> +{
> +}
> +
> +#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
> +  && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
> +compat_symbol (libdl, __libdl_version_placeholder_1,
> +               __libdl_version_placeholder, GLIBC_2_3_4);
> +#endif

Shouldn't we do the same as nptl/libpthread-compat.c for the symbol
placeholders?

> diff --git a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
> index 6c6e98cd0e..ae42814bbf 100644
> --- a/dlfcn/dlmopen.c
> +++ b/dlfcn/dlmopen.c
> @@ -22,17 +22,7 @@
>  #include <stddef.h>
>  #include <unistd.h>
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -void *
> -dlmopen (Lmid_t nsid, const char *file, int mode)
> -{
> -  return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> -}
> -static_link_warning (dlmopen)
> -
> -#else
> +#include <shlib-compat.h>
>  
>  struct dlmopen_args
>  {
> @@ -70,38 +60,55 @@ dlmopen_doit (void *a)
>  
>    args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
>  			     args->caller,
> -			     args->nsid, __dlfcn_argc, __dlfcn_argv,
> -			     __environ);
> +			     args->nsid, __libc_argc, __libc_argv, __environ);
>  }
>  
> -
> -void *
> -__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
> +static void *
> +dlmopen_implementation (Lmid_t nsid, const char *file, int mode,
> +			void *dl_caller)
>  {
> -# ifdef SHARED
> -  if (!rtld_active ())
> -    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> -# endif
> -
>    struct dlmopen_args args;
>    args.nsid = nsid;
>    args.file = file;
>    args.mode = mode;
> -  args.caller = DL_CALLER;
> +  args.caller = dl_caller;
>  
> -# ifdef SHARED
>    return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new;
> -# else
> -  if (_dlerror_run (dlmopen_doit, &args))
> -    return NULL;
> +}
>  
> -  __libc_register_dl_open_hook ((struct link_map *) args.new);
> -  __libc_register_dlfcn_hook ((struct link_map *) args.new);
> +#ifdef SHARED
> +void *
> +___dlmopen (Lmid_t nsid, const char *file, int mode)
> +{
> +  if (!rtld_active ())
> +    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> +  else
> +    return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
> +}
> +versioned_symbol (libc, ___dlmopen, dlmopen, GLIBC_2_34);
>  
> -  return args.new;
> +# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (libdl, ___dlmopen, dlmopen, GLIBC_2_3_4);
>  # endif
> +#else /* !SHARED */
> +/* Also used with _dlfcn_hook.  */
> +void *
> +__dlmopen (Lmid_t nsid, const char *file, int mode, void *dl_caller)
> +{
> +  return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
>  }
> -# ifdef SHARED
> -strong_alias (__dlmopen, dlmopen)
> -# endif
> -#endif
> +
> +void *
> +___dlmopen (Lmid_t nsid, const char *file, int mode)
> +{
> +  struct link_map *l = __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> +  if (l != NULL)
> +    {
> +      __libc_register_dl_open_hook (l);
> +      __libc_register_dlfcn_hook (l);
> +    }
> +  return l;
> +}
> +weak_alias (___dlmopen, dlmopen)
> +static_link_warning (dlmopen)
> +#endif /* !SHARED */

Ok.

> diff --git a/dlfcn/sdlmopen.c b/dlfcn/sdlmopen.c
> deleted file mode 100644
> index 9630c89a7f..0000000000
> --- a/dlfcn/sdlmopen.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlmopen.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 2b174f8670..27309ab1dd 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -15,15 +15,15 @@
>  
>  #define __LM_ID_CALLER	-2
>  
> +/* These variables are defined and initialized in the startup code.  */
> +extern int __libc_argc attribute_hidden;
> +extern char **__libc_argv attribute_hidden;
> +
>  #ifdef SHARED
>  /* Locally stored program arguments.  */
>  extern int __dlfcn_argc attribute_hidden;
>  extern char **__dlfcn_argv attribute_hidden;
>  #else
> -/* These variables are defined and initialized in the startup code.  */
> -extern int __libc_argc attribute_hidden;
> -extern char **__libc_argv attribute_hidden;
> -
>  # define __dlfcn_argc __libc_argc
>  # define __dlfcn_argv __libc_argv
>  #endif
> @@ -133,8 +133,8 @@ libc_hidden_proto (_dlfcn_hook)
>  
>  extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
>       attribute_hidden;
> -extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
> -     attribute_hidden;
> +extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
> +			void *dl_caller);
>  extern int __dlclose (void *handle);
>  extern void *__dlsym (void *handle, const char *name, void *dl_caller);
>  extern void *__dlvsym (void *handle, const char *name, const char *version

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 02ba6c3593..9827bea1e9 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2177,6 +2177,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 regexec F
> @@ -2214,6 +2215,7 @@ GLIBC_2.34 _hurd_libc_proc_init F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 timespec_getres F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index e4fe2ccab6..d2c315509d 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -2,4 +2,4 @@ GLIBC_2.2.6 dlopen F
>  GLIBC_2.2.6 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 9da6e869fa..9b0f917944 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -721,6 +721,7 @@ GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
> +GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
> @@ -2349,6 +2350,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index d3822d83fc..391b72c100 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
> -GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 1c9805a7f4..5b24169acf 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2363,6 +2363,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2441,6 +2442,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 1a83cb2288..5e28b203cd 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -666,6 +666,7 @@ GLIBC_2.32 dl_iterate_phdr F
>  GLIBC_2.32 dladdr F
>  GLIBC_2.32 dlclose F
>  GLIBC_2.32 dlerror F
> +GLIBC_2.32 dlmopen F
>  GLIBC_2.32 dlsym F
>  GLIBC_2.32 dngettext F
>  GLIBC_2.32 dprintf F
> @@ -2108,6 +2109,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index 74e8c10002..b23f34195f 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.32 dladdr1 F
>  GLIBC_2.32 dlinfo F
> -GLIBC_2.32 dlmopen F
>  GLIBC_2.32 dlopen F
>  GLIBC_2.32 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index b49c187be7..ea14c3cd99 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -210,6 +210,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1024,6 +1025,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index 816b953a69..22691633fb 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
> -GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 7f49a4977f..5ff5eb7d04 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -207,6 +207,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1021,6 +1022,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index 816b953a69..22691633fb 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
> -GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index f060c2b0d5..8f36e5c844 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -702,6 +702,7 @@ GLIBC_2.29 dl_iterate_phdr F
>  GLIBC_2.29 dladdr F
>  GLIBC_2.29 dlclose F
>  GLIBC_2.29 dlerror F
> +GLIBC_2.29 dlmopen F
>  GLIBC_2.29 dlsym F
>  GLIBC_2.29 dngettext F
>  GLIBC_2.29 dprintf F
> @@ -2292,6 +2293,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 78edf27275..51061cb361 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.29 dladdr1 F
>  GLIBC_2.29 dlinfo F
> -GLIBC_2.29 dlmopen F
>  GLIBC_2.29 dlopen F
>  GLIBC_2.29 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index bd4bbe548d..0302aeae56 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2179,6 +2179,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index c781b36839..233096afbd 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2360,6 +2360,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2429,6 +2430,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index f0af999f5d..704fe57ca2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2214,6 +2214,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2281,6 +2282,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 8b58481a8c..dc32b7561b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -211,6 +211,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> @@ -1013,6 +1014,7 @@ GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
> +GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dngettext F
>  GLIBC_2.4 dprintf F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index 816b953a69..22691633fb 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
> -GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index d4f2220a6a..0ad41be521 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2303,6 +2303,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2372,6 +2373,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index d443e72888..ea61742cf2 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
> +GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
> @@ -2343,6 +2344,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index 9f0b07e50d..409e59cf21 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
> -GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 5d899de9e1..3b09b44dd8 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -723,6 +723,7 @@ GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
> +GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
> @@ -2340,6 +2341,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index 9f0b07e50d..409e59cf21 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
> -GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 80f71d2c9d..adde44be66 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2271,6 +2271,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2337,6 +2338,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index e79fbf179b..04aca378ef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 041df76409..a4c9a17e9e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2269,6 +2269,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2335,6 +2336,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index e79fbf179b..04aca378ef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 9d741ee23b..214e0db752 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2277,6 +2277,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2343,6 +2344,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index eb2b387ce6..b09d4058a2 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2271,6 +2271,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2337,6 +2338,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 91e8dac129..748f12c254 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -766,6 +766,7 @@ GLIBC_2.21 dl_iterate_phdr F
>  GLIBC_2.21 dladdr F
>  GLIBC_2.21 dlclose F
>  GLIBC_2.21 dlerror F
> +GLIBC_2.21 dlmopen F
>  GLIBC_2.21 dlsym F
>  GLIBC_2.21 dngettext F
>  GLIBC_2.21 dprintf F
> @@ -2382,6 +2383,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index 354d0b0f1f..90aaa0b49b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.21 dladdr1 F
>  GLIBC_2.21 dlinfo F
> -GLIBC_2.21 dlmopen F
>  GLIBC_2.21 dlopen F
>  GLIBC_2.21 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 3531cf9744..4134f7ed41 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2314,6 +2314,7 @@ GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 _longjmp F
>  GLIBC_2.3.4 _setjmp F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getcontext F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> @@ -2399,6 +2400,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index b2610134a9..43baf50dca 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2347,6 +2347,7 @@ GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 _longjmp F
>  GLIBC_2.3.4 _setjmp F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getcontext F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> @@ -2432,6 +2433,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index cb9457053d..b3d27c2678 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2162,6 +2162,7 @@ GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 _longjmp F
>  GLIBC_2.3.4 _setjmp F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getcontext F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> @@ -2246,6 +2247,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index 5344e7141c..8e709e5bc4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -2,4 +2,4 @@ GLIBC_2.3 dlopen F
>  GLIBC_2.3 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 43e579db72..60a6327f37 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -809,6 +809,7 @@ GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
> +GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
> @@ -2545,6 +2546,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index d3822d83fc..391b72c100 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
> -GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index fe9784bfe7..dccdf14b63 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -659,6 +659,7 @@ GLIBC_2.33 dl_iterate_phdr F
>  GLIBC_2.33 dladdr F
>  GLIBC_2.33 dlclose F
>  GLIBC_2.33 dlerror F
> +GLIBC_2.33 dlmopen F
>  GLIBC_2.33 dlsym F
>  GLIBC_2.33 dngettext F
>  GLIBC_2.33 dprintf F
> @@ -2110,6 +2111,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 12113b56ff..2710b64293 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.33 dladdr1 F
>  GLIBC_2.33 dlinfo F
> -GLIBC_2.33 dlmopen F
>  GLIBC_2.33 dlopen F
>  GLIBC_2.33 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 241850b78d..2acb8db062 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -700,6 +700,7 @@ GLIBC_2.27 dl_iterate_phdr F
>  GLIBC_2.27 dladdr F
>  GLIBC_2.27 dlclose F
>  GLIBC_2.27 dlerror F
> +GLIBC_2.27 dlmopen F
>  GLIBC_2.27 dlsym F
>  GLIBC_2.27 dngettext F
>  GLIBC_2.27 dprintf F
> @@ -2310,6 +2311,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index e42f9d97a8..c0d8307937 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.27 dladdr1 F
>  GLIBC_2.27 dlinfo F
> -GLIBC_2.27 dlmopen F
>  GLIBC_2.27 dlopen F
>  GLIBC_2.27 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 72baa14350..b2666bd723 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2316,6 +2316,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2397,6 +2398,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 2e58f6151b..6ea55ebcdf 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2205,6 +2205,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2283,6 +2284,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 97dcae5bf1..45decb94f9 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -2,4 +2,4 @@ GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index ab113c966d..7d3680520a 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2183,6 +2183,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2252,6 +2253,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index e733d13430..51a77c9553 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2183,6 +2183,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2249,6 +2250,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 0534abb5b4..45053a171a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2312,6 +2312,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2390,6 +2391,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 89e1646f02..30e7e6baa0 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2236,6 +2236,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2302,6 +2303,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 9019e8db65..795a5abd45 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -3,4 +3,4 @@ GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 842a613fdb..abaf3ee9de 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2193,6 +2193,7 @@ GLIBC_2.3.4 __vprintf_chk F
>  GLIBC_2.3.4 __vsnprintf_chk F
>  GLIBC_2.3.4 __vsprintf_chk F
>  GLIBC_2.3.4 __xpg_strerror_r F
> +GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
> @@ -2261,6 +2262,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index a43447856f..91f878e859 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -2,4 +2,4 @@ GLIBC_2.2.5 dlopen F
>  GLIBC_2.2.5 dlvsym F
>  GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
> -GLIBC_2.3.4 dlmopen F
> +GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 5e8c5a64f2..b30feb4888 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -725,6 +725,7 @@ GLIBC_2.16 dl_iterate_phdr F
>  GLIBC_2.16 dladdr F
>  GLIBC_2.16 dlclose F
>  GLIBC_2.16 dlerror F
> +GLIBC_2.16 dlmopen F
>  GLIBC_2.16 dlsym F
>  GLIBC_2.16 dngettext F
>  GLIBC_2.16 dprintf F
> @@ -2364,6 +2365,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index 7586a5f0b7..b37e9ff78c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.16 dladdr1 F
>  GLIBC_2.16 dlinfo F
> -GLIBC_2.16 dlmopen F
>  GLIBC_2.16 dlopen F
>  GLIBC_2.16 dlvsym F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 10/16] dlfcn: Move dladdr1 into libc
  2021-05-31 14:12 ` [PATCH 10/16] dlfcn: Move dladdr1 " Florian Weimer
@ 2021-06-02 14:29   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:29 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 ++-
>  dlfcn/Versions                                |  6 ++++-
>  dlfcn/dladdr1.c                               | 22 ++++++-------------
>  dlfcn/sdladdr1.c                              |  1 -
>  include/dlfcn.h                               |  3 +--
>  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, 81 insertions(+), 50 deletions(-)
>  delete mode 100644 dlfcn/sdladdr1.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index f7ffd242dc..1dfa247538 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,12 +21,13 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlvsym dladdr1 dlinfo \
> +libdl-routines	:= dlopen dlvsym dlinfo \
>  		   dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
>  routines += \
>    dladdr \
> +  dladdr1 \
>    dlclose \
>    dlerror \
>    dlmopen \

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index 584035e203..acd9402b34 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -5,10 +5,14 @@ libc {
>      dlerror;
>      dlsym;
>    }
> +  GLIBC_2.3.3 {
> +    dladdr1;
> +  }
>    GLIBC_2.3.4 {
>      dlmopen;
>    }
>    GLIBC_2.34 {
> +    dladdr1;
>      dladdr;
>      dlclose;
>      dlerror;
> @@ -29,7 +33,7 @@ libdl {
>      dlopen; dlvsym;
>    }
>    GLIBC_2.3.3 {
> -    dladdr1; dlinfo;
> +    dlinfo;
>    }
>    GLIBC_2.3.4 {
>      __libdl_version_placeholder;

Ok.

> diff --git a/dlfcn/dladdr1.c b/dlfcn/dladdr1.c
> index 98cd60d78e..203d6398e4 100644
> --- a/dlfcn/dladdr1.c
> +++ b/dlfcn/dladdr1.c
> @@ -18,24 +18,15 @@
>  
>  #include <dlfcn.h>
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -int
> -dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
> -{
> -  return __dladdr1 (address, info, extra, flags);
> -}
> -
> -#else
> +#include <shlib-compat.h>
>  
>  int
>  __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
>  {
> -# ifdef SHARED
> +#ifdef SHARED
>    if (!rtld_active ())
>      return _dlfcn_hook->dladdr1 (address, info, extra, flags);
> -# endif
> +#endif
>  
>    switch (flags)
>      {
> @@ -48,7 +39,8 @@ __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
>        return _dl_addr (address, info, (struct link_map **) extra, NULL);
>      }
>  }
> -# ifdef SHARED
> -strong_alias (__dladdr1, dladdr1)
> -# endif
> +versioned_symbol (libc, __dladdr1, dladdr1, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT  (libdl, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (libdl, __dladdr1, dladdr1, GLIBC_2_3_3);
>  #endif

Ok.

> diff --git a/dlfcn/sdladdr1.c b/dlfcn/sdladdr1.c
> deleted file mode 100644
> index a655979bcf..0000000000
> --- a/dlfcn/sdladdr1.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dladdr1.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 27309ab1dd..dc5193acbb 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -142,8 +142,7 @@ extern void *__dlvsym (void *handle, const char *name, const char *version
>       attribute_hidden;
>  extern int __dladdr (const void *address, Dl_info *info);
>  extern int __dladdr1 (const void *address, Dl_info *info,
> -		      void **extra_info, int flags)
> -     attribute_hidden;
> +		      void **extra_info, int flags);
>  extern int __dlinfo (void *handle, int request, void *arg) attribute_hidden;
>  
>  #ifndef SHARED

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 9827bea1e9..172e269fe9 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2144,6 +2144,7 @@ GLIBC_2.3.2 lchmod F
>  GLIBC_2.3.2 setresgid F
>  GLIBC_2.3.2 setresuid F
>  GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 inet6_option_alloc F
>  GLIBC_2.3.3 inet6_option_append F
>  GLIBC_2.3.3 inet6_option_find F
> @@ -2213,6 +2214,7 @@ GLIBC_2.34 __isnanf128 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 _hurd_libc_proc_init F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index d2c315509d..9e890a9815 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.6 dlopen F
>  GLIBC_2.2.6 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 9b0f917944..f09046237f 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -719,6 +719,7 @@ GLIBC_2.17 dirname F
>  GLIBC_2.17 div F
>  GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
> +GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dlmopen F
> @@ -2348,6 +2349,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index 391b72c100..05eeace024 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 5b24169acf..1523233c99 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2297,6 +2297,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2440,6 +2441,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 795a5abd45..5f81d13a21 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 5e28b203cd..cd6a555f6b 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -664,6 +664,7 @@ GLIBC_2.32 dirname F
>  GLIBC_2.32 div F
>  GLIBC_2.32 dl_iterate_phdr F
>  GLIBC_2.32 dladdr F
> +GLIBC_2.32 dladdr1 F
>  GLIBC_2.32 dlclose F
>  GLIBC_2.32 dlerror F
>  GLIBC_2.32 dlmopen F
> @@ -2107,6 +2108,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index b23f34195f..d3afdc0308 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.32 dladdr1 F
>  GLIBC_2.32 dlinfo F
>  GLIBC_2.32 dlopen F
>  GLIBC_2.32 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index ea14c3cd99..07e8854909 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -208,6 +208,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> @@ -1023,6 +1024,7 @@ GLIBC_2.4 dirname F
>  GLIBC_2.4 div F
>  GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
> +GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index 22691633fb..c24e10d9c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 5ff5eb7d04..2f0fef9d7d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -205,6 +205,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> @@ -1020,6 +1021,7 @@ GLIBC_2.4 dirname F
>  GLIBC_2.4 div F
>  GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
> +GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index 22691633fb..c24e10d9c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 8f36e5c844..97ba0642d5 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -700,6 +700,7 @@ GLIBC_2.29 dirname F
>  GLIBC_2.29 div F
>  GLIBC_2.29 dl_iterate_phdr F
>  GLIBC_2.29 dladdr F
> +GLIBC_2.29 dladdr1 F
>  GLIBC_2.29 dlclose F
>  GLIBC_2.29 dlerror F
>  GLIBC_2.29 dlmopen F
> @@ -2291,6 +2292,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 51061cb361..5cb45f50d3 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.29 dladdr1 F
>  GLIBC_2.29 dlinfo F
>  GLIBC_2.29 dlopen F
>  GLIBC_2.29 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 0302aeae56..257072a63a 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2131,6 +2131,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2244,6 +2245,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 795a5abd45..5f81d13a21 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 233096afbd..8b0a2381bb 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2312,6 +2312,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2428,6 +2429,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 795a5abd45..5f81d13a21 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 704fe57ca2..a2fd7b6f0e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2164,6 +2164,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2280,6 +2281,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 795a5abd45..5f81d13a21 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index dc32b7561b..ec0f948a22 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -209,6 +209,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> @@ -1012,6 +1013,7 @@ GLIBC_2.4 dirname F
>  GLIBC_2.4 div F
>  GLIBC_2.4 dl_iterate_phdr F
>  GLIBC_2.4 dladdr F
> +GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlclose F
>  GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index 22691633fb..c24e10d9c5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.4 dladdr1 F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 0ad41be521..2d69d956a1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2255,6 +2255,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2371,6 +2372,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index ea61742cf2..7e6a7b1645 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -721,6 +721,7 @@ GLIBC_2.18 dirname F
>  GLIBC_2.18 div F
>  GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
> +GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dlmopen F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index 409e59cf21..c042c043d6 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 3b09b44dd8..01bc9594bb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -721,6 +721,7 @@ GLIBC_2.18 dirname F
>  GLIBC_2.18 div F
>  GLIBC_2.18 dl_iterate_phdr F
>  GLIBC_2.18 dladdr F
> +GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlclose F
>  GLIBC_2.18 dlerror F
>  GLIBC_2.18 dlmopen F
> @@ -2339,6 +2340,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index 409e59cf21..c042c043d6 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 dladdr1 F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index adde44be66..b13544403e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2221,6 +2221,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index 04aca378ef..cb7bf28178 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 dlopen F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index a4c9a17e9e..e76cbe2a87 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2219,6 +2219,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2334,6 +2335,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index 04aca378ef..cb7bf28178 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 dlopen F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 214e0db752..5ac0d47413 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2227,6 +2227,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index b09d4058a2..07d121d225 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2220,6 +2220,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x400
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 748f12c254..a27cb9cf18 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -764,6 +764,7 @@ GLIBC_2.21 dirname F
>  GLIBC_2.21 div F
>  GLIBC_2.21 dl_iterate_phdr F
>  GLIBC_2.21 dladdr F
> +GLIBC_2.21 dladdr1 F
>  GLIBC_2.21 dlclose F
>  GLIBC_2.21 dlerror F
>  GLIBC_2.21 dlmopen F
> @@ -2381,6 +2382,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index 90aaa0b49b..9acd54fa38 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.21 dladdr1 F
>  GLIBC_2.21 dlinfo F
>  GLIBC_2.21 dlopen F
>  GLIBC_2.21 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 4134f7ed41..1a1cbb94ce 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2259,6 +2259,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2398,6 +2399,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 43baf50dca..9b9dc9ef3a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2292,6 +2292,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2431,6 +2432,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index b3d27c2678..aad3704047 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2111,6 +2111,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2245,6 +2246,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index 8e709e5bc4..c27f19ac95 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.3 dlopen F
>  GLIBC_2.3 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 60a6327f37..64a45a1c48 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -807,6 +807,7 @@ GLIBC_2.17 dirname F
>  GLIBC_2.17 div F
>  GLIBC_2.17 dl_iterate_phdr F
>  GLIBC_2.17 dladdr F
> +GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlclose F
>  GLIBC_2.17 dlerror F
>  GLIBC_2.17 dlmopen F
> @@ -2544,6 +2545,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index 391b72c100..05eeace024 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 dladdr1 F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index dccdf14b63..94c3bcf6e2 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -657,6 +657,7 @@ GLIBC_2.33 dirname F
>  GLIBC_2.33 div F
>  GLIBC_2.33 dl_iterate_phdr F
>  GLIBC_2.33 dladdr F
> +GLIBC_2.33 dladdr1 F
>  GLIBC_2.33 dlclose F
>  GLIBC_2.33 dlerror F
>  GLIBC_2.33 dlmopen F
> @@ -2109,6 +2110,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 2710b64293..2b91d9886c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.33 dladdr1 F
>  GLIBC_2.33 dlinfo F
>  GLIBC_2.33 dlopen F
>  GLIBC_2.33 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 2acb8db062..d2cde862c3 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -698,6 +698,7 @@ GLIBC_2.27 dirname F
>  GLIBC_2.27 div F
>  GLIBC_2.27 dl_iterate_phdr F
>  GLIBC_2.27 dladdr F
> +GLIBC_2.27 dladdr1 F
>  GLIBC_2.27 dlclose F
>  GLIBC_2.27 dlerror F
>  GLIBC_2.27 dlmopen F
> @@ -2309,6 +2310,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index c0d8307937..8e30134591 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.27 dladdr1 F
>  GLIBC_2.27 dlinfo F
>  GLIBC_2.27 dlopen F
>  GLIBC_2.27 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index b2666bd723..30a533b622 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2268,6 +2268,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2396,6 +2397,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 6ea55ebcdf..77b21973db 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2157,6 +2157,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2282,6 +2283,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 45decb94f9..f882403fe2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 7d3680520a..2700b6bf98 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2135,6 +2135,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2251,6 +2252,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 51a77c9553..de6251d508 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2135,6 +2135,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2248,6 +2249,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 45053a171a..7ada64410a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2262,6 +2262,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2389,6 +2390,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 30e7e6baa0..75fb6e4bbe 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2186,6 +2186,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2301,6 +2302,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 795a5abd45..5f81d13a21 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 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index abaf3ee9de..d94135174a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2145,6 +2145,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
> +GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2260,6 +2261,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index 91f878e859..6b11f673cc 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.2.5 dlopen F
>  GLIBC_2.2.5 dlvsym F
> -GLIBC_2.3.3 dladdr1 F
>  GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index b30feb4888..989f276480 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -723,6 +723,7 @@ GLIBC_2.16 dirname F
>  GLIBC_2.16 div F
>  GLIBC_2.16 dl_iterate_phdr F
>  GLIBC_2.16 dladdr F
> +GLIBC_2.16 dladdr1 F
>  GLIBC_2.16 dlclose F
>  GLIBC_2.16 dlerror F
>  GLIBC_2.16 dlmopen F
> @@ -2363,6 +2364,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 dladdr F
> +GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlmopen F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index b37e9ff78c..fe8858d4ec 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.16 dladdr1 F
>  GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlopen F
>  GLIBC_2.16 dlvsym F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 11/16] dlfcn: Move dlinfo into libc
  2021-05-31 14:12 ` [PATCH 11/16] dlfcn: Move dlinfo " Florian Weimer
@ 2021-06-02 14:31   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:31 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 +-
>  dlfcn/Versions                                |  4 +-
>  dlfcn/dlfcn.c                                 |  6 +++
>  dlfcn/dlinfo.c                                | 45 ++++++++++---------
>  dlfcn/sdlinfo.c                               |  1 -
>  include/dlfcn.h                               |  2 +-
>  sysdeps/mach/hurd/i386/libc.abilist           |  2 +
>  sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
>  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   |  2 +-
>  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    |  2 +-
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/libdl.abilist    |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  2 +-
>  .../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 |  2 +-
>  .../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 |  2 +-
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../unix/sysv/linux/mips/mips64/libdl.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 +
>  sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../linux/powerpc/powerpc32/libdl.abilist     |  2 +-
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
>  .../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     |  2 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  2 +-
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  2 +-
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc32/libdl.abilist    |  2 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc64/libdl.abilist    |  2 +-
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  1 -
>  69 files changed, 120 insertions(+), 54 deletions(-)
>  delete mode 100644 dlfcn/sdlinfo.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index 1dfa247538..c65cdc2e2b 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,7 +21,7 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlvsym dlinfo \
> +libdl-routines	:= dlopen dlvsym \
>  		   dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
> @@ -30,6 +30,7 @@ routines += \
>    dladdr1 \
>    dlclose \
>    dlerror \
> +  dlinfo \
>    dlmopen \
>    dlsym \
>    libc_dlerror_result \

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index acd9402b34..ca9a3e5591 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -7,6 +7,7 @@ libc {
>    }
>    GLIBC_2.3.3 {
>      dladdr1;
> +    dlinfo;
>    }
>    GLIBC_2.3.4 {
>      dlmopen;
> @@ -16,6 +17,7 @@ libc {
>      dladdr;
>      dlclose;
>      dlerror;
> +    dlinfo;
>      dlmopen;
>      dlsym;
>    }
> @@ -33,7 +35,7 @@ libdl {
>      dlopen; dlvsym;
>    }
>    GLIBC_2.3.3 {
> -    dlinfo;
> +    __libdl_version_placeholder;
>    }
>    GLIBC_2.3.4 {
>      __libdl_version_placeholder;

Ok.

> diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
> index 90cdee0903..55ecfcabbe 100644
> --- a/dlfcn/dlfcn.c
> +++ b/dlfcn/dlfcn.c
> @@ -48,6 +48,12 @@ __libdl_version_placeholder_1 (void)
>  {
>  }
>  
> +#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34) \
> +  && ABI_libdl_GLIBC_2_3_3 != ABI_libdl_GLIBC_2_1
> +compat_symbol (libdl, __libdl_version_placeholder_1,
> +               __libdl_version_placeholder, GLIBC_2_3_3);
> +#endif
> +
>  #if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
>    && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
>  compat_symbol (libdl, __libdl_version_placeholder_1,

Ok.

> diff --git a/dlfcn/dlinfo.c b/dlfcn/dlinfo.c
> index 9fb2a1405c..15fcbc5dc1 100644
> --- a/dlfcn/dlinfo.c
> +++ b/dlfcn/dlinfo.c
> @@ -20,18 +20,8 @@
>  #include <link.h>
>  #include <ldsodefs.h>
>  #include <libintl.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -int
> -dlinfo (void *handle, int request, void *arg)
> -{
> -  return __dlinfo (handle, request, arg);
> -}
> -
> -#else
> -
> -# include <dl-tls.h>
> +#include <dl-tls.h>
> +#include <shlib-compat.h>
>  
>  struct dlinfo_args
>  {
> @@ -88,18 +78,33 @@ dlinfo_doit (void *argsblock)
>      }
>  }
>  
> +static int
> +dlinfo_implementation (void *handle, int request, void *arg)
> +{
> +  struct dlinfo_args args = { handle, request, arg };
> +  return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
> +}
> +
> +#ifdef SHARED
>  int
> -__dlinfo (void *handle, int request, void *arg)
> +___dlinfo (void *handle, int request, void *arg)
>  {
> -# ifdef SHARED
>    if (!rtld_active ())
>      return _dlfcn_hook->dlinfo (handle, request, arg);
> -# endif
> -
> -  struct dlinfo_args args = { handle, request, arg };
> -  return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
> +  else
> +    return dlinfo_implementation (handle, request, arg);
>  }
> -# ifdef SHARED
> -strong_alias (__dlinfo, dlinfo)
> +versioned_symbol (libc, ___dlinfo, dlinfo, GLIBC_2_34);
> +
> +# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (libc, ___dlinfo, dlinfo, GLIBC_2_3_3);
>  # endif
> +#else /* !SHARED */
> +/* Also used with _dlfcn_hook.  */
> +int
> +__dlinfo (void *handle, int request, void *arg)
> +{
> +  return dlinfo_implementation (handle, request, arg);
> +}
> +weak_alias (__dlinfo, dlinfo)
>  #endif

Ok.

> diff --git a/dlfcn/sdlinfo.c b/dlfcn/sdlinfo.c
> deleted file mode 100644
> index dcc257dd1f..0000000000
> --- a/dlfcn/sdlinfo.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlinfo.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index dc5193acbb..e898c17792 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -143,7 +143,7 @@ extern void *__dlvsym (void *handle, const char *name, const char *version
>  extern int __dladdr (const void *address, Dl_info *info);
>  extern int __dladdr1 (const void *address, Dl_info *info,
>  		      void **extra_info, int flags);
> -extern int __dlinfo (void *handle, int request, void *arg) attribute_hidden;
> +extern int __dlinfo (void *handle, int request, void *arg);
>  
>  #ifndef SHARED
>  struct link_map;

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 172e269fe9..f4adfc6e5f 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2145,6 +2145,7 @@ GLIBC_2.3.2 setresgid F
>  GLIBC_2.3.2 setresuid F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 inet6_option_alloc F
>  GLIBC_2.3.3 inet6_option_append F
>  GLIBC_2.3.3 inet6_option_find F
> @@ -2217,6 +2218,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index 9e890a9815..3a60902d2a 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,4 +1,4 @@
>  GLIBC_2.2.6 dlopen F
>  GLIBC_2.2.6 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index f09046237f..a962e2966c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -722,6 +722,7 @@ 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 dlsym F
>  GLIBC_2.17 dngettext F
> @@ -2352,6 +2353,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index 05eeace024..840db53856 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 1523233c99..b4cab19c7e 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2298,6 +2298,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2444,6 +2445,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index cd6a555f6b..4e5440b6ae 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -667,6 +667,7 @@ 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 dlsym F
>  GLIBC_2.32 dngettext F
> @@ -2111,6 +2112,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index d3afdc0308..dc71de1647 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.32 dlinfo F
>  GLIBC_2.32 dlopen F
>  GLIBC_2.32 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 07e8854909..45fc27223e 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -211,6 +211,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> @@ -1027,6 +1028,7 @@ 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 dlsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index c24e10d9c5..763c28ead6 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 2f0fef9d7d..bfe4d7ede0 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -208,6 +208,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> @@ -1024,6 +1025,7 @@ 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 dlsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index c24e10d9c5..763c28ead6 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 97ba0642d5..f773509d7f 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -703,6 +703,7 @@ 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 dlsym F
>  GLIBC_2.29 dngettext F
> @@ -2295,6 +2296,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 5cb45f50d3..a143948a4c 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.29 dlinfo F
>  GLIBC_2.29 dlopen F
>  GLIBC_2.29 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 257072a63a..3050951d35 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2132,6 +2132,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2248,6 +2249,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 8b0a2381bb..0be412ab6b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2313,6 +2313,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2432,6 +2433,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index a2fd7b6f0e..ad6bfa0d2a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2165,6 +2165,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2284,6 +2285,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index ec0f948a22..bb62cc7a4f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -212,6 +212,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> @@ -1016,6 +1017,7 @@ 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 dlsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index c24e10d9c5..763c28ead6 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlopen F
>  GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 2d69d956a1..c313cfbc58 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2256,6 +2256,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2375,6 +2376,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 7e6a7b1645..e841dcad21 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -724,6 +724,7 @@ 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 dlsym F
>  GLIBC_2.18 dngettext F
> @@ -2346,6 +2347,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index c042c043d6..327d8ad43b 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 01bc9594bb..3d3e3d7fdb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -724,6 +724,7 @@ 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 dlsym F
>  GLIBC_2.18 dngettext F
> @@ -2343,6 +2344,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index c042c043d6..327d8ad43b 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlopen F
>  GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index b13544403e..9fe3e79ab1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2222,6 +2222,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2340,6 +2341,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index cb7bf28178..d10be39aa7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index e76cbe2a87..db04a7d0a7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2220,6 +2220,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2338,6 +2339,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index cb7bf28178..d10be39aa7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 5ac0d47413..50b4c0cc57 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2228,6 +2228,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2346,6 +2347,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 07d121d225..5d4e18b7f7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2221,6 +2221,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x400
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2340,6 +2341,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index a27cb9cf18..ef4d89fe97 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -767,6 +767,7 @@ 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 dlsym F
>  GLIBC_2.21 dngettext F
> @@ -2385,6 +2386,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index 9acd54fa38..3cecf1ebac 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.21 dlinfo F
>  GLIBC_2.21 dlopen F
>  GLIBC_2.21 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 1a1cbb94ce..32661d6341 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2260,6 +2260,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2402,6 +2403,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 9b9dc9ef3a..e12df18b1c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2293,6 +2293,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2435,6 +2436,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index aad3704047..3262e1b917 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2112,6 +2112,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2249,6 +2250,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index c27f19ac95..ffbe9e75a3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,4 +1,4 @@
>  GLIBC_2.3 dlopen F
>  GLIBC_2.3 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 64a45a1c48..d166c4872c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -810,6 +810,7 @@ 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 dlsym F
>  GLIBC_2.17 dngettext F
> @@ -2548,6 +2549,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index 05eeace024..840db53856 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlopen F
>  GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 94c3bcf6e2..5ff4d22e1b 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -660,6 +660,7 @@ 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 dlsym F
>  GLIBC_2.33 dngettext F
> @@ -2113,6 +2114,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 2b91d9886c..13eefd7db9 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.33 dlinfo F
>  GLIBC_2.33 dlopen F
>  GLIBC_2.33 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index d2cde862c3..caa8247be3 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -701,6 +701,7 @@ 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 dlsym F
>  GLIBC_2.27 dngettext F
> @@ -2313,6 +2314,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index 8e30134591..c4b5356c4a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.27 dlinfo F
>  GLIBC_2.27 dlopen F
>  GLIBC_2.27 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 30a533b622..9d4562eeb7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2269,6 +2269,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2400,6 +2401,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 77b21973db..14f9ab9a0e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2158,6 +2158,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2286,6 +2287,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index f882403fe2..5df5e71ebf 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,4 +1,4 @@
>  GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 2700b6bf98..9646c17111 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2136,6 +2136,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2255,6 +2256,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index de6251d508..84643a9d87 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2136,6 +2136,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2252,6 +2253,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 7ada64410a..dc3bbcde02 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2263,6 +2263,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2393,6 +2394,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 75fb6e4bbe..1170aa5c51 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2187,6 +2187,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2305,6 +2306,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 5f81d13a21..4722aad8b2 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,5 +1,5 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index d94135174a..6aa4eedff4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2146,6 +2146,7 @@ GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 dladdr1 F
> +GLIBC_2.3.3 dlinfo F
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
>  GLIBC_2.3.3 gnu_dev_minor F
> @@ -2264,6 +2265,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index 6b11f673cc..00764915cf 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,4 +1,4 @@
>  GLIBC_2.2.5 dlopen F
>  GLIBC_2.2.5 dlvsym F
> -GLIBC_2.3.3 dlinfo F
> +GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 989f276480..dab4cbc677 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -726,6 +726,7 @@ 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 dlsym F
>  GLIBC_2.16 dngettext F
> @@ -2367,6 +2368,7 @@ GLIBC_2.34 dladdr F
>  GLIBC_2.34 dladdr1 F
>  GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
> +GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index fe8858d4ec..645f87e571 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlopen F
>  GLIBC_2.16 dlvsym F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 12/16] dlfcn: Move dlvsym into libc
  2021-05-31 14:12 ` [PATCH 12/16] dlfcn: Move dlvsym " Florian Weimer
@ 2021-06-02 14:34   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:34 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  3 +-
>  dlfcn/Versions                                |  6 +-
>  dlfcn/dlvsym.c                                | 66 +++++++++++--------
>  dlfcn/sdlvsym.c                               |  1 -
>  elf/dl-sym.c                                  |  2 +-
>  include/dlfcn.h                               |  6 +-
>  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 -
>  69 files changed, 115 insertions(+), 65 deletions(-)
>  delete mode 100644 dlfcn/sdlvsym.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index c65cdc2e2b..08d92f85fc 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,7 +21,7 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen dlvsym \
> +libdl-routines	:= dlopen \
>  		   dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
> @@ -33,6 +33,7 @@ routines += \
>    dlinfo \
>    dlmopen \
>    dlsym \
> +  dlvsym \
>    libc_dlerror_result \
>  
>  extra-libs-others := libdl

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index ca9a3e5591..3c4fa2742e 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -5,6 +5,9 @@ libc {
>      dlerror;
>      dlsym;
>    }
> +  GLIBC_2.1 {
> +    dlvsym;
> +  }
>    GLIBC_2.3.3 {
>      dladdr1;
>      dlinfo;
> @@ -20,6 +23,7 @@ libc {
>      dlinfo;
>      dlmopen;
>      dlsym;
> +    dlvsym;
>    }
>    GLIBC_PRIVATE {
>      __libc_dlerror_result;
> @@ -32,7 +36,7 @@ libdl {
>      dlopen;
>    }
>    GLIBC_2.1 {
> -    dlopen; dlvsym;
> +    dlopen;
>    }
>    GLIBC_2.3.3 {
>      __libdl_version_placeholder;

Ok.

> diff --git a/dlfcn/dlvsym.c b/dlfcn/dlvsym.c
> index 519e706ea1..de6b340647 100644
> --- a/dlfcn/dlvsym.c
> +++ b/dlfcn/dlvsym.c
> @@ -17,20 +17,9 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <dlfcn.h>
> -#include <stddef.h>
> -
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -void *
> -weak_function
> -dlvsym (void *handle, const char *name, const char *version_str)
> -{
> -  return __dlvsym (handle, name, version_str, RETURN_ADDRESS (0));
> -}
> -
> -#else
> +#include <shlib-compat.h>
> +#include <stddef.h>
>  
>  struct dlvsym_args
>  {
> @@ -44,29 +33,23 @@ struct dlvsym_args
>    void *sym;
>  };
>  
> -
>  static void
>  dlvsym_doit (void *a)
>  {
> -  struct dlvsym_args *args = (struct dlvsym_args *)a;
> +  struct dlvsym_args *args = (struct dlvsym_args *) a;
>  
>    args->sym = _dl_vsym (args->handle, args->name, args->version, args->who);
>  }
>  
> -void *
> -__dlvsym (void *handle, const char *name, const char *version_str
> -	  DL_CALLER_DECL)
> +static void *
> +dlvsym_implementation (void *handle, const char *name, const char *version,
> +		       void *dl_caller)
>  {
> -# ifdef SHARED
> -  if (!rtld_active ())
> -    return _dlfcn_hook->dlvsym (handle, name, version_str, DL_CALLER);
> -# endif
> -
>    struct dlvsym_args args;
> +  args.who = dl_caller;
>    args.handle = handle;
>    args.name = name;
> -  args.who = DL_CALLER;
> -  args.version = version_str;
> +  args.version = version;
>  
>    /* Protect against concurrent loads and unloads.  */
>    __rtld_lock_lock_recursive (GL(dl_load_lock));
> @@ -77,7 +60,34 @@ __dlvsym (void *handle, const char *name, const char *version_str
>  
>    return result;
>  }
> -# ifdef SHARED
> -weak_alias (__dlvsym, dlvsym)
> +
> +#ifdef SHARED
> +void *
> +___dlvsym (void *handle, const char *name, const char *version)
> +{
> +  if (!rtld_active ())
> +    return _dlfcn_hook->dlvsym (handle, name, version, RETURN_ADDRESS (0));
> +  else
> +    return dlvsym_implementation (handle, name, version, RETURN_ADDRESS (0));
> +}
> +versioned_symbol (libc, ___dlvsym, dlvsym, GLIBC_2_34);
> +
> +# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libdl, ___dlvsym, dlvsym, GLIBC_2_1);
>  # endif
> -#endif
> +
> +#else /* !SHARED */
> +/* Also used with _dlfcn_hook.  */
> +void *
> +__dlvsym (void *handle, const char *name, const char *version, void *dl_caller)
> +{
> +  return dlvsym_implementation (handle, name, version, dl_caller);
> +}
> +
> +void *
> +___dlvsym (void *handle, const char *name, const char *version)
> +{
> +  return __dlvsym (handle, name, version, RETURN_ADDRESS (0));
> +}
> +weak_alias (___dlvsym, dlvsym)
> +#endif /* !SHARED */

Ok.

> diff --git a/dlfcn/sdlvsym.c b/dlfcn/sdlvsym.c
> deleted file mode 100644
> index ec4286058c..0000000000
> --- a/dlfcn/sdlvsym.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlvsym.c"
> diff --git a/elf/dl-sym.c b/elf/dl-sym.c
> index b34cc2f8eb..fa0cce678f 100644
> --- a/elf/dl-sym.c
> +++ b/elf/dl-sym.c
> @@ -188,7 +188,7 @@ _dl_vsym (void *handle, const char *name, const char *version, void *who)
>  
>    return do_sym (handle, name, who, &vers, 0);
>  }
> -
> +libc_hidden_def (_dl_vsym)
>  
>  void *
>  _dl_sym (void *handle, const char *name, void *who)

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index e898c17792..04ea4f6e2d 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -92,6 +92,7 @@ libc_hidden_proto (_dl_sym)
>     NULL.  */
>  extern void *_dl_vsym (void *handle, const char *name, const char *version,
>  		       void *who);
> +libc_hidden_proto (_dl_vsym)
>  
>  /* Helper function for <dlfcn.h> functions.  Runs the OPERATE function via
>     _dl_catch_error.  Returns zero for success, nonzero for failure; and
> @@ -137,9 +138,8 @@ extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
>  			void *dl_caller);
>  extern int __dlclose (void *handle);
>  extern void *__dlsym (void *handle, const char *name, void *dl_caller);
> -extern void *__dlvsym (void *handle, const char *name, const char *version
> -		       DL_CALLER_DECL)
> -     attribute_hidden;
> +extern void *__dlvsym (void *handle, const char *name, const char *version,
> +		       void *dl_caller);
>  extern int __dladdr (const void *address, Dl_info *info);
>  extern int __dladdr1 (const void *address, Dl_info *info,
>  		      void **extra_info, int flags);

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index f4adfc6e5f..f0bd076005 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -745,6 +745,7 @@ GLIBC_2.2.6 dladdr F
>  GLIBC_2.2.6 dlclose F
>  GLIBC_2.2.6 dlerror F
>  GLIBC_2.2.6 dlsym F
> +GLIBC_2.2.6 dlvsym F
>  GLIBC_2.2.6 dngettext F
>  GLIBC_2.2.6 dprintf F
>  GLIBC_2.2.6 drand48 F
> @@ -2221,6 +2222,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 3a60902d2a..cd906eff75 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,4 +1,3 @@
>  GLIBC_2.2.6 dlopen F
> -GLIBC_2.2.6 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index a962e2966c..deebf612dc 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -725,6 +725,7 @@ GLIBC_2.17 dlerror F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlsym F
> +GLIBC_2.17 dlvsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
>  GLIBC_2.17 drand48 F
> @@ -2356,6 +2357,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 840db53856..1fabf08e3c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.17 dlopen F
> -GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index b4cab19c7e..a4f79e54d8 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1524,6 +1524,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2448,6 +2449,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 4e5440b6ae..ad8180833a 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -670,6 +670,7 @@ GLIBC_2.32 dlerror F
>  GLIBC_2.32 dlinfo F
>  GLIBC_2.32 dlmopen F
>  GLIBC_2.32 dlsym F
> +GLIBC_2.32 dlvsym F
>  GLIBC_2.32 dngettext F
>  GLIBC_2.32 dprintf F
>  GLIBC_2.32 drand48 F
> @@ -2115,6 +2116,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 dc71de1647..aef59c3c3c 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.32 dlopen F
> -GLIBC_2.32 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 45fc27223e..a9eae3c20e 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -214,6 +214,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1031,6 +1032,7 @@ GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
> +GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index bfe4d7ede0..c93d59d01b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -211,6 +211,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1028,6 +1029,7 @@ GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
> +GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index f773509d7f..226187a2e2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -706,6 +706,7 @@ GLIBC_2.29 dlerror F
>  GLIBC_2.29 dlinfo F
>  GLIBC_2.29 dlmopen F
>  GLIBC_2.29 dlsym F
> +GLIBC_2.29 dlvsym F
>  GLIBC_2.29 dngettext F
>  GLIBC_2.29 dprintf F
>  GLIBC_2.29 drand48 F
> @@ -2299,6 +2300,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 a143948a4c..323b9117b2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.29 dlopen F
> -GLIBC_2.29 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 3050951d35..1b41bfd3d7 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2,6 +2,7 @@ GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2252,6 +2253,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 0be412ab6b..2c0369a482 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1498,6 +1498,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2436,6 +2437,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index ad6bfa0d2a..852bba8bf8 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2,6 +2,7 @@ GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2288,6 +2289,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index bb62cc7a4f..c55e7622c7 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -215,6 +215,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1020,6 +1021,7 @@ GLIBC_2.4 dlerror F
>  GLIBC_2.4 dlinfo F
>  GLIBC_2.4 dlmopen F
>  GLIBC_2.4 dlsym F
> +GLIBC_2.4 dlvsym 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 763c28ead6..f6280a2f0d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.4 dlopen F
> -GLIBC_2.4 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index c313cfbc58..b97c4a53f5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1495,6 +1495,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2379,6 +2380,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index e841dcad21..f5a906f7c5 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -727,6 +727,7 @@ GLIBC_2.18 dlerror F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlsym F
> +GLIBC_2.18 dlvsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
>  GLIBC_2.18 drand48 F
> @@ -2350,6 +2351,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 327d8ad43b..f8d2fc1b69 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.18 dlopen F
> -GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 3d3e3d7fdb..81ccb4e029 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -727,6 +727,7 @@ GLIBC_2.18 dlerror F
>  GLIBC_2.18 dlinfo F
>  GLIBC_2.18 dlmopen F
>  GLIBC_2.18 dlsym F
> +GLIBC_2.18 dlvsym F
>  GLIBC_2.18 dngettext F
>  GLIBC_2.18 dprintf F
>  GLIBC_2.18 drand48 F
> @@ -2347,6 +2348,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 327d8ad43b..f8d2fc1b69 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.18 dlopen F
> -GLIBC_2.18 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 9fe3e79ab1..e4e1b90620 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1680,6 +1680,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
>  GLIBC_2.2 endutxent F
> @@ -2344,6 +2345,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 d10be39aa7..69d0dae81c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.2 dlopen F
> -GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index db04a7d0a7..458475399a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1678,6 +1678,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
>  GLIBC_2.2 endutxent F
> @@ -2342,6 +2343,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 d10be39aa7..69d0dae81c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.2 dlopen F
> -GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 50b4c0cc57..c79ce36927 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1679,6 +1679,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
>  GLIBC_2.2 endutxent F
> @@ -2350,6 +2351,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 5d4e18b7f7..4f642a64f8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1675,6 +1675,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
>  GLIBC_2.2 endutxent F
> @@ -2344,6 +2345,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 ef4d89fe97..403a109f8f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -770,6 +770,7 @@ GLIBC_2.21 dlerror F
>  GLIBC_2.21 dlinfo F
>  GLIBC_2.21 dlmopen F
>  GLIBC_2.21 dlsym F
> +GLIBC_2.21 dlvsym F
>  GLIBC_2.21 dngettext F
>  GLIBC_2.21 dprintf F
>  GLIBC_2.21 drand48 F
> @@ -2389,6 +2390,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 3cecf1ebac..b83daf801c 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.21 dlopen F
> -GLIBC_2.21 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 32661d6341..a51daed07a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1503,6 +1503,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2406,6 +2407,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index e12df18b1c..54b6d41c6d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1503,6 +1503,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2439,6 +2440,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 3262e1b917..be60141560 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -762,6 +762,7 @@ GLIBC_2.3 dladdr F
>  GLIBC_2.3 dlclose F
>  GLIBC_2.3 dlerror F
>  GLIBC_2.3 dlsym F
> +GLIBC_2.3 dlvsym F
>  GLIBC_2.3 dngettext F
>  GLIBC_2.3 dprintf F
>  GLIBC_2.3 drand48 F
> @@ -2253,6 +2254,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 ffbe9e75a3..c32fb65365 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,4 +1,3 @@
>  GLIBC_2.3 dlopen F
> -GLIBC_2.3 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index d166c4872c..4157f78a90 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -813,6 +813,7 @@ GLIBC_2.17 dlerror F
>  GLIBC_2.17 dlinfo F
>  GLIBC_2.17 dlmopen F
>  GLIBC_2.17 dlsym F
> +GLIBC_2.17 dlvsym F
>  GLIBC_2.17 dngettext F
>  GLIBC_2.17 dprintf F
>  GLIBC_2.17 drand48 F
> @@ -2552,6 +2553,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 840db53856..1fabf08e3c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.17 dlopen F
> -GLIBC_2.17 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 5ff4d22e1b..367e46b2e2 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -663,6 +663,7 @@ GLIBC_2.33 dlerror F
>  GLIBC_2.33 dlinfo F
>  GLIBC_2.33 dlmopen F
>  GLIBC_2.33 dlsym F
> +GLIBC_2.33 dlvsym F
>  GLIBC_2.33 dngettext F
>  GLIBC_2.33 dprintf F
>  GLIBC_2.33 drand48 F
> @@ -2117,6 +2118,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 13eefd7db9..7014e0e280 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.33 dlopen F
> -GLIBC_2.33 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index caa8247be3..aec46ac3c0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -704,6 +704,7 @@ GLIBC_2.27 dlerror F
>  GLIBC_2.27 dlinfo F
>  GLIBC_2.27 dlmopen F
>  GLIBC_2.27 dlsym F
> +GLIBC_2.27 dlvsym F
>  GLIBC_2.27 dngettext F
>  GLIBC_2.27 dprintf F
>  GLIBC_2.27 drand48 F
> @@ -2317,6 +2318,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 c4b5356c4a..d4d85e298f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.27 dlopen F
> -GLIBC_2.27 dlvsym F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 9d4562eeb7..5dbfc50d2a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1495,6 +1495,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2404,6 +2405,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 14f9ab9a0e..c0d3d8362c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -699,6 +699,7 @@ GLIBC_2.2 dladdr F
>  GLIBC_2.2 dlclose F
>  GLIBC_2.2 dlerror F
>  GLIBC_2.2 dlsym F
> +GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 dprintf F
>  GLIBC_2.2 drand48 F
> @@ -2290,6 +2291,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 5df5e71ebf..59fedff595 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,4 +1,3 @@
>  GLIBC_2.2 dlopen F
> -GLIBC_2.2 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 9646c17111..1928e8a1fb 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2259,6 +2260,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 84643a9d87..738628c7b6 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2256,6 +2257,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index dc3bbcde02..c7e29c5d31 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1496,6 +1496,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
>  GLIBC_2.1 fattach F
> @@ -2397,6 +2398,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 1170aa5c51..e5c7a92b38 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -6,6 +6,7 @@ GLIBC_2.0 dladdr F
>  GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2309,6 +2310,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 4722aad8b2..8500feca8a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.0 dlopen F
>  GLIBC_2.1 dlopen F
> -GLIBC_2.1 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 6aa4eedff4..7e35c50406 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -689,6 +689,7 @@ GLIBC_2.2.5 dladdr F
>  GLIBC_2.2.5 dlclose F
>  GLIBC_2.2.5 dlerror F
>  GLIBC_2.2.5 dlsym F
> +GLIBC_2.2.5 dlvsym F
>  GLIBC_2.2.5 dngettext F
>  GLIBC_2.2.5 dprintf F
>  GLIBC_2.2.5 drand48 F
> @@ -2268,6 +2269,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 00764915cf..7a82c097cf 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,4 +1,3 @@
>  GLIBC_2.2.5 dlopen F
> -GLIBC_2.2.5 dlvsym F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index dab4cbc677..4d1dd2b3a2 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -729,6 +729,7 @@ GLIBC_2.16 dlerror F
>  GLIBC_2.16 dlinfo F
>  GLIBC_2.16 dlmopen F
>  GLIBC_2.16 dlsym F
> +GLIBC_2.16 dlvsym F
>  GLIBC_2.16 dngettext F
>  GLIBC_2.16 dprintf F
>  GLIBC_2.16 drand48 F
> @@ -2371,6 +2372,7 @@ GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
>  GLIBC_2.34 dlsym F
> +GLIBC_2.34 dlvsym 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 645f87e571..92d5e7d128 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1,2 +1 @@
>  GLIBC_2.16 dlopen F
> -GLIBC_2.16 dlvsym F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-06-02 14:19   ` Adhemerval Zanella
@ 2021-06-02 14:37     ` Florian Weimer
  2021-06-02 14:43       ` Adhemerval Zanella
  2021-06-02 17:49     ` Florian Weimer
  1 sibling, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-06-02 14:37 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

> On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
>> The symbol was moved using scripts/move-symbol-to-libc.py.
>
> LGTM, thanks. I would move the compat symbols at dlfcn/dlfcn.c to
> a dlfcn/libdl-compat.c, similar to what is done for libpthread.

I'm going to rename the file in the final cleanup patch, where
dlfcn/dlfcn.c is otherwise empty.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-06-02 14:37     ` Florian Weimer
@ 2021-06-02 14:43       ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:43 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha



On 02/06/2021 11:37, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
>>> The symbol was moved using scripts/move-symbol-to-libc.py.
>>
>> LGTM, thanks. I would move the compat symbols at dlfcn/dlfcn.c to
>> a dlfcn/libdl-compat.c, similar to what is done for libpthread.
> 
> I'm going to rename the file in the final cleanup patch, where
> dlfcn/dlfcn.c is otherwise empty.
> 

Fair enough.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 13/16] dlfcn: Move dlopen into libc
  2021-05-31 14:12 ` [PATCH 13/16] dlfcn: Move dlopen " Florian Weimer
@ 2021-06-02 14:54   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 14:54 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/Makefile                                |  8 +-
>  dlfcn/Versions                                |  7 +-
>  dlfcn/dlfcn.c                                 | 16 +++-
>  dlfcn/dlopen.c                                | 82 ++++++++++---------
>  dlfcn/dlopenold.c                             |  4 +-
>  dlfcn/sdlopen.c                               |  1 -
>  include/dlfcn.h                               |  3 +-
>  sysdeps/mach/hurd/i386/libc.abilist           |  2 +
>  sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/libdl.abilist |  2 +-
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/alpha/libdl.abilist   |  4 +-
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/libdl.abilist     |  2 +-
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/be/libdl.abilist  |  2 +-
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/le/libdl.abilist  |  2 +-
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/csky/libdl.abilist    |  2 +-
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/hppa/libdl.abilist    |  4 +-
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/i386/libdl.abilist    |  4 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  4 +-
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../sysv/linux/m68k/coldfire/libdl.abilist    |  2 +-
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
>  .../unix/sysv/linux/m68k/m680x0/libdl.abilist |  4 +-
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/be/libdl.abilist    |  2 +-
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/le/libdl.abilist    |  2 +-
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
>  .../unix/sysv/linux/mips/mips32/libdl.abilist |  4 +-
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
>  .../unix/sysv/linux/mips/mips64/libdl.abilist |  4 +-
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  3 +
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  2 +-
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
>  .../linux/powerpc/powerpc32/libdl.abilist     |  4 +-
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/libdl.abilist  |  2 +-
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/libdl.abilist  |  2 +-
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/libdl.abilist  |  2 +-
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
>  .../sysv/linux/s390/s390-32/libdl.abilist     |  4 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  4 +-
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  4 +-
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc32/libdl.abilist    |  4 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc64/libdl.abilist    |  4 +-
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  2 +-
>  70 files changed, 193 insertions(+), 96 deletions(-)
>  delete mode 100644 dlfcn/sdlopen.c
> 
> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index 08d92f85fc..a471d86071 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -21,8 +21,7 @@ include ../Makeconfig
>  
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
> -libdl-routines	:= dlopen \
> -		   dlfcn
> +libdl-routines	:= dlfcn
>  routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
>  elide-routines.os := $(routines)
>  routines += \
> @@ -32,6 +31,7 @@ routines += \
>    dlerror \
>    dlinfo \
>    dlmopen \
> +  dlopen \
>    dlsym \
>    dlvsym \
>    libc_dlerror_result \
> @@ -39,8 +39,8 @@ routines += \
>  extra-libs-others := libdl
>  
>  ifeq ($(build-shared),yes)
> -libdl-routines	+= dlopenold
> -libdl-shared-only-routines := dlopenold dlfcn
> +routines += dlopenold
> +shared-only-routines := dlopenold dlfcn
>  endif
>  
>  ifeq (yes,$(build-shared))

Ok.

> diff --git a/dlfcn/Versions b/dlfcn/Versions
> index 3c4fa2742e..cc34eb824d 100644
> --- a/dlfcn/Versions
> +++ b/dlfcn/Versions
> @@ -3,9 +3,11 @@ libc {
>      dladdr;
>      dlclose;
>      dlerror;
> +    dlopen;
>      dlsym;
>    }
>    GLIBC_2.1 {
> +    dlopen;
>      dlvsym;
>    }
>    GLIBC_2.3.3 {
> @@ -22,6 +24,7 @@ libc {
>      dlerror;
>      dlinfo;
>      dlmopen;
> +    dlopen;
>      dlsym;
>      dlvsym;
>    }
> @@ -33,10 +36,10 @@ libc {
>  }
>  libdl {
>    GLIBC_2.0 {
> -    dlopen;
> +    __libdl_version_placeholder;
>    }
>    GLIBC_2.1 {
> -    dlopen;
> +    __libdl_version_placeholder;
>    }
>    GLIBC_2.3.3 {
>      __libdl_version_placeholder;

Ok.

> diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
> index 55ecfcabbe..ef750bc27a 100644
> --- a/dlfcn/dlfcn.c
> +++ b/dlfcn/dlfcn.c
> @@ -48,14 +48,22 @@ __libdl_version_placeholder_1 (void)
>  {
>  }
>  
> -#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34) \
> -  && ABI_libdl_GLIBC_2_3_3 != ABI_libdl_GLIBC_2_1
> +#if SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libdl, __libdl_version_placeholder_1,
> +               __libdl_version_placeholder, GLIBC_2_0);
> +#endif
> +
> +#if SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libdl, __libdl_version_placeholder_1,
> +               __libdl_version_placeholder, GLIBC_2_1);
> +#endif
> +
> +#if SHLIB_COMPAT (libdl, GLIBC_2_3_3, GLIBC_2_34)
>  compat_symbol (libdl, __libdl_version_placeholder_1,
>                 __libdl_version_placeholder, GLIBC_2_3_3);
>  #endif
>  
> -#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34) \
> -  && ABI_libdl_GLIBC_2_3_4 != ABI_libdl_GLIBC_2_1
> +#if SHLIB_COMPAT (libdl, GLIBC_2_3_4, GLIBC_2_34)
>  compat_symbol (libdl, __libdl_version_placeholder_1,
>                 __libdl_version_placeholder, GLIBC_2_3_4);
>  #endif

Ok.

> diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c
> index d51e006453..afdc113efb 100644
> --- a/dlfcn/dlopen.c
> +++ b/dlfcn/dlopen.c
> @@ -21,17 +21,7 @@
>  #include <stddef.h>
>  #include <unistd.h>
>  #include <ldsodefs.h>
> -
> -#if !defined SHARED && IS_IN (libdl)
> -
> -void *
> -dlopen (const char *file, int mode)
> -{
> -  return __dlopen (file, mode, RETURN_ADDRESS (0));
> -}
> -static_link_warning (dlopen)
> -
> -#else
> +#include <shlib-compat.h>
>  
>  struct dlopen_args
>  {
> @@ -46,11 +36,11 @@ struct dlopen_args
>  
>  
>  /* Non-shared code has no support for multiple namespaces.  */
> -# ifdef SHARED
> -#  define NS __LM_ID_CALLER
> -# else
> -#  define NS LM_ID_BASE
> -# endif
> +#ifdef SHARED
> +# define NS __LM_ID_CALLER
> +#else
> +# define NS LM_ID_BASE
> +#endif
>  
>  
>  static void
> @@ -66,38 +56,54 @@ dlopen_doit (void *a)
>    args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
>  			     args->caller,
>  			     args->file == NULL ? LM_ID_BASE : NS,
> -			     __dlfcn_argc, __dlfcn_argv, __environ);
> +			     __libc_argc, __libc_argv, __environ);
>  }
>  
>  
> -void *
> -__dlopen (const char *file, int mode DL_CALLER_DECL)
> +static void *
> +dlopen_implementation (const char *file, int mode, void *dl_caller)
>  {
> -# ifdef SHARED
> -  if (!rtld_active ())
> -    return _dlfcn_hook->dlopen (file, mode, DL_CALLER);
> -# endif
> -
>    struct dlopen_args args;
>    args.file = file;
>    args.mode = mode;
> -  args.caller = DL_CALLER;
> +  args.caller = dl_caller;
>  
> -# ifdef SHARED
>    return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
> -# else
> -  if (_dlerror_run (dlopen_doit, &args))
> -    return NULL;
> +}
>  
> -  __libc_register_dl_open_hook ((struct link_map *) args.new);
> -  __libc_register_dlfcn_hook ((struct link_map *) args.new);
> +#ifdef SHARED
> +void *
> +___dlopen (const char *file, int mode)
> +{
> +  if (!rtld_active ())
> +    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
> +  else
> +    return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
> +}
> +versioned_symbol (libc, ___dlopen, dlopen, GLIBC_2_34);
>  
> -  return args.new;
> +# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libdl, ___dlopen, dlopen, GLIBC_2_1);
>  # endif
> +#else /* !SHARED */
> +/* Also used with _dlfcn_hook.  */
> +void *
> +__dlopen (const char *file, int mode, void *dl_caller)
> +{
> +  return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
>  }
> -# ifdef SHARED
> -#  include <shlib-compat.h>
> -strong_alias (__dlopen, __dlopen_check)
> -versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1);
> -# endif
> -#endif
> +
> +void *
> +___dlopen (const char *file, int mode)
> +{
> +  struct link_map *l = __dlopen (file, mode, RETURN_ADDRESS (0));
> +  if (l != NULL)
> +    {
> +      __libc_register_dl_open_hook (l);
> +      __libc_register_dlfcn_hook (l);
> +    }
> +  return l;
> +}
> +weak_alias (___dlopen, dlopen)
> +static_link_warning (dlopen)
> +#endif /* !SHARED */

Ok.

> diff --git a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
> index 6174dcbb27..0fe5f24cc5 100644
> --- a/dlfcn/dlopenold.c
> +++ b/dlfcn/dlopenold.c
> @@ -24,7 +24,7 @@
>  /* This file is for compatibility with glibc 2.0.  Compile it only if
>     versioning is used.  */
>  #include <shlib-compat.h>
> -#if SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_1)
> +#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_1)
>  
>  struct dlopen_args
>  {
> @@ -54,7 +54,7 @@ dlopen_doit (void *a)
>    args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
>  			     args->caller,
>  			     args->file == NULL ? LM_ID_BASE : NS,
> -			     __dlfcn_argc, __dlfcn_argv, __environ);
> +			     __libc_argc, __libc_argv, __environ);
>  }
>  
>  extern void *__dlopen_nocheck (const char *file, int mode);

Ok.

> diff --git a/dlfcn/sdlopen.c b/dlfcn/sdlopen.c
> deleted file mode 100644
> index 1ff2eb2854..0000000000
> --- a/dlfcn/sdlopen.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "dlopen.c"

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 04ea4f6e2d..4274eddbc9 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -132,8 +132,7 @@ libc_hidden_proto (_dlfcn_hook)
>     libraries.  Internal calls in glibc should use the __libc_dl*
>     functions defined in elf/dl-libc.c instead.  */
>  
> -extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
> -     attribute_hidden;
> +extern void *__dlopen (const char *file, int mode, void *caller);
>  extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
>  			void *dl_caller);
>  extern int __dlclose (void *handle);

Ok.

> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index f0bd076005..f651989962 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -744,6 +744,7 @@ GLIBC_2.2.6 dl_iterate_phdr F
>  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
>  GLIBC_2.2.6 dngettext F
> @@ -2221,6 +2222,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/mach/hurd/i386/libdl.abilist b/sysdeps/mach/hurd/i386/libdl.abilist
> index cd906eff75..59397ee9b5 100644
> --- a/sysdeps/mach/hurd/i386/libdl.abilist
> +++ b/sysdeps/mach/hurd/i386/libdl.abilist
> @@ -1,3 +1,3 @@
> -GLIBC_2.2.6 dlopen F
> +GLIBC_2.2.6 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index deebf612dc..bee807a6f8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -724,6 +724,7 @@ 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
>  GLIBC_2.17 dlsym F
>  GLIBC_2.17 dlvsym F
>  GLIBC_2.17 dngettext F
> @@ -2356,6 +2357,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> index 1fabf08e3c..4ba4ba9aae 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.17 dlopen F
> +GLIBC_2.17 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index a4f79e54d8..43dd600039 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -412,6 +412,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1524,6 +1525,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2448,6 +2450,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libdl.abilist b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index ad8180833a..033ed08877 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -669,6 +669,7 @@ 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
>  GLIBC_2.32 dlsym F
>  GLIBC_2.32 dlvsym F
>  GLIBC_2.32 dngettext F
> @@ -2115,6 +2116,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> index aef59c3c3c..051a968c87 100644
> --- a/sysdeps/unix/sysv/linux/arc/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.32 dlopen F
> +GLIBC_2.32 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index a9eae3c20e..f66ee7aab1 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -213,6 +213,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> @@ -1031,6 +1032,7 @@ 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
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> index f6280a2f0d..65eb212007 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.4 dlopen F
> +GLIBC_2.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index c93d59d01b..3798b32830 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -210,6 +210,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> @@ -1028,6 +1029,7 @@ 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
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> index f6280a2f0d..65eb212007 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.4 dlopen F
> +GLIBC_2.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 226187a2e2..ba53b61ea6 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -705,6 +705,7 @@ 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
>  GLIBC_2.29 dlsym F
>  GLIBC_2.29 dlvsym F
>  GLIBC_2.29 dngettext F
> @@ -2299,6 +2300,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/csky/libdl.abilist b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> index 323b9117b2..7f396d46e5 100644
> --- a/sysdeps/unix/sysv/linux/csky/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.29 dlopen F
> +GLIBC_2.29 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 1b41bfd3d7..9783504c93 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1,7 +1,9 @@
>  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
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2252,6 +2254,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libdl.abilist b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 2c0369a482..c223c360ff 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -398,6 +398,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1498,6 +1499,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2436,6 +2438,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/i386/libdl.abilist b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/i386/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 852bba8bf8..ea2be9ead2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1,7 +1,9 @@
>  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
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2288,6 +2290,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libdl.abilist b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index c55e7622c7..3cb4279b41 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -214,6 +214,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> @@ -1020,6 +1021,7 @@ 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
>  GLIBC_2.4 dlsym F
>  GLIBC_2.4 dlvsym F
>  GLIBC_2.4 dngettext F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> index f6280a2f0d..65eb212007 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.4 dlopen F
> +GLIBC_2.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index b97c4a53f5..94a718ff58 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -399,6 +399,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1495,6 +1496,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2379,6 +2381,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index f5a906f7c5..5823bf18ef 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -726,6 +726,7 @@ 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
>  GLIBC_2.18 dlsym F
>  GLIBC_2.18 dlvsym F
>  GLIBC_2.18 dngettext F
> @@ -2350,6 +2351,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> index f8d2fc1b69..97801fca23 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.18 dlopen F
> +GLIBC_2.18 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 81ccb4e029..723c4bcb09 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -726,6 +726,7 @@ 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
>  GLIBC_2.18 dlsym F
>  GLIBC_2.18 dlvsym F
>  GLIBC_2.18 dngettext F
> @@ -2347,6 +2348,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> index f8d2fc1b69..97801fca23 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.18 dlopen F
> +GLIBC_2.18 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index e4e1b90620..f67da8f37a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1680,6 +1681,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
> @@ -2344,6 +2346,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> index 69d0dae81c..6ea9b0424f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.2 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.2 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 458475399a..e44a6be8aa 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1678,6 +1679,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
> @@ -2342,6 +2344,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> index 69d0dae81c..6ea9b0424f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.2 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.2 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index c79ce36927..21cbe39166 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1679,6 +1680,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
> @@ -2350,6 +2352,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 4f642a64f8..a271342813 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -395,6 +395,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1675,6 +1676,7 @@ GLIBC_2.2 clock_settime F
>  GLIBC_2.2 creat64 F
>  GLIBC_2.2 dcngettext F
>  GLIBC_2.2 des_setparity F
> +GLIBC_2.2 dlopen F
>  GLIBC_2.2 dlvsym F
>  GLIBC_2.2 dngettext F
>  GLIBC_2.2 ecb_crypt F
> @@ -2344,6 +2346,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 403a109f8f..9429209215 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -769,6 +769,7 @@ 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
>  GLIBC_2.21 dlsym F
>  GLIBC_2.21 dlvsym F
>  GLIBC_2.21 dngettext F
> @@ -2389,6 +2390,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> index b83daf801c..70efb879ed 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.21 dlopen F
> +GLIBC_2.21 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index a51daed07a..eaca8e4b0c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -408,6 +408,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1503,6 +1504,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2406,6 +2408,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 54b6d41c6d..c754a181da 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -408,6 +408,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1503,6 +1504,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2439,6 +2441,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index be60141560..98bd6bea39 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -761,6 +761,7 @@ GLIBC_2.3 dl_iterate_phdr F
>  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
>  GLIBC_2.3 dngettext F
> @@ -2253,6 +2254,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> index c32fb65365..d82eac3034 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libdl.abilist
> @@ -1,3 +1,3 @@
> -GLIBC_2.3 dlopen F
> +GLIBC_2.3 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 4157f78a90..d27f7448ed 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -812,6 +812,7 @@ 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
>  GLIBC_2.17 dlsym F
>  GLIBC_2.17 dlvsym F
>  GLIBC_2.17 dngettext F
> @@ -2552,6 +2553,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> index 1fabf08e3c..4ba4ba9aae 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.17 dlopen F
> +GLIBC_2.17 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 367e46b2e2..33c9f98bf5 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -662,6 +662,7 @@ 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
>  GLIBC_2.33 dlsym F
>  GLIBC_2.33 dlvsym F
>  GLIBC_2.33 dngettext F
> @@ -2117,6 +2118,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> index 7014e0e280..8441999906 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.33 dlopen F
> +GLIBC_2.33 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index aec46ac3c0..9902603cd4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -703,6 +703,7 @@ 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
>  GLIBC_2.27 dlsym F
>  GLIBC_2.27 dlvsym F
>  GLIBC_2.27 dngettext F
> @@ -2317,6 +2318,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> index d4d85e298f..33ff573df8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.27 dlopen F
> +GLIBC_2.27 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 5dbfc50d2a..963e27571d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -398,6 +398,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1495,6 +1496,7 @@ GLIBC_2.1 chown F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2404,6 +2406,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index c0d3d8362c..17c56a2658 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -698,6 +698,7 @@ GLIBC_2.2 div F
>  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
>  GLIBC_2.2 dngettext F
> @@ -2290,6 +2291,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> index 59fedff595..a1deffc0c2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist
> @@ -1,3 +1,3 @@
> -GLIBC_2.2 dlopen F
> +GLIBC_2.2 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 1928e8a1fb..456abfb5bb 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
>  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
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2259,6 +2261,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 738628c7b6..45e59f1821 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
>  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
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2256,6 +2258,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index c7e29c5d31..734e1f38b6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -400,6 +400,7 @@ GLIBC_2.0 div F
>  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.0 dprintf F
>  GLIBC_2.0 drand48 F
> @@ -1496,6 +1497,7 @@ GLIBC_2.1 cbc_crypt F
>  GLIBC_2.1 clntunix_create F
>  GLIBC_2.1 creat64 F
>  GLIBC_2.1 des_setparity F
> +GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.1 ecb_crypt F
>  GLIBC_2.1 endutxent F
> @@ -2397,6 +2399,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index e5c7a92b38..9edf5ff234 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -5,7 +5,9 @@ GCC_3.0 __register_frame_info_table_bases F
>  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
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
> @@ -2309,6 +2311,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> index 8500feca8a..a455934421 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.0 dlopen F
> -GLIBC_2.1 dlopen F
> +GLIBC_2.0 __libdl_version_placeholder F
> +GLIBC_2.1 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 7e35c50406..bc8535fbed 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -688,6 +688,7 @@ GLIBC_2.2.5 dl_iterate_phdr F
>  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
>  GLIBC_2.2.5 dngettext F
> @@ -2268,6 +2269,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> index 7a82c097cf..590424fbdc 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist
> @@ -1,3 +1,3 @@
> -GLIBC_2.2.5 dlopen F
> +GLIBC_2.2.5 __libdl_version_placeholder F
>  GLIBC_2.3.3 __libdl_version_placeholder F
>  GLIBC_2.3.4 __libdl_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 4d1dd2b3a2..669cc664f5 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -728,6 +728,7 @@ 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
>  GLIBC_2.16 dlsym F
>  GLIBC_2.16 dlvsym F
>  GLIBC_2.16 dngettext F
> @@ -2371,6 +2372,7 @@ GLIBC_2.34 dlclose F
>  GLIBC_2.34 dlerror F
>  GLIBC_2.34 dlinfo F
>  GLIBC_2.34 dlmopen F
> +GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> index 92d5e7d128..583acd29f7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist
> @@ -1 +1 @@
> -GLIBC_2.16 dlopen F
> +GLIBC_2.16 __libdl_version_placeholder F
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-06-02 14:19   ` Adhemerval Zanella
  2021-06-02 14:37     ` Florian Weimer
@ 2021-06-02 17:49     ` Florian Weimer
  2021-06-02 18:00       ` Adhemerval Zanella
  1 sibling, 1 reply; 39+ messages in thread
From: Florian Weimer @ 2021-06-02 17:49 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> +/* The remainder of this file is used to keep specific symbol versions
>> +   occupied, so that ld does not generate weak symbol version
>> +   definitions.  */
>> +
>
> I think it should built only for SHARED.

That's handled externally in dlfcn/Makefile (libdl-shared-only-routines).

Thanks,
Florian


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/16] dlfcn: Move dlmopen into libc
  2021-06-02 17:49     ` Florian Weimer
@ 2021-06-02 18:00       ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 18:00 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha



On 02/06/2021 14:49, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>>> +/* The remainder of this file is used to keep specific symbol versions
>>> +   occupied, so that ld does not generate weak symbol version
>>> +   definitions.  */
>>> +
>>
>> I think it should built only for SHARED.
> 
> That's handled externally in dlfcn/Makefile (libdl-shared-only-routines).
> 

Ok, so you can ignore this suggestion then.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required
  2021-05-31 14:12 ` [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required Florian Weimer
@ 2021-06-02 18:08   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 18:08 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> This commit removes the ELF constructor and internal variables from
> dlfcn, and adjusts the test suite not to use $(libdl).  The libdl.so
> symbolic link is no longer installed.
> 
> Moving the dlfcn object file to libdl-shared-only-routines ensures
> that libdl.a is empty.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  Makeconfig               |   6 --
>  dlfcn/Makefile           |  40 +++------
>  dlfcn/dlfcn.c            |  18 ----
>  elf/Makefile             | 172 +++++++--------------------------------
>  htl/Makefile             |   1 -
>  iconvdata/Makefile       |   1 -
>  include/dlfcn.h          |  18 ----
>  malloc/Makefile          |   3 -
>  misc/Makefile            |   2 -
>  nptl/Makefile            |   7 --
>  nss/Makefile             |   5 --
>  resolv/Makefile          |  19 ++---
>  stdlib/Makefile          |   8 +-
>  string/Makefile          |   1 -
>  sysdeps/mips/Makefile    |   1 -
>  sysdeps/pthread/Makefile |   6 +-
>  sysdeps/x86/Makefile     |  13 +--
>  17 files changed, 56 insertions(+), 265 deletions(-)
> 
> diff --git a/Makeconfig b/Makeconfig
> index 1d5e45926c..c3496452b6 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -1255,12 +1255,6 @@ endif
>  endif # build-shared
>  
>  
> -ifeq ($(build-shared),yes)
> -libdl = $(common-objpfx)dlfcn/libdl.so$(libdl.so-version)
> -else
> -libdl = $(common-objpfx)dlfcn/libdl.a
> -endif
> -
>  ifeq ($(build-shared),yes)
>  libm = $(common-objpfx)math/libm.so$(libm.so-version)
>  libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)

Ok.

> diff --git a/dlfcn/Makefile b/dlfcn/Makefile
> index a471d86071..4d17f770a1 100644
> --- a/dlfcn/Makefile
> +++ b/dlfcn/Makefile
> @@ -22,9 +22,7 @@ include ../Makeconfig
>  headers		:= bits/dlfcn.h dlfcn.h
>  extra-libs	:= libdl
>  libdl-routines	:= dlfcn
> -routines	:= $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines)))
> -elide-routines.os := $(routines)
> -routines += \
> +routines = \
>    dladdr \
>    dladdr1 \
>    dlclose \

Ok.

> @@ -38,9 +36,16 @@ routines += \
>  
>  extra-libs-others := libdl
>  
> +libdl-shared-only-routines += dlfcn
> +
> +# Pretend that libdl.so is a linker script, so that the symbolic
> +# link is not installed.
> +install-lib-ldscripts = libdl.so
> +$(inst_libdir)/libdl.so:
> +
>  ifeq ($(build-shared),yes)
>  routines += dlopenold
> -shared-only-routines := dlopenold dlfcn
> +shared-only-routines := dlopenold
>  endif
>  
>  ifeq (yes,$(build-shared))

Ok.

> @@ -87,77 +92,54 @@ ifeq ($(build-shared),yes)
>  tests: $(test-modules)
>  endif
>  
> -$(objpfx)glrefmain: $(libdl)
>  $(objpfx)glrefmain.out: $(objpfx)glrefmain \
>  			$(objpfx)glreflib1.so $(objpfx)glreflib2.so
>  
> -$(objpfx)failtest: $(libdl)
>  $(objpfx)failtest.out: $(objpfx)failtestmod.so
>  
> -$(objpfx)tst-dladdr: $(libdl)
>  $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so
>  
> -$(objpfx)tst-dlinfo: $(libdl)
>  $(objpfx)tst-dlinfo.out: $(objpfx)glreflib3.so
>  LDFLAGS-glreflib3.so = -Wl,-rpath,:
>  
>  LDFLAGS-default = $(LDFLAGS-rdynamic)
> -$(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
> -$(objpfx)defaultmod1.so: $(libdl)
> +$(objpfx)default: $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
>  LDFLAGS-defaultmod2.so = $(LDFLAGS-Bsymbolic)
> -$(objpfx)defaultmod2.so: $(libdl)
>  
> -$(objpfx)errmsg1: $(libdl)
>  $(objpfx)errmsg1.out: $(objpfx)errmsg1 $(objpfx)errmsg1mod.so
>  
> -$(objpfx)tstatexit: $(libdl)
>  $(objpfx)tstatexit.out: $(objpfx)tstatexit $(objpfx)modatexit.so
>  
> -$(objpfx)tstcxaatexit: $(libdl)
>  $(objpfx)tstcxaatexit.out: $(objpfx)tstcxaatexit $(objpfx)modcxaatexit.so
>  
> -$(objpfx)tststatic: $(objpfx)libdl.a
>  $(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so
>  
> -$(objpfx)tststatic2: $(objpfx)libdl.a
>  $(objpfx)tststatic2.out: $(objpfx)tststatic2 $(objpfx)modstatic.so \
>  			 $(objpfx)modstatic2.so
>  
> -$(objpfx)modstatic2.so: $(libdl)
> -
> -$(objpfx)tststatic3: $(objpfx)libdl.a
>  $(objpfx)tststatic3.out: $(objpfx)tststatic3 $(objpfx)modstatic3.so
>  
> -$(objpfx)tststatic4: $(objpfx)libdl.a
>  $(objpfx)tststatic4.out: $(objpfx)tststatic4 $(objpfx)modstatic3.so
>  
> -$(objpfx)tststatic5: $(objpfx)libdl.a
>  $(objpfx)tststatic5.out: $(objpfx)tststatic5 $(objpfx)modstatic5.so
>  
> -$(objpfx)bug-dlopen1: $(libdl)
> -
> -$(objpfx)bug-dlsym1: $(libdl) $(objpfx)bug-dlsym1-lib2.so
> +$(objpfx)bug-dlsym1: $(objpfx)bug-dlsym1-lib2.so
>  $(objpfx)bug-dlsym1.out: $(objpfx)bug-dlsym1-lib1.so \
>  			 $(objpfx)bug-dlsym1-lib2.so
>  $(objpfx)bug-dlsym1-lib1.so: $(objpfx)bug-dlsym1-lib2.so
>  
> -$(objpfx)bug-atexit1: $(libdl)
>  $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
>  
> -$(objpfx)bug-atexit2: $(libdl)
>  $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
>  
>  ifneq (,$(CXX))
>  LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
>  $(objpfx)bug-atexit3-lib.so: $(libsupport)
> -$(objpfx)bug-atexit3: $(libdl)
>  $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
>  endif
>  
>  $(objpfx)bug-dl-leaf: $(objpfx)bug-dl-leaf-lib.so
>  $(objpfx)bug-dl-leaf.out: $(objpfx)bug-dl-leaf-lib-cb.so
> -$(objpfx)bug-dl-leaf-lib.so: $(libdl)
>  $(objpfx)bug-dl-leaf-lib-cb.so: $(objpfx)bug-dl-leaf-lib.so
>  
> -$(objpfx)tst-rec-dlopen: $(libdl)
>  $(objpfx)tst-rec-dlopen.out: $(objpfx)moddummy1.so $(objpfx)moddummy2.so

Ok.

> diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c
> index ef750bc27a..e7fa01ecf5 100644
> --- a/dlfcn/dlfcn.c
> +++ b/dlfcn/dlfcn.c
> @@ -19,24 +19,6 @@
>  #include <dlfcn.h>
>  #include <shlib-compat.h>
>  
> -int __dlfcn_argc attribute_hidden;
> -char **__dlfcn_argv attribute_hidden;
> -
> -
> -static void
> -init (int argc, char *argv[])
> -{
> -  __dlfcn_argc = argc;
> -  __dlfcn_argv = argv;
> -}
> -
> -static void (*const init_array []) (int argc, char *argv[])
> -     __attribute__ ((section (".init_array"), aligned (sizeof (void *))))
> -     __attribute_used__ =
> -{
> -  init
> -};
> -
>  /* The remainder of this file is used to keep specific symbol versions
>     occupied, so that ld does not generate weak symbol version
>     definitions.  */

Ok.

> diff --git a/elf/Makefile b/elf/Makefile
> index 0ec736bb0f..e9788d3d4f 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -673,8 +673,6 @@ $(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \
>  	chmod 555 $@.new
>  	mv -f $@.new $@
>  
> -$(objpfx)sprof: $(libdl)
> -
>  $(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
>  
>  $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)

Ok.

> @@ -699,28 +697,21 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
>  test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
>  generated += $(addsuffix .so,$(strip $(modules-names)))
>  
> -$(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
> -$(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
> -$(objpfx)testobj3.so: $(libdl)
> -$(objpfx)testobj4.so: $(libdl)
> -$(objpfx)testobj5.so: $(libdl)
> -$(objpfx)testobj6.so: $(objpfx)testobj1.so $(objpfx)testobj2.so $(libdl)
> +$(objpfx)testobj1_1.so: $(objpfx)testobj1.so
> +$(objpfx)testobj2.so: $(objpfx)testobj1.so
> +$(objpfx)testobj6.so: $(objpfx)testobj1.so $(objpfx)testobj2.so
>  $(objpfx)failobj.so: $(objpfx)testobj6.so
>  $(objpfx)dep1.so: $(objpfx)dep2.so $(objpfx)dep4.so
>  $(objpfx)dep2.so: $(objpfx)dep3.so $(objpfx)dep4.so
>  $(objpfx)dep4.so: $(objpfx)dep3.so
>  $(objpfx)nodelmod3.so: $(objpfx)nodelmod4.so
> -$(objpfx)nextmod1.so: $(libdl)
> -$(objpfx)neededobj1.so: $(libdl)
> -$(objpfx)neededobj2.so: $(objpfx)neededobj1.so $(libdl)
> -$(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so $(libdl)
> +$(objpfx)neededobj2.so: $(objpfx)neededobj1.so
> +$(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so
>  $(objpfx)neededobj4.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
> -			$(objpfx)neededobj3.so $(libdl)
> +			$(objpfx)neededobj3.so
>  $(objpfx)neededobj6.so: $(objpfx)neededobj5.so
>  $(objpfx)unload2mod.so: $(objpfx)unload2dep.so
> -$(objpfx)ltglobmod2.so: $(libdl)
>  $(objpfx)firstobj.so: $(shared-thread-library)
> -$(objpfx)globalmod1.so: $(libdl)
>  $(objpfx)reldep4mod1.so: $(objpfx)reldep4mod3.so
>  $(objpfx)reldep4mod2.so: $(objpfx)reldep4mod4.so
>  $(objpfx)dblloadmod1.so: $(objpfx)dblloadmod3.so
> @@ -750,14 +741,9 @@ $(objpfx)unload3mod2.so: $(objpfx)unload3mod3.so
>  $(objpfx)unload3mod3.so: $(objpfx)unload3mod4.so
>  $(objpfx)unload4mod1.so: $(objpfx)unload4mod2.so $(objpfx)unload4mod3.so
>  $(objpfx)unload4mod2.so: $(objpfx)unload4mod4.so $(objpfx)unload4mod3.so
> -$(objpfx)unload6mod1.so: $(libdl)
> -$(objpfx)unload6mod2.so: $(libdl)
> -$(objpfx)unload6mod3.so: $(libdl)
> -$(objpfx)unload7mod1.so: $(libdl)
>  $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
>  $(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
>  $(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
> -$(objpfx)unload8mod3.so: $(libdl)
>  $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
>  $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so
>  $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so

Ok.

> @@ -766,8 +752,6 @@ $(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so
>  $(objpfx)tst-null-argv: $(objpfx)tst-null-argv-lib.so
>  $(objpfx)tst-tlsalign: $(objpfx)tst-tlsalign-lib.so
>  $(objpfx)tst-nodelete-opened.out: $(objpfx)tst-nodelete-opened-lib.so
> -$(objpfx)tst-nodelete-opened: $(libdl)
> -$(objpfx)tst-noload: $(libdl)
>  
>  $(objpfx)tst-tlsalign-extern: $(objpfx)tst-tlsalign-vars.o
>  $(objpfx)tst-tlsalign-extern-static: $(objpfx)tst-tlsalign-vars.o
> @@ -842,30 +826,25 @@ ifeq ($(build-shared),yes)
>  tests: $(test-modules)
>  endif
>  
> -$(objpfx)loadtest: $(libdl)
>  LDFLAGS-loadtest = -rdynamic
>  
>  $(objpfx)loadtest.out: $(test-modules)
>  
> -$(objpfx)neededtest: $(libdl)
>  $(objpfx)neededtest.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
>  			 $(objpfx)neededobj3.so
>  
> -$(objpfx)neededtest2: $(libdl)
>  $(objpfx)neededtest2.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
>  			  $(objpfx)neededobj3.so
>  
> -$(objpfx)neededtest3: $(libdl)
>  $(objpfx)neededtest3.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
>  			  $(objpfx)neededobj3.so $(objpfx)neededobj4.so
>  
> -$(objpfx)neededtest4: $(libdl) $(objpfx)neededobj1.so
> +$(objpfx)neededtest4: $(objpfx)neededobj1.so
>  $(objpfx)neededtest4.out: $(objpfx)neededobj5.so $(objpfx)neededobj6.so
>  
> -$(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so $(libdl)
> +$(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so
>  LDFLAGS-restest1 = -rdynamic
>  
> -$(objpfx)restest2: $(libdl)
>  LDFLAGS-restest2 = -rdynamic
>  
>  $(objpfx)restest1.out: $(test-modules)
> @@ -877,31 +856,24 @@ $(objpfx)preloadtest.out: $(preloadtest-preloads:%=$(objpfx)%.so)
>  preloadtest-ENV = \
>    LD_PRELOAD=$(subst $(empty) ,:,$(strip $(preloadtest-preloads:=.so)))
>  
> -$(objpfx)loadfail: $(libdl)
>  LDFLAGS-loadfail = -rdynamic
>  
>  $(objpfx)loadfail.out: $(objpfx)failobj.so
>  
> -$(objpfx)multiload: $(libdl)
>  LDFLAGS-multiload = -rdynamic
>  CFLAGS-multiload.c += -DOBJDIR=\"$(elf-objpfx)\"
>  
>  $(objpfx)multiload.out: $(objpfx)testobj1.so
>  
> -$(objpfx)origtest: $(libdl)
>  LDFLAGS-origtest = -rdynamic
>  $(objpfx)origtest.out: $(objpfx)testobj1.so
>  
>  ifeq ($(have-thread-library),yes)
> -$(objpfx)resolvfail: $(libdl) $(shared-thread-library)
> -else
> -$(objpfx)resolvfail: $(libdl)
> +$(objpfx)resolvfail: $(shared-thread-library)
>  endif
>  
> -$(objpfx)constload1: $(libdl)
>  $(objpfx)constload1.out: $(objpfx)constload2.so $(objpfx)constload3.so
>  
> -$(objpfx)circleload1: $(libdl)
>  $(objpfx)circleload1.out: $(objpfx)circlemod1.so \
>  			  $(objpfx)circlemod1a.so
>  

Ok.

> @@ -920,7 +892,7 @@ $(objpfx)vismain: $(addprefix $(objpfx),vismod1.so vismod2.so)
>  $(objpfx)vismain.out: $(addprefix $(objpfx),vismod3.so)
>  vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),vismod3.so)
>  
> -$(objpfx)noload: $(objpfx)testobj1.so $(libdl)
> +$(objpfx)noload: $(objpfx)testobj1.so
>  LDFLAGS-noload = -rdynamic -Wl,--no-as-needed
>  $(objpfx)noload.out: $(objpfx)testobj5.so
>  
> @@ -932,16 +904,13 @@ noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace
>  LDFLAGS-nodelete = -rdynamic
>  LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete
>  LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete
> -$(objpfx)nodelete: $(libdl)
>  $(objpfx)nodelete.out: $(objpfx)nodelmod1.so $(objpfx)nodelmod2.so \
>  		       $(objpfx)nodelmod3.so
>  
>  LDFLAGS-nodlopenmod.so = -Wl,--enable-new-dtags,-z,nodlopen
> -$(objpfx)nodlopen: $(libdl)
>  $(objpfx)nodlopen.out: $(objpfx)nodlopenmod.so
>  
>  $(objpfx)nodlopenmod2.so: $(objpfx)nodlopenmod.so
> -$(objpfx)nodlopen2: $(libdl)
>  $(objpfx)nodlopen2.out: $(objpfx)nodlopenmod2.so
>  
>  $(objpfx)filtmod1.so: $(objpfx)filtmod1.os $(objpfx)filtmod2.so
> @@ -954,31 +923,23 @@ $(objpfx)filter: $(objpfx)filtmod1.so
>  # This does not link against libc.
>  CFLAGS-filtmod1.c += $(no-stack-protector)
>  
> -$(objpfx)unload: $(libdl)
>  $(objpfx)unload.out: $(objpfx)unloadmod.so
>  
> -$(objpfx)reldep: $(libdl)
>  $(objpfx)reldep.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod2.so
>  
> -$(objpfx)reldep2: $(libdl)
>  $(objpfx)reldep2.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod3.so
>  
> -$(objpfx)reldep3: $(libdl)
>  $(objpfx)reldep3.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so
>  
> -$(objpfx)reldep4: $(libdl)
>  $(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so
>  
> -$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so $(libdl)
> +$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so
>  LDFLAGS-next = -Wl,--no-as-needed
>  
> -$(objpfx)unload2: $(libdl)
>  $(objpfx)unload2.out: $(objpfx)unload2mod.so $(objpfx)unload2dep.so
>  
> -$(objpfx)lateglobal: $(libdl)
>  $(objpfx)lateglobal.out: $(objpfx)ltglobmod1.so $(objpfx)ltglobmod2.so
>  
> -$(objpfx)tst-pathopt: $(libdl)
>  $(objpfx)tst-pathopt.out: tst-pathopt.sh $(objpfx)tst-pathopt \
>  			  $(objpfx)pathoptobj.so
>  	$(SHELL) $< $(common-objpfx) '$(test-wrapper-env)' \
> @@ -998,55 +959,40 @@ $(objpfx)tst-rtld-preload.out: tst-rtld-preload.sh $(objpfx)ld.so \
>  		    '$(rpath-link)' '$(tst-rtld-preload-OBJS)' > $@; \
>  	$(evaluate-test)
>  
> -$(objpfx)initfirst: $(libdl)
>  $(objpfx)initfirst.out: $(objpfx)firstobj.so
>  
>  $(objpfx)global: $(objpfx)globalmod1.so
>  $(objpfx)global.out: $(objpfx)reldepmod1.so
>  
> -$(objpfx)dblload: $(libdl)
>  $(objpfx)dblload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
>  
> -$(objpfx)dblunload: $(libdl)
>  $(objpfx)dblunload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
>  
> -$(objpfx)reldep5: $(libdl)
>  $(objpfx)reldep5.out: $(objpfx)reldepmod5.so $(objpfx)reldepmod6.so
>  
> -$(objpfx)reldep6: $(libdl)
>  $(objpfx)reldep6.out: $(objpfx)reldep6mod3.so $(objpfx)reldep6mod4.so
>  
> -$(objpfx)reldep7: $(libdl)
>  $(objpfx)reldep7.out: $(objpfx)reldep7mod1.so $(objpfx)reldep7mod2.so
>  
> -$(objpfx)reldep8: $(libdl)
>  $(objpfx)reldep8.out: $(objpfx)reldep8mod3.so
>  
>  LDFLAGS-nodel2mod2.so = -Wl,--enable-new-dtags,-z,nodelete
> -$(objpfx)nodelete2: $(libdl)
>  $(objpfx)nodelete2.out: $(objpfx)nodel2mod3.so
>  
> -$(objpfx)reldep9: $(libdl)
>  $(objpfx)reldep9.out: $(objpfx)reldep9mod3.so
>  
>  $(objpfx)tst-tls3: $(objpfx)tst-tlsmod1.so
>  
> -$(objpfx)tst-tls4: $(libdl)
>  $(objpfx)tst-tls4.out: $(objpfx)tst-tlsmod2.so
>  
> -$(objpfx)tst-tls5: $(libdl)
>  $(objpfx)tst-tls5.out: $(objpfx)tst-tlsmod2.so
>  
> -$(objpfx)tst-tls6: $(libdl)
>  $(objpfx)tst-tls6.out: $(objpfx)tst-tlsmod2.so
>  
> -$(objpfx)tst-tls7: $(libdl)
>  $(objpfx)tst-tls7.out: $(objpfx)tst-tlsmod3.so
>  
> -$(objpfx)tst-tls8: $(libdl)
>  $(objpfx)tst-tls8.out: $(objpfx)tst-tlsmod3.so $(objpfx)tst-tlsmod4.so
>  
> -$(objpfx)tst-tls9: $(libdl)
>  $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
>  
>  $(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
> @@ -1055,67 +1001,53 @@ $(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
>  
>  $(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
>  
> -$(objpfx)tst-tls13: $(libdl)
>  $(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
>  
> -$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl)
> +$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so
>  $(objpfx)tst-tls14.out: $(objpfx)tst-tlsmod14b.so
>  
> -$(objpfx)tst-tls15: $(libdl)
>  $(objpfx)tst-tls15.out: $(objpfx)tst-tlsmod15a.so $(objpfx)tst-tlsmod15b.so
>  
> -$(objpfx)tst-tls-dlinfo: $(libdl)
>  $(objpfx)tst-tls-dlinfo.out: $(objpfx)tst-tlsmod2.so
>  
>  
>  
> -$(objpfx)tst-tls16: $(libdl)
>  $(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so
>  
> -$(objpfx)tst-tls17: $(libdl)
>  $(objpfx)tst-tls17.out: $(objpfx)tst-tlsmod17b.so
>  $(patsubst %,$(objpfx)%.os,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.os: tst-tlsmod17a.c
>  	$(compile-command.c) -DN=$*
>  $(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.so: $(objpfx)ld.so
>  $(objpfx)tst-tlsmod17b.so: $(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules))
>  
> -$(objpfx)tst-tls18: $(libdl)
>  $(objpfx)tst-tls18.out: $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules))
>  $(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : tst-tlsmod18a.c
>  	$(compile-command.c) -DN=$*
>  $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so
>  
> -$(objpfx)tst-tls19: $(libdl)
>  $(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so
>  
>  CFLAGS-tst-align.c += $(stack-align-test-flags)
>  CFLAGS-tst-align2.c += $(stack-align-test-flags)
>  CFLAGS-tst-alignmod.c += $(stack-align-test-flags)
>  CFLAGS-tst-alignmod2.c += $(stack-align-test-flags)
> -$(objpfx)tst-align: $(libdl)
>  $(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
>  $(objpfx)tst-align2: $(objpfx)tst-alignmod2.so
>  
> -$(objpfx)unload3: $(libdl)
>  $(objpfx)unload3.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
>  		      $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
>  
> -$(objpfx)unload4: $(libdl)
>  $(objpfx)unload4.out: $(objpfx)unload4mod1.so $(objpfx)unload4mod3.so
>  
> -$(objpfx)unload5: $(libdl)
>  $(objpfx)unload5.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
>  		      $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
>  
> -$(objpfx)unload6: $(libdl)
>  $(objpfx)unload6.out: $(objpfx)unload6mod1.so $(objpfx)unload6mod2.so \
>  		      $(objpfx)unload6mod3.so
>  
> -$(objpfx)unload7: $(libdl)
>  $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so
>  unload7-ENV = MALLOC_PERTURB_=85
>  
> -$(objpfx)unload8: $(libdl)
>  $(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
>  
>  ifdef libdl

Ok.

> @@ -1124,7 +1056,6 @@ $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
>  endif
>  
>  ifeq ($(have-z-execstack),yes)
> -$(objpfx)tst-execstack: $(libdl)
>  $(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
>  CPPFLAGS-tst-execstack.c += -DUSE_PTHREADS=0
>  LDFLAGS-tst-execstack = -Wl,-z,noexecstack
> @@ -1159,7 +1090,6 @@ $(objpfx)tst-array3-cmp.out: tst-array1.exp $(objpfx)tst-array3.out
>  	cmp $^ > $@; \
>  	$(evaluate-test)
>  
> -$(objpfx)tst-array4: $(libdl)
>  $(objpfx)tst-array4.out: $(objpfx)tst-array2dep.so
>  $(objpfx)tst-array4-cmp.out: tst-array4.exp $(objpfx)tst-array4.out
>  	cmp $^ > $@; \
> @@ -1180,7 +1110,6 @@ CFLAGS-tst-pie2.c += $(pie-ccflag)
>  
>  $(objpfx)tst-piemod1.so: $(libsupport)
>  $(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
> -$(objpfx)tst-dlopen-pie: $(libdl)
>  $(objpfx)tst-dlopen-pie.out: $(objpfx)tst-pie1
>  
>  ifeq (yes,$(build-shared))
> @@ -1239,7 +1168,6 @@ $(objpfx)check-wx-segment.out: $(..)scripts/check-wx-segment.py \
>  	$(evaluate-test)
>  generated += check-wx-segment.out
>  
> -$(objpfx)tst-dlmodcount: $(libdl)
>  $(objpfx)tst-dlmodcount.out: $(test-modules)
>  
>  $(all-built-dso:=.jmprel): %.jmprel: % Makefile
> @@ -1292,38 +1220,31 @@ $(objpfx)check-initfini.out: $(..)scripts/check-initfini.awk \
>  	$(evaluate-test)
>  generated += check-initfini.out
>  
> -$(objpfx)tst-dlopenrpathmod.so: $(libdl)
> -$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so $(libdl)
> +$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so
>  CFLAGS-tst-dlopenrpath.c += -DPFX=\"$(objpfx)\"
>  LDFLAGS-tst-dlopenrpathmod.so += -Wl,-rpath,\$$ORIGIN/test-subdir
>  $(objpfx)tst-dlopenrpath.out: $(objpfx)firstobj.so
>  
>  $(objpfx)tst-deep1mod2.so: $(objpfx)tst-deep1mod3.so
> -$(objpfx)tst-deep1: $(libdl) $(objpfx)tst-deep1mod1.so
> +$(objpfx)tst-deep1: $(objpfx)tst-deep1mod1.so
>  $(objpfx)tst-deep1.out: $(objpfx)tst-deep1mod2.so
>  LDFLAGS-tst-deep1 += -rdynamic
>  tst-deep1mod3.so-no-z-defs = yes
>  
> -$(objpfx)tst-dlmopen1mod.so: $(libdl)
> -$(objpfx)tst-dlmopen1: $(libdl)
>  $(objpfx)tst-dlmopen1.out: $(objpfx)tst-dlmopen1mod.so
>  
> -$(objpfx)tst-dlmopen2: $(libdl)
>  $(objpfx)tst-dlmopen2.out: $(objpfx)tst-dlmopen1mod.so
>  
> -$(objpfx)tst-dlmopen3: $(libdl)
>  $(objpfx)tst-dlmopen3.out: $(objpfx)tst-dlmopen1mod.so
>  
>  $(objpfx)tst-audit1.out: $(objpfx)tst-auditmod1.so
>  tst-audit1-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
>  
> -$(objpfx)tst-audit2: $(libdl)
>  $(objpfx)tst-audit2.out: $(objpfx)tst-auditmod1.so $(objpfx)tst-auditmod9b.so
>  # Prevent GCC-5 from translating a malloc/memset pair into calloc
>  CFLAGS-tst-audit2.c += -fno-builtin
>  tst-audit2-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
>  
> -$(objpfx)tst-audit9: $(libdl)
>  $(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so
>  tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so
>  

Ok.

> @@ -1331,10 +1252,8 @@ $(objpfx)tst-audit8: $(libm)
>  $(objpfx)tst-audit8.out: $(objpfx)tst-auditmod1.so
>  tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
>  
> -$(objpfx)tst-global1: $(libdl)
>  $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
>  
> -$(objpfx)order2: $(libdl)
>  $(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so
>  $(objpfx)order2-cmp.out: $(objpfx)order2.out
>  	(echo "12345" | cmp $< -) > $@; \
> @@ -1355,7 +1274,6 @@ tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child"
>  CFLAGS-tst-ptrguard1-static.c += -DPTRGUARD_LOCAL
>  tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child"
>  
> -$(objpfx)tst-leaks1: $(libdl)
>  $(objpfx)tst-leaks1-mem.out: $(objpfx)tst-leaks1.out
>  	$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks1.mtrace > $@; \
>  	$(evaluate-test)
> @@ -1368,24 +1286,19 @@ $(objpfx)tst-leaks1-static-mem.out: $(objpfx)tst-leaks1-static.out
>  tst-leaks1-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1.mtrace
>  tst-leaks1-static-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1-static.mtrace
>  
> -$(objpfx)tst-addr1: $(libdl)
> -
> -$(objpfx)tst-thrlock: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-thrlock: $(shared-thread-library)
>  
>  tst-tst-dlopen-tlsmodid-no-pie = yes
> -$(objpfx)tst-dlopen-tlsmodid: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-dlopen-tlsmodid: $(shared-thread-library)
>  $(objpfx)tst-dlopen-tlsmodid.out: $(objpfx)tst-dlopen-self
>  CFLAGS-tst-dlopen-tlsmodid-pie.c += $(pie-ccflag)
> -$(objpfx)tst-dlopen-tlsmodid-pie: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-dlopen-tlsmodid-pie: $(shared-thread-library)
>  $(objpfx)tst-dlopen-tlsmodid-pie.out: $(objpfx)tst-dlopen-self-pie
> -$(objpfx)tst-dlopen-tlsmodid-container: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-dlopen-tlsmodid-container: $(shared-thread-library)
>  LDFLAGS-tst-dlopen-tlsmodid-container += -Wl,-rpath,\$$ORIGIN
>  
>  tst-tst-dlopen-self-no-pie = yes
> -$(objpfx)tst-dlopen-self: $(libdl)
>  CFLAGS-tst-dlopen-self-pie.c += $(pie-ccflag)
> -$(objpfx)tst-dlopen-self-pie: $(libdl)
> -$(objpfx)tst-dlopen-self-container: $(libdl)
>  LDFLAGS-tst-dlopen-self-container += -Wl,-rpath,\$$ORIGIN
>  
>  CFLAGS-ifuncmain1pic.c += $(pic-ccflag)
> @@ -1437,7 +1350,6 @@ $(objpfx)ifuncmain2pic: $(addprefix $(objpfx),ifuncdep2pic.o)
>  $(objpfx)ifuncmain2static: $(addprefix $(objpfx),ifuncdep2.o)
>  $(objpfx)ifuncmain2picstatic: $(addprefix $(objpfx),ifuncdep2pic.o)
>  
> -$(objpfx)ifuncmain3: $(libdl)
>  $(objpfx)ifuncmain3.out: $(objpfx)ifuncmod3.so
>  
>  $(objpfx)ifuncmain5: $(addprefix $(objpfx),ifuncmod5.so)
> @@ -1461,19 +1373,17 @@ $(objpfx)tst-ifunc-fault-bindnow.out: $(objpfx)tst-ifunc-fault-bindnow \
>     $(objpfx)ld.so
>  	$(tst-ifunc-fault-script)
>  
> -$(objpfx)tst-unique1: $(libdl)
>  $(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \
>  			  $(objpfx)tst-unique1mod2.so
>  
> -$(objpfx)tst-unique2: $(libdl) $(objpfx)tst-unique2mod1.so
> +$(objpfx)tst-unique2: $(objpfx)tst-unique2mod1.so
>  $(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so
>  
> -$(objpfx)tst-unique3: $(libdl) $(objpfx)tst-unique3lib.so
> +$(objpfx)tst-unique3: $(objpfx)tst-unique3lib.so
>  $(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so
>  
>  $(objpfx)tst-unique4: $(objpfx)tst-unique4lib.so
>  
> -$(objpfx)tst-nodelete: $(libdl)
>  $(objpfx)tst-nodelete.out: $(objpfx)tst-nodelete-uniquemod.so \
>  			   $(objpfx)tst-nodelete-rtldmod.so \
>  			   $(objpfx)tst-nodelete-zmod.so
> @@ -1481,7 +1391,6 @@ $(objpfx)tst-nodelete.out: $(objpfx)tst-nodelete-uniquemod.so \
>  LDFLAGS-tst-nodelete = -rdynamic
>  LDFLAGS-tst-nodelete-zmod.so = -Wl,--enable-new-dtags,-z,nodelete
>  
> -$(objpfx)tst-nodelete2: $(libdl)
>  $(objpfx)tst-nodelete2.out: $(objpfx)tst-nodelete2mod.so
>  
>  LDFLAGS-tst-nodelete2 = -rdynamic
> @@ -1509,7 +1418,6 @@ $(objpfx)tst-initorder2-cmp.out: tst-initorder2.exp $(objpfx)tst-initorder2.out
>  	cmp $^ > $@; \
>  	$(evaluate-test)
>  
> -$(objpfx)tst-relsort1: $(libdl)
>  $(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
>  $(objpfx)tst-relsort1mod2.so: $(libm)
>  $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
> @@ -1529,13 +1437,11 @@ $(objpfx)tst-unused-dep-cmp.out: $(objpfx)tst-unused-dep.out
>  	$(evaluate-test)
>  
>  $(objpfx)tst-audit11.out: $(objpfx)tst-auditmod11.so $(objpfx)tst-audit11mod1.so
> -$(objpfx)tst-audit11: $(libdl)
>  tst-audit11-ENV = LD_AUDIT=$(objpfx)tst-auditmod11.so
>  $(objpfx)tst-audit11mod1.so: $(objpfx)tst-audit11mod2.so
>  LDFLAGS-tst-audit11mod2.so = -Wl,--version-script=tst-audit11mod2.map,-soname,tst-audit11mod2.so
>  
>  $(objpfx)tst-audit12.out: $(objpfx)tst-auditmod12.so $(objpfx)tst-audit12mod1.so $(objpfx)tst-audit12mod3.so
> -$(objpfx)tst-audit12: $(libdl)
>  tst-audit12-ENV = LD_AUDIT=$(objpfx)tst-auditmod12.so
>  $(objpfx)tst-audit12mod1.so: $(objpfx)tst-audit12mod2.so
>  LDFLAGS-tst-audit12mod2.so = -Wl,--version-script=tst-audit12mod2.map
> @@ -1585,13 +1491,11 @@ $(objpfx)tst-sonamemove-link: $(objpfx)tst-sonamemove-linkmod1.so
>  $(objpfx)tst-sonamemove-link.out: \
>    $(objpfx)tst-sonamemove-runmod1.so \
>    $(objpfx)tst-sonamemove-runmod2.so
> -$(objpfx)tst-sonamemove-dlopen: $(libdl)
>  $(objpfx)tst-sonamemove-dlopen.out: \
>    $(objpfx)tst-sonamemove-runmod1.so \
>    $(objpfx)tst-sonamemove-runmod2.so
>  
> -$(objpfx)tst-dlmopen-dlerror: $(libdl)
> -$(objpfx)tst-dlmopen-dlerror-mod.so: $(libdl) $(libsupport)
> +$(objpfx)tst-dlmopen-dlerror-mod.so: $(libsupport)
>  $(objpfx)tst-dlmopen-dlerror.out: $(objpfx)tst-dlmopen-dlerror-mod.so
>  
>  # Override -z defs, so that we can reference an undefined symbol.
> @@ -1602,7 +1506,6 @@ LDFLAGS-tst-latepthreadmod.so = \
>  # function this_function_is_not_defined.
>  CFLAGS-tst-latepthreadmod.c += -fno-optimize-sibling-calls
>  $(objpfx)tst-latepthreadmod.so: $(shared-thread-library)
> -$(objpfx)tst-latepthread: $(libdl)
>  $(objpfx)tst-latepthread.out: $(objpfx)tst-latepthreadmod.so
>  
>  # The test modules are parameterized by preprocessor macros.
> @@ -1610,7 +1513,7 @@ $(patsubst %,$(objpfx)%.os,$(tst-tls-many-dynamic-modules)): \
>    $(objpfx)tst-tls-manydynamic%mod.os : tst-tls-manydynamicmod.c
>  	$(compile-command.c) \
>  	  -DNAME=tls_global_$* -DSETTER=set_value_$* -DGETTER=get_value_$*
> -$(objpfx)tst-tls-manydynamic: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-tls-manydynamic: $(shared-thread-library)
>  $(objpfx)tst-tls-manydynamic.out: \
>    $(patsubst %,$(objpfx)%.so,$(tst-tls-many-dynamic-modules))
>  
> @@ -1626,8 +1529,6 @@ $(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig
>  		 '$(run-program-env)' > $@; \
>  	$(evaluate-test)
>  
> -$(objpfx)tst-dlsym-error: $(libdl)
> -
>  # Test static linking of all the libraries we can possibly link
>  # together.  Note that in some configurations this may be less than the
>  # complete list of libraries we build but we try to maxmimize this list.
> @@ -1661,7 +1562,6 @@ endif
>  # The application depends on the DSO, and the DSO loads the plugin.
>  # The plugin also depends on the DSO. This creates the circular
>  # dependency via dlopen that we're testing to make sure works.
> -$(objpfx)tst-nodelete-dlclose-dso.so: $(libdl)
>  $(objpfx)tst-nodelete-dlclose-plugin.so: $(objpfx)tst-nodelete-dlclose-dso.so
>  $(objpfx)tst-nodelete-dlclose: $(objpfx)tst-nodelete-dlclose-dso.so
>  $(objpfx)tst-nodelete-dlclose.out: $(objpfx)tst-nodelete-dlclose-dso.so \
> @@ -1670,7 +1570,6 @@ $(objpfx)tst-nodelete-dlclose.out: $(objpfx)tst-nodelete-dlclose-dso.so \
>  tst-env-setuid-ENV = MALLOC_CHECK_=2 MALLOC_MMAP_THRESHOLD_=4096 \
>  		     LD_HWCAP_MASK=0x1
>  
> -$(objpfx)tst-debug1: $(libdl)
>  $(objpfx)tst-debug1.out: $(objpfx)tst-debug1mod1.so
>  
>  $(objpfx)tst-debug1mod1.so: $(objpfx)testobj1.so
> @@ -1692,8 +1591,7 @@ $(objpfx)tst-absolute-zero: $(objpfx)tst-absolute-zero-lib.so
>  
>  # Both the main program and the DSO for tst-libc_dlvsym need to link
>  # against libdl.
> -$(objpfx)tst-libc_dlvsym: $(libdl)
> -$(objpfx)tst-libc_dlvsym-dso.so: $(libsupport) $(libdl)
> +$(objpfx)tst-libc_dlvsym-dso.so: $(libsupport)
>  $(objpfx)tst-libc_dlvsym.out: $(objpfx)tst-libc_dlvsym-dso.so
>  $(objpfx)tst-libc_dlvsym-static: $(common-objpfx)dlfcn/libdl.a
>  tst-libc_dlvsym-static-ENV = \
> @@ -1711,7 +1609,6 @@ $(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
>  
>  CFLAGS-tst-unwind-main.c += -funwind-tables -DUSE_PTHREADS=0
>  
> -$(objpfx)tst-initfinilazyfail: $(libdl)
>  $(objpfx)tst-initfinilazyfail.out: \
>    $(objpfx)tst-initlazyfailmod.so $(objpfx)tst-finilazyfailmod.so
>  # Override -z defs, so that we can reference an undefined symbol.
> @@ -1721,7 +1618,6 @@ LDFLAGS-tst-initlazyfailmod.so = \
>  LDFLAGS-tst-finilazyfailmod.so = \
>    -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
>  
> -$(objpfx)tst-dlopenfail: $(libdl)
>  $(objpfx)tst-dlopenfail.out: \
>    $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so
>  # Order matters here.  tst-dlopenfaillinkmod.so's soname ensures a
> @@ -1733,7 +1629,6 @@ $(objpfx)tst-dlopenfailmod1.so: \
>    $(shared-thread-library) $(objpfx)tst-dlopenfaillinkmod.so
>  LDFLAGS-tst-dlopenfaillinkmod.so = -Wl,-soname,tst-dlopenfail-missingmod.so
>  $(objpfx)tst-dlopenfailmod2.so: $(objpfx)tst-dlopenfailnodelmod.so
> -$(objpfx)tst-dlopenfail-2: $(libdl)
>  $(objpfx)tst-dlopenfail-2.out: \
>    $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so \
>    $(objpfx)tst-dlopenfailmod3.so
> @@ -1745,7 +1640,6 @@ LDFLAGS-tst-dlopenfailnodelmod.so = \
>  # tst-dlopenfailnodelmod.so uses them for error reporting.
>  LDFLAGS-tst-dlopenfail = -Wl,-E
>  
> -$(objpfx)tst-dlopen-nodelete-reloc: $(libdl)
>  $(objpfx)tst-dlopen-nodelete-reloc.out: \
>    $(objpfx)tst-dlopen-nodelete-reloc-mod1.so \
>    $(objpfx)tst-dlopen-nodelete-reloc-mod2.so \
> @@ -1774,8 +1668,6 @@ $(objpfx)tst-dlopen-nodelete-reloc-mod5.so: \
>  LDFLAGS-tst-dlopen-nodelete-reloc-mod5.so = -Wl,-z,nodelete,--no-as-needed
>  tst-dlopen-nodelete-reloc-mod5.so-no-z-defs = yes
>  tst-dlopen-nodelete-reloc-mod7.so-no-z-defs = yes
> -$(objpfx)tst-dlopen-nodelete-reloc-mod8.so: $(libdl)
> -$(objpfx)tst-dlopen-nodelete-reloc-mod10.so: $(libdl)
>  tst-dlopen-nodelete-reloc-mod11.so-no-z-defs = yes
>  $(objpfx)tst-dlopen-nodelete-reloc-mod13.so: \
>    $(objpfx)tst-dlopen-nodelete-reloc-mod12.so
> @@ -1791,21 +1683,18 @@ $(objpfx)tst-dlopen-nodelete-reloc-mod17.so: \
>  LDFLAGS-tst-dlopen-nodelete-reloc-mod17.so = -Wl,--no-as-needed
>  
>  $(objpfx)tst-ldconfig-ld_so_conf-update.out: $(objpfx)tst-ldconfig-ld-mod.so
> -$(objpfx)tst-ldconfig-ld_so_conf-update: $(libdl)
>  
>  LDFLAGS-tst-filterobj-flt.so = -Wl,--filter=$(objpfx)tst-filterobj-filtee.so
>  $(objpfx)tst-filterobj: $(objpfx)tst-filterobj-flt.so
> -$(objpfx)tst-filterobj-dlopen: $(libdl)
>  $(objpfx)tst-filterobj.out: $(objpfx)tst-filterobj-filtee.so
>  $(objpfx)tst-filterobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
>  
>  LDFLAGS-tst-filterobj-aux.so = -Wl,--auxiliary=$(objpfx)tst-filterobj-filtee.so
>  $(objpfx)tst-auxobj: $(objpfx)tst-filterobj-aux.so
> -$(objpfx)tst-auxobj-dlopen: $(libdl)
>  $(objpfx)tst-auxobj.out: $(objpfx)tst-filterobj-filtee.so
>  $(objpfx)tst-auxobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
>  
> -$(objpfx)tst-single_threaded: $(objpfx)tst-single_threaded-mod1.so $(libdl)
> +$(objpfx)tst-single_threaded: $(objpfx)tst-single_threaded-mod1.so
>  $(objpfx)tst-single_threaded.out: \
>    $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so
>  $(objpfx)tst-single_threaded-static-dlopen: \
> @@ -1813,13 +1702,13 @@ $(objpfx)tst-single_threaded-static-dlopen: \
>  $(objpfx)tst-single_threaded-static-dlopen.out: \
>    $(objpfx)tst-single_threaded-mod2.so
>  $(objpfx)tst-single_threaded-pthread: \
> -  $(objpfx)tst-single_threaded-mod1.so $(libdl) $(shared-thread-library)
> +  $(objpfx)tst-single_threaded-mod1.so $(shared-thread-library)
>  $(objpfx)tst-single_threaded-pthread.out: \
>    $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so \
>    $(objpfx)tst-single_threaded-mod4.so
>  $(objpfx)tst-single_threaded-pthread-static: $(static-thread-library)
>  
> -$(objpfx)tst-tls-ie: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-tls-ie: $(shared-thread-library)
>  $(objpfx)tst-tls-ie.out: \
>    $(objpfx)tst-tls-ie-mod0.so \
>    $(objpfx)tst-tls-ie-mod1.so \
> @@ -1829,7 +1718,7 @@ $(objpfx)tst-tls-ie.out: \
>    $(objpfx)tst-tls-ie-mod5.so \
>    $(objpfx)tst-tls-ie-mod6.so
>  
> -$(objpfx)tst-tls-ie-dlmopen: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-tls-ie-dlmopen: $(shared-thread-library)
>  $(objpfx)tst-tls-ie-dlmopen.out: \
>    $(objpfx)tst-tls-ie-mod0.so \
>    $(objpfx)tst-tls-ie-mod1.so \
> @@ -1839,8 +1728,6 @@ $(objpfx)tst-tls-ie-dlmopen.out: \
>    $(objpfx)tst-tls-ie-mod5.so \
>    $(objpfx)tst-tls-ie-mod6.so
>  
> -$(objpfx)tst-tls-surplus: $(libdl)
> -
>  $(objpfx)argv0test.out: tst-rtld-argv0.sh $(objpfx)ld.so \
>  			$(objpfx)argv0test
>  	$(SHELL) $< $(objpfx)ld.so $(objpfx)argv0test \
> @@ -1896,7 +1783,6 @@ $(objpfx)tst-glibc-hwcaps-prepend.out: \
>  # Like tst-glibc-hwcaps-prepend, but uses a container and loads the
>  # library via ld.so.cache.  Test setup is contained in the test
>  # itself.
> -$(objpfx)tst-glibc-hwcaps-prepend-cache: $(libdl)
>  $(objpfx)tst-glibc-hwcaps-prepend-cache.out: \
>    $(objpfx)tst-glibc-hwcaps-prepend-cache $(objpfx)libmarkermod1-1.so \
>    $(objpfx)libmarkermod1-2.so $(objpfx)libmarkermod1-3.so
> @@ -1941,12 +1827,12 @@ $(objpfx)tst-rtld-help.out: $(objpfx)ld.so
>  
>  # Reuses tst-tls-many-dynamic-modules
>  tst-tls20mod-bad.so-no-z-defs = yes
> -$(objpfx)tst-tls20: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-tls20: $(shared-thread-library)
>  $(objpfx)tst-tls20.out: $(objpfx)tst-tls20mod-bad.so \
>  			$(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
>  
>  # Reuses tst-tls-many-dynamic-modules
> -$(objpfx)tst-tls21: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-tls21: $(shared-thread-library)
>  $(objpfx)tst-tls21.out: $(objpfx)tst-tls21mod.so
>  $(objpfx)tst-tls21mod.so: $(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
>  

Ok.

> diff --git a/htl/Makefile b/htl/Makefile
> index 4c5767b04c..8c5ad3c5de 100644
> --- a/htl/Makefile
> +++ b/htl/Makefile
> @@ -215,7 +215,6 @@ $(addprefix $(objpfx), \
>      $(tests-nolibpthread), \
>      $(tests) $(tests-internal) $(xtests) $(test-srcs) $(tests-container))): \
>  	$(objpfx)libpthread.so
> -$(objpfx)tst-unload: $(libdl)
>  # $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
>  # since otherwise libpthread.so comes before libc.so when linking.
>  $(addprefix $(objpfx), $(tests-reverse)): \

Ok.

> diff --git a/iconvdata/Makefile b/iconvdata/Makefile
> index 55c527a5f7..6eeb92f4b3 100644
> --- a/iconvdata/Makefile
> +++ b/iconvdata/Makefile
> @@ -307,7 +307,6 @@ $(objpfx)bug-iconv1.out: $(objpfx)gconv-modules \
>  			 $(addprefix $(objpfx),$(modules.so))
>  $(objpfx)bug-iconv2.out: $(objpfx)gconv-modules \
>  			 $(addprefix $(objpfx),$(modules.so))
> -$(objpfx)bug-iconv3: $(libdl)
>  $(objpfx)bug-iconv3.out: $(objpfx)gconv-modules \
>  			 $(addprefix $(objpfx),$(modules.so))
>  $(objpfx)bug-iconv5.out: $(objpfx)gconv-modules \

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 4274eddbc9..711bbb0f12 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -19,16 +19,6 @@
>  extern int __libc_argc attribute_hidden;
>  extern char **__libc_argv attribute_hidden;
>  
> -#ifdef SHARED
> -/* Locally stored program arguments.  */
> -extern int __dlfcn_argc attribute_hidden;
> -extern char **__dlfcn_argv attribute_hidden;
> -#else
> -# define __dlfcn_argc __libc_argc
> -# define __dlfcn_argv __libc_argv
> -#endif
> -
> -
>  /* Now define the internal interfaces.  */
>  
>  /* Use RTLD_NOW here because:

Ok.

> @@ -101,14 +91,6 @@ libc_hidden_proto (_dl_vsym)
>  extern int _dlerror_run (void (*operate) (void *), void *args);
>  libc_hidden_proto (_dlerror_run)
>  
> -#ifdef SHARED
> -# define DL_CALLER_DECL /* Nothing */
> -# define DL_CALLER RETURN_ADDRESS (0)
> -#else
> -# define DL_CALLER_DECL , void *dl_caller
> -# define DL_CALLER dl_caller
> -#endif
> -
>  struct dlfcn_hook
>  {
>    void *(*dlopen) (const char *file, int mode, void *dl_caller);

Ok.

> diff --git a/malloc/Makefile b/malloc/Makefile
> index 857e2ebbd9..149dc7471f 100644
> --- a/malloc/Makefile
> +++ b/malloc/Makefile
> @@ -244,9 +244,6 @@ $(objpfx)memusage: memusage.sh
>  	&& rm -f $@ && mv $@.new $@ && chmod +x $@
>  
>  
> -# The implementation uses `dlsym'
> -$(objpfx)libmemusage.so: $(libdl)
> -
>  # Extra dependencies
>  $(foreach o,$(all-object-suffixes),$(objpfx)malloc$(o)): arena.c hooks.c
>  

Ok.

> diff --git a/misc/Makefile b/misc/Makefile
> index 38dad737f2..c103b6bff4 100644
> --- a/misc/Makefile
> +++ b/misc/Makefile
> @@ -158,5 +158,3 @@ tst-allocate_once-ENV = MALLOC_TRACE=$(objpfx)tst-allocate_once.mtrace
>  $(objpfx)tst-allocate_once-mem.out: $(objpfx)tst-allocate_once.out
>  	$(common-objpfx)malloc/mtrace $(objpfx)tst-allocate_once.mtrace > $@; \
>  	$(evaluate-test)
> -
> -$(objpfx)tst-gethostid: $(libdl)

Ok.

> diff --git a/nptl/Makefile b/nptl/Makefile
> index 9a5628b751..f7d7a2c7e2 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -497,7 +497,6 @@ $(objpfx)tst-stack3-mem.out: $(objpfx)tst-stack3.out
>  	$(evaluate-test)
>  generated += tst-stack3-mem.out tst-stack3.mtrace
>  
> -$(objpfx)tst-stack4: $(libdl)
>  tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \
>  				   11 12 13 14 15 16 17 18 19; do \
>  			    for j in 0 1 2 3 4 5 6 7 8 9 10 \
> @@ -513,11 +512,9 @@ clean:
>  $(objpfx)tst-cleanup4: $(objpfx)tst-cleanup4aux.o
>  $(objpfx)tst-cleanupx4: $(objpfx)tst-cleanupx4aux.o
>  
> -$(objpfx)tst-tls3: $(libdl)
>  LDFLAGS-tst-tls3 = -rdynamic
>  $(objpfx)tst-tls3.out: $(objpfx)tst-tls3mod.so
>  
> -$(objpfx)tst-tls3-malloc: $(libdl)
>  LDFLAGS-tst-tls3-malloc = -rdynamic
>  $(objpfx)tst-tls3-malloc.out: $(objpfx)tst-tls3mod.so
>  
> @@ -535,8 +532,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
>  	$(evaluate-test)
>  endif
>  
> -$(objpfx)tst-dlsym1: $(libdl)
> -
>  ifeq (yes,$(build-shared))
>  librt = $(common-objpfx)rt/librt.so
>  else
> @@ -550,14 +545,12 @@ LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
>  LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
>  
>  ifeq ($(build-shared),yes)
> -$(objpfx)tst-unload: $(libdl)
>  
>  generated += multidir.mk tst-tls6.out
>  endif
>  
>  tst-exec4-ARGS = $(host-test-program-cmd)
>  
> -$(objpfx)tst-execstack: $(libdl)
>  $(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
>  LDFLAGS-tst-execstack = -Wl,-z,noexecstack
>  CFLAGS-tst-execstack-mod.c += -Wno-trampolines

Ok.

> diff --git a/nss/Makefile b/nss/Makefile
> index 71fbe583bf..9682a31e20 100644
> --- a/nss/Makefile
> +++ b/nss/Makefile
> @@ -181,10 +181,5 @@ ifeq (yes,$(have-thread-library))
>  $(objpfx)tst-cancel-getpwuid_r: $(shared-thread-library)
>  endif
>  
> -$(objpfx)tst-nss-files-hosts-erange: $(libdl)
> -$(objpfx)tst-nss-files-hosts-multi: $(libdl)
> -$(objpfx)tst-nss-files-hosts-getent: $(libdl)
> -$(objpfx)tst-nss-files-alias-leak: $(libdl)
>  $(objpfx)tst-nss-files-alias-leak.out: $(objpfx)/libnss_files.so
> -$(objpfx)tst-nss-files-alias-truncated: $(libdl)
>  $(objpfx)tst-nss-files-alias-truncated.out: $(objpfx)/libnss_files.so

Ok.

> diff --git a/resolv/Makefile b/resolv/Makefile
> index fb19c93026..3fbc320ee1 100644
> --- a/resolv/Makefile
> +++ b/resolv/Makefile
> @@ -149,7 +149,7 @@ $(objpfx)libnss_dns.so: $(objpfx)libresolv.so
>  # The asynchronous name lookup code needs the thread library.
>  $(objpfx)libanl.so: $(shared-thread-library)
>  
> -$(objpfx)tst-res_hconf_reorder: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-res_hconf_reorder: $(shared-thread-library)
>  tst-res_hconf_reorder-ENV = RESOLV_REORDER=on
>  
>  $(objpfx)tst-leaks: $(objpfx)libresolv.so
> @@ -173,12 +173,11 @@ $(objpfx)mtrace-tst-resolv-res_ninit.out: $(objpfx)tst-resolv-res_ninit.out
>  
>  $(objpfx)tst-bug18665-tcp: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-bug18665: $(objpfx)libresolv.so $(shared-thread-library)
> -$(objpfx)tst-resolv-ai_idn: \
> -  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
> +$(objpfx)tst-resolv-ai_idn: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-ai_idn-latin1: \
> -  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
> +  $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-ai_idn-nolibidn2: \
> -  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
> +  $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-ai_idn.out: $(gen-locales)
>  $(objpfx)tst-resolv-ai_idn-latin1.out: $(gen-locales)
>  $(objpfx)tst-resolv-ai_idn-nolibidn2.out: \
> @@ -187,22 +186,20 @@ $(objpfx)tst-resolv-basic: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-binary: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-edns: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-network: $(objpfx)libresolv.so $(shared-thread-library)
> -$(objpfx)tst-resolv-res_init: $(libdl) $(objpfx)libresolv.so
> +$(objpfx)tst-resolv-res_init: $(objpfx)libresolv.so
>  $(objpfx)tst-resolv-res_init-multi: $(objpfx)libresolv.so \
>    $(shared-thread-library)
> -$(objpfx)tst-resolv-res_init-thread: $(libdl) $(objpfx)libresolv.so \
> +$(objpfx)tst-resolv-res_init-thread: $(objpfx)libresolv.so \
>    $(shared-thread-library)
>  $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
> -$(objpfx)tst-resolv-threads: \
> -  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
> +$(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \
>    $(static-thread-library)
> -$(objpfx)tst-resolv-canonname: \
> -  $(libdl) $(objpfx)libresolv.so $(shared-thread-library)
> +$(objpfx)tst-resolv-canonname: $(objpfx)libresolv.so $(shared-thread-library)
>  $(objpfx)tst-resolv-trustad: $(objpfx)libresolv.so $(shared-thread-library)
>  
>  $(objpfx)tst-ns_name: $(objpfx)libresolv.so

Ok.

> diff --git a/stdlib/Makefile b/stdlib/Makefile
> index ec30011b4c..7c15549caf 100644
> --- a/stdlib/Makefile
> +++ b/stdlib/Makefile
> @@ -106,7 +106,7 @@ LDLIBS-test-cxa_atexit-race2 = $(shared-thread-library)
>  LDLIBS-test-on_exit-race = $(shared-thread-library)
>  LDLIBS-tst-canon-bz26341 = $(shared-thread-library)
>  
> -LDLIBS-test-dlclose-exit-race = $(shared-thread-library) $(libdl)
> +LDLIBS-test-dlclose-exit-race = $(shared-thread-library)
>  LDFLAGS-test-dlclose-exit-race = $(LDFLAGS-rdynamic)
>  LDLIBS-test-dlclose-exit-race-helper.so = $(libsupport) $(shared-thread-library)
>  
> @@ -233,10 +233,10 @@ $(objpfx)tst-strtod-nan-sign: $(libm)
>  tst-tls-atexit-lib.so-no-z-defs = yes
>  test-dlclose-exit-race-helper.so-no-z-defs = yes
>  
> -$(objpfx)tst-tls-atexit: $(shared-thread-library) $(libdl)
> +$(objpfx)tst-tls-atexit: $(shared-thread-library)
>  $(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so
>  
> -$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library) $(libdl)
> +$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library)
>  $(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so
>  
>  $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
> @@ -244,5 +244,3 @@ $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
>  		 '$(run-program-env)' '$(test-program-prefix-after-env)' \
>  		 $(common-objpfx)stdlib/; \
>  	$(evaluate-test)
> -
> -$(objpfx)tst-makecontext: $(libdl)

Ok.

> diff --git a/string/Makefile b/string/Makefile
> index d17626ed39..f0fce2a0b8 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -80,7 +80,6 @@ xtests = tst-strcoll-overflow
>  # This test needs libdl.
>  ifeq (yes,$(build-shared))
>  tests += test-strerror-errno
> -LDLIBS-test-strerror-errno = $(libdl)
>  endif
>  
>  ifeq ($(run-built-tests),yes)

Ok.

> diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile
> index 150518bc6d..d770e59fc9 100644
> --- a/sysdeps/mips/Makefile
> +++ b/sysdeps/mips/Makefile
> @@ -64,7 +64,6 @@ fpabi_list=$(subst $(space),$(comma),$(patsubst tst-abi-%mod,o_%,\
>  CPPFLAGS-tst-abi-interlink.c += -DFPABI_LIST=$(fpabi_list)
>  CPPFLAGS-tst-abi-interlink.c += -DFPABI_COUNT=$(words $(fpabi-modules-names))
>  CPPFLAGS-tst-abi-interlink.c += -DFPABI_NATIVE=o_fp$(o32-fpabi)
> -$(objpfx)tst-abi-interlink: $(libdl)
>  $(objpfx)tst-abi-interlink.out: $(patsubst %,$(objpfx)%.so,\
>  					   $(fpabi-modules-names))
>  endif

Ok.

> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index bca642f438..e4690a7bc4 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -203,7 +203,7 @@ CFLAGS-tst-pt-align3.c += $(stack-align-test-flags)
>  
>  tst-umask1-ARGS = $(objpfx)tst-umask1.temp
>  
> -$(objpfx)tst-atfork2: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-atfork2: $(shared-thread-library)
>  LDFLAGS-tst-atfork2 = -rdynamic
>  tst-atfork2-ENV = MALLOC_TRACE=$(objpfx)tst-atfork2.mtrace
>  $(objpfx)tst-atfork2mod.so: $(shared-thread-library)
> @@ -236,7 +236,7 @@ LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
>  $(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
>  		    $(shared-thread-library)
>  
> -$(objpfx)tst-pt-tls4: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-pt-tls4: $(shared-thread-library)
>  $(objpfx)tst-pt-tls4.out: $(objpfx)tst-tls4moda.so $(objpfx)tst-tls4modb.so
>  
>  generated += tst-atfork2.mtrace
> @@ -260,7 +260,7 @@ CFLAGS-tst-oncex4.c += -fexceptions
>  CFLAGS-tst-oncey3.c += -fno-exceptions -fno-asynchronous-unwind-tables
>  CFLAGS-tst-oncey4.c += -fno-exceptions -fno-asynchronous-unwind-tables
>  
> -$(objpfx)tst-join7: $(libdl) $(shared-thread-library)
> +$(objpfx)tst-join7: $(shared-thread-library)
>  $(objpfx)tst-join7.out: $(objpfx)tst-join7mod.so
>  $(objpfx)tst-join7mod.so: $(shared-thread-library)
>  LDFLAGS-tst-join7mod.so = -Wl,-soname,tst-join7mod.so

Ok.

> diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
> index aa016f7b5a..346ec491b3 100644
> --- a/sysdeps/x86/Makefile
> +++ b/sysdeps/x86/Makefile
> @@ -51,7 +51,6 @@ CFLAGS-tst-isa-level-mod-1-v4.c += -DINCLUDE_X86_ISA_LEVEL \
>  				   -DISA_LEVEL=0xf \
>  				   -march=x86-64
>  
> -$(objpfx)tst-isa-level-1: $(libdl)
>  $(objpfx)tst-isa-level-1.out: $(objpfx)tst-isa-level-mod-1-baseline.so \
>  			      $(objpfx)tst-isa-level-mod-1-v2.so \
>  			      $(objpfx)tst-isa-level-mod-1-v3.so \
> @@ -162,38 +161,30 @@ $(objpfx)tst-cet-legacy-1: $(objpfx)tst-cet-legacy-mod-1.so \
>  		       $(objpfx)tst-cet-legacy-mod-2.so
>  $(objpfx)tst-cet-legacy-1a: $(objpfx)tst-cet-legacy-mod-1.so \
>  		       $(objpfx)tst-cet-legacy-mod-2.so
> -$(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
> +$(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so
>  $(objpfx)tst-cet-legacy-2.out: $(objpfx)tst-cet-legacy-mod-1.so
> -$(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
> +$(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so
>  $(objpfx)tst-cet-legacy-2a.out: $(objpfx)tst-cet-legacy-mod-1.so
> -$(objpfx)tst-cet-legacy-4: $(libdl)
>  $(objpfx)tst-cet-legacy-4.out: $(objpfx)tst-cet-legacy-mod-4.so
> -$(objpfx)tst-cet-legacy-5a: $(libdl)
>  $(objpfx)tst-cet-legacy-5a.out: $(objpfx)tst-cet-legacy-mod-5a.so \
>  				$(objpfx)tst-cet-legacy-mod-5b.so
>  $(objpfx)tst-cet-legacy-mod-5a.so: $(objpfx)tst-cet-legacy-mod-5c.so
>  $(objpfx)tst-cet-legacy-mod-5b.so: $(objpfx)tst-cet-legacy-mod-5c.so
> -$(objpfx)tst-cet-legacy-6a: $(libdl)
>  $(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \
>  				$(objpfx)tst-cet-legacy-mod-6b.so
>  $(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so
>  $(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so
>  LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete
>  ifneq (no,$(have-tunables))
> -$(objpfx)tst-cet-legacy-4a: $(libdl)
>  $(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so
>  tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive
> -$(objpfx)tst-cet-legacy-4b: $(libdl)
>  $(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so
>  tst-cet-legacy-4b-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=on
> -$(objpfx)tst-cet-legacy-4c: $(libdl)
>  $(objpfx)tst-cet-legacy-4c.out: $(objpfx)tst-cet-legacy-mod-4.so
>  tst-cet-legacy-4c-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=off
> -$(objpfx)tst-cet-legacy-5b: $(libdl)
>  $(objpfx)tst-cet-legacy-5b.out: $(objpfx)tst-cet-legacy-mod-5a.so \
>  				$(objpfx)tst-cet-legacy-mod-5b.so
>  tst-cet-legacy-5b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
> -$(objpfx)tst-cet-legacy-6b: $(libdl)
>  $(objpfx)tst-cet-legacy-6b.out: $(objpfx)tst-cet-legacy-mod-6a.so \
>  				$(objpfx)tst-cet-legacy-mod-6b.so
>  tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2
  2021-05-31 14:12 ` [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2 Florian Weimer
@ 2021-06-02 18:09   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 18:09 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> The test appears to use _dlfcn_hook@@GLIBC_PRIVATE as a way to
> test dlvsym without having to know the appropriate symbol version.
> With <first-versions.h>, we can use a public symbol and the symbol
> version at which it was defined first.

Right, I think by including the <first-versions.h> there is no need 
to make it an internal test.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>


> ---
>  dlfcn/modstatic2.c | 10 +++++++++-
>  dlfcn/tststatic2.c | 10 +++++++++-
>  2 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/dlfcn/modstatic2.c b/dlfcn/modstatic2.c
> index 9b5aae8b9f..02d561a7b0 100644
> --- a/dlfcn/modstatic2.c
> +++ b/dlfcn/modstatic2.c
> @@ -4,6 +4,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <gnu/lib-names.h>
> +#include <first-versions.h>
>  
>  int test (FILE *out, int a);
>  
> @@ -117,11 +118,18 @@ test (FILE *out, int a)
>        exit (1);
>      }
>  
> -  if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
> +  /* _exit is very unlikely to receive a second symbol version.  */
> +  void *exit_ptr = dlvsym (handle2, "_exit", FIRST_VERSION_libc__exit_STRING);
> +  if (exit_ptr == NULL)
>      {
>        fprintf (out, "dlvsym: %s\n", dlerror ());
>        exit (1);
>      }
> +  if (exit_ptr != dlsym (handle2, "_exit"))
> +    {
> +      fprintf (out, "dlvsym for _exit does not match dlsym\n");
> +      exit (1);
> +    }
>  
>    void *(*dlsymfn) (void *, const char *);
>    dlsymfn = dlsym (handle2, "dlsym");

Ok.

> diff --git a/dlfcn/tststatic2.c b/dlfcn/tststatic2.c
> index f8cd5a964b..5d8a7831b2 100644
> --- a/dlfcn/tststatic2.c
> +++ b/dlfcn/tststatic2.c
> @@ -4,6 +4,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <gnu/lib-names.h>
> +#include <first-versions.h>
>  
>  static int
>  do_test (void)
> @@ -115,11 +116,18 @@ do_test (void)
>        exit (1);
>      }
>  
> -  if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
> +  /* _exit is very unlikely to receive a second symbol version.  */
> +  void *exit_ptr = dlvsym (handle2, "_exit", FIRST_VERSION_libc__exit_STRING);
> +  if (exit_ptr == NULL)
>      {
>        printf ("dlvsym: %s\n", dlerror ());
>        exit (1);
>      }
> +  if (exit_ptr != dlsym (handle2, "_exit"))
> +    {
> +      printf ("dlvsym for _exit does not match dlsym\n");
> +      exit (1);
> +    }
>  
>    void *(*dlsymfn) (void *, const char *);
>    dlsymfn = dlsym (handle2, "dlsym");
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 16/16] dlfcn: Rework static dlopen hooks
  2021-05-31 14:12 ` [PATCH 16/16] dlfcn: Rework static dlopen hooks Florian Weimer
@ 2021-06-02 19:18   ` Adhemerval Zanella
  0 siblings, 0 replies; 39+ messages in thread
From: Adhemerval Zanella @ 2021-06-02 19:18 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 31/05/2021 11:12, Florian Weimer via Libc-alpha wrote:
> Consolidate all hooks structures into a single one.  There are
> no static dlopen ABI concerns because glibc 2.34 already comes
> with substantial ABI-incompatible chagnes in this area.  (Static

Typo 'chagnes'.

> dlopen requires the exact same dynamic glibc version that was used
> for static linking.)
> 
> The new approach uses a pointer to the hooks structure into
> _rtld_global_ro and initalizes it in __rtld_static_init.  This avoids
> a back-and-forth with various callback functions.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  dlfcn/dladdr.c             |  2 +-
>  dlfcn/dladdr1.c            |  2 +-
>  dlfcn/dlclose.c            |  2 +-
>  dlfcn/dlerror.c            | 32 +----------------
>  dlfcn/dlinfo.c             |  2 +-
>  dlfcn/dlmopen.c            | 10 ++----
>  dlfcn/dlopen.c             | 10 ++----
>  dlfcn/dlopenold.c          |  2 +-
>  dlfcn/dlsym.c              |  2 +-
>  dlfcn/dlvsym.c             |  3 +-
>  elf/Versions               |  1 -
>  elf/dl-libc.c              | 73 ++++----------------------------------
>  elf/rtld_static_init.c     | 18 ++++++++++
>  include/dlfcn.h            | 31 ++++++++--------
>  sysdeps/generic/ldsodefs.h |  3 ++
>  15 files changed, 54 insertions(+), 139 deletions(-)
> 
> diff --git a/dlfcn/dladdr.c b/dlfcn/dladdr.c
> index 3ef1b7f0b6..1cc305f0c4 100644
> --- a/dlfcn/dladdr.c
> +++ b/dlfcn/dladdr.c
> @@ -25,7 +25,7 @@ __dladdr (const void *address, Dl_info *info)
>  {
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dlfcn_hook->dladdr (address, info);
> +    return GLRO (dl_dlfcn_hook)->dladdr (address, info);
>  #endif
>    return _dl_addr (address, info, NULL, NULL);
>  }

Ok.

> diff --git a/dlfcn/dladdr1.c b/dlfcn/dladdr1.c
> index 203d6398e4..78560dbac2 100644
> --- a/dlfcn/dladdr1.c
> +++ b/dlfcn/dladdr1.c
> @@ -25,7 +25,7 @@ __dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
>  {
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dlfcn_hook->dladdr1 (address, info, extra, flags);
> +    return GLRO (dl_dlfcn_hook)->dladdr1 (address, info, extra, flags);
>  #endif
>  
>    switch (flags)

Ok.

> diff --git a/dlfcn/dlclose.c b/dlfcn/dlclose.c
> index 4d5d307ab1..6a013a81bb 100644
> --- a/dlfcn/dlclose.c
> +++ b/dlfcn/dlclose.c
> @@ -25,7 +25,7 @@ __dlclose (void *handle)
>  {
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlclose (handle);
> +    return GLRO (dl_dlfcn_hook)->dlclose (handle);
>  #endif
>  
>    return _dlerror_run (GLRO (dl_close), handle) ? -1 : 0;

Ok.

> diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c
> index 3df8602f4d..d0194a7cef 100644
> --- a/dlfcn/dlerror.c
> +++ b/dlfcn/dlerror.c
> @@ -33,7 +33,7 @@ __dlerror (void)
>  {
>  # ifdef SHARED
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlerror ();
> +    return GLRO (dl_dlfcn_hook)->dlerror ();
>  # endif
>  
>    struct dl_action_result *result = __libc_dlerror_result;
> @@ -197,33 +197,3 @@ _dlerror_run (void (*operate) (void *), void *args)
>      }
>  }
>  libc_hidden_def (_dlerror_run)
> -
> -#ifdef SHARED
> -struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon));
> -libc_hidden_data_def (_dlfcn_hook)
> -
> -#else /* !SHARED */
> -
> -static struct dlfcn_hook _dlfcn_hooks =
> -  {
> -    .dlopen = __dlopen,
> -    .dlclose = __dlclose,
> -    .dlsym = __dlsym,
> -    .dlvsym = __dlvsym,
> -    .dlerror = __dlerror,
> -    .dladdr = __dladdr,
> -    .dladdr1 = __dladdr1,
> -    .dlinfo = __dlinfo,
> -    .dlmopen = __dlmopen
> -  };
> -
> -void
> -__libc_register_dlfcn_hook (struct link_map *map)
> -{
> -  struct dlfcn_hook **hook;
> -
> -  hook = (struct dlfcn_hook **) __libc_dlsym_private (map, "_dlfcn_hook");
> -  if (hook != NULL)
> -    *hook = &_dlfcn_hooks;
> -}
> -#endif /* !SHARED */

Ok.

> diff --git a/dlfcn/dlinfo.c b/dlfcn/dlinfo.c
> index 15fcbc5dc1..c6f9a1da09 100644
> --- a/dlfcn/dlinfo.c
> +++ b/dlfcn/dlinfo.c
> @@ -90,7 +90,7 @@ int
>  ___dlinfo (void *handle, int request, void *arg)
>  {
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlinfo (handle, request, arg);
> +    return GLRO (dl_dlfcn_hook)->dlinfo (handle, request, arg);
>    else
>      return dlinfo_implementation (handle, request, arg);
>  }

Ok.

> diff --git a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
> index ae42814bbf..c171c8953d 100644
> --- a/dlfcn/dlmopen.c
> +++ b/dlfcn/dlmopen.c
> @@ -81,7 +81,7 @@ void *
>  ___dlmopen (Lmid_t nsid, const char *file, int mode)
>  {
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> +    return GLRO (dl_dlfcn_hook)->dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
>    else
>      return dlmopen_implementation (nsid, file, mode, RETURN_ADDRESS (0));
>  }
> @@ -101,13 +101,7 @@ __dlmopen (Lmid_t nsid, const char *file, int mode, void *dl_caller)
>  void *
>  ___dlmopen (Lmid_t nsid, const char *file, int mode)
>  {
> -  struct link_map *l = __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
> -  if (l != NULL)
> -    {
> -      __libc_register_dl_open_hook (l);
> -      __libc_register_dlfcn_hook (l);
> -    }
> -  return l;
> +  return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0));
>  }
>  weak_alias (___dlmopen, dlmopen)
>  static_link_warning (dlmopen)

Ok.

> diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c
> index afdc113efb..e04b374b82 100644
> --- a/dlfcn/dlopen.c
> +++ b/dlfcn/dlopen.c
> @@ -76,7 +76,7 @@ void *
>  ___dlopen (const char *file, int mode)
>  {
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
> +    return GLRO (dl_dlfcn_hook)->dlopen (file, mode, RETURN_ADDRESS (0));
>    else
>      return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
>  }
> @@ -96,13 +96,7 @@ __dlopen (const char *file, int mode, void *dl_caller)
>  void *
>  ___dlopen (const char *file, int mode)
>  {
> -  struct link_map *l = __dlopen (file, mode, RETURN_ADDRESS (0));
> -  if (l != NULL)
> -    {
> -      __libc_register_dl_open_hook (l);
> -      __libc_register_dlfcn_hook (l);
> -    }
> -  return l;
> +  return __dlopen (file, mode, RETURN_ADDRESS (0));
>  }
>  weak_alias (___dlopen, dlopen)
>  static_link_warning (dlopen)

Ok.

> diff --git a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
> index 0fe5f24cc5..9115501ac1 100644
> --- a/dlfcn/dlopenold.c
> +++ b/dlfcn/dlopenold.c
> @@ -71,7 +71,7 @@ __dlopen_nocheck (const char *file, int mode)
>    args.mode = mode;
>  
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0));
> +    return GLRO (dl_dlfcn_hook)->dlopen (file, mode, RETURN_ADDRESS (0));
>  
>    return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
>  }

Ok.

> diff --git a/dlfcn/dlsym.c b/dlfcn/dlsym.c
> index 6b03b7b7ab..43044cf7bb 100644
> --- a/dlfcn/dlsym.c
> +++ b/dlfcn/dlsym.c
> @@ -63,7 +63,7 @@ void *
>  ___dlsym (void *handle, const char *name)
>  {
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlsym (handle, name, RETURN_ADDRESS (0));
> +    return GLRO (dl_dlfcn_hook)->dlsym (handle, name, RETURN_ADDRESS (0));
>    else
>      return dlsym_implementation (handle, name, RETURN_ADDRESS (0));
>  }

Ok.

> diff --git a/dlfcn/dlvsym.c b/dlfcn/dlvsym.c
> index de6b340647..9b76f9afa5 100644
> --- a/dlfcn/dlvsym.c
> +++ b/dlfcn/dlvsym.c
> @@ -66,7 +66,8 @@ void *
>  ___dlvsym (void *handle, const char *name, const char *version)
>  {
>    if (!rtld_active ())
> -    return _dlfcn_hook->dlvsym (handle, name, version, RETURN_ADDRESS (0));
> +    return GLRO (dl_dlfcn_hook)->dlvsym (handle, name, version,
> +					 RETURN_ADDRESS (0));
>    else
>      return dlvsym_implementation (handle, name, version, RETURN_ADDRESS (0));
>  }

Ok.

> diff --git a/elf/Versions b/elf/Versions
> index be88c48e6d..a12d64e8db 100644
> --- a/elf/Versions
> +++ b/elf/Versions
> @@ -23,7 +23,6 @@ libc {
>    GLIBC_PRIVATE {
>      # functions used in other libraries
>      _dl_addr;
> -    _dl_open_hook; _dl_open_hook2;
>      _dl_sym; _dl_vsym;
>      __libc_dlclose; __libc_dlopen_mode; __libc_dlsym; __libc_dlvsym;
>      __libc_early_init;

Ok.

> diff --git a/elf/dl-libc.c b/elf/dl-libc.c
> index ed551f6e56..3ac2a0645f 100644
> --- a/elf/dl-libc.c
> +++ b/elf/dl-libc.c
> @@ -126,32 +126,7 @@ do_dlclose (void *ptr)
>    GLRO(dl_close) ((struct link_map *) ptr);
>  }
>  
> -/* This code is to support __libc_dlopen from __libc_dlopen'ed shared
> -   libraries.  We need to ensure the statically linked __libc_dlopen
> -   etc. functions are used instead of the dynamically loaded.  */
> -struct dl_open_hook
> -{
> -  void *(*dlopen_mode) (const char *name, int mode);
> -  void *(*dlsym) (void *map, const char *name);
> -  int (*dlclose) (void *map);
> -  void *(*dlvsym) (void *map, const char *name, const char *version);
> -};
> -
> -#ifdef SHARED
> -extern struct dl_open_hook *_dl_open_hook;
> -libc_hidden_proto (_dl_open_hook);
> -struct dl_open_hook *_dl_open_hook __attribute__ ((nocommon));
> -libc_hidden_data_def (_dl_open_hook);
> -
> -/* The dlvsym member was added retroactively to struct dl_open_hook.
> -   Static applications which have it will set _dl_open_hook2 in
> -   addition to _dl_open_hook.  */
> -extern struct dl_open_hook *_dl_open_hook2;
> -libc_hidden_proto (_dl_open_hook2);
> -struct dl_open_hook *_dl_open_hook2 __attribute__ ((nocommon));
> -libc_hidden_data_def (_dl_open_hook2);
> -
> -#else
> +#ifndef SHARED
>  static void
>  do_dlsym_private (void *ptr)
>  {
> @@ -169,14 +144,6 @@ do_dlsym_private (void *ptr)
>  				args->map->l_scope, &vers, 0, 0, NULL);
>    args->loadbase = l;
>  }
> -
> -static struct dl_open_hook _dl_open_hook =
> -  {
> -    .dlopen_mode = __libc_dlopen_mode,
> -    .dlsym = __libc_dlsym,
> -    .dlclose = __libc_dlclose,
> -    .dlvsym = __libc_dlvsym,
> -  };
>  #endif
>  
>  /* ... and these functions call dlerror_run. */

Ok.

> @@ -191,16 +158,9 @@ __libc_dlopen_mode (const char *name, int mode)
>  
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dl_open_hook->dlopen_mode (name, mode);
> -  return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);
> -#else
> -  if (dlerror_run (do_dlopen, &args))
> -    return NULL;
> -
> -  __libc_register_dl_open_hook (args.map);
> -  __libc_register_dlfcn_hook (args.map);
> -  return (void *) args.map;
> +    return GLRO (dl_dlfcn_hook)->libc_dlopen_mode (name, mode);
>  #endif
> +  return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);

I think you don not need the extra parentheses here.

>  }
>  libc_hidden_def (__libc_dlopen_mode)
>  

Ok.

> @@ -216,21 +176,6 @@ __libc_dlsym_private (struct link_map *map, const char *name)
>      return DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref);
>    return NULL;
>  }
> -
> -void
> -__libc_register_dl_open_hook (struct link_map *map)
> -{
> -  struct dl_open_hook **hook;
> -
> -  hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook");
> -  if (hook != NULL)
> -    *hook = &_dl_open_hook;
> -
> -  /* For dlvsym support.  */
> -  hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook2");
> -  if (hook != NULL)
> -    *hook = &_dl_open_hook;
> -}
>  #endif
>  
>  void *

Ok.

> @@ -242,7 +187,7 @@ __libc_dlsym (void *map, const char *name)
>  
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dl_open_hook->dlsym (map, name);
> +    return GLRO (dl_dlfcn_hook)->libc_dlsym (map, name);
>  #endif
>    return (dlerror_run (do_dlsym, &args) ? NULL
>  	  : (void *) (DL_SYMBOL_ADDRESS (args.loadbase, args.ref)));
> @@ -257,13 +202,7 @@ __libc_dlvsym (void *map, const char *name, const char *version)
>  {
>  #ifdef SHARED
>    if (!rtld_active ())
> -    {
> -      /* The static application is too old and does not provide the
> -	 dlvsym hook.  */
> -      if (_dl_open_hook2 == NULL)
> -	return NULL;
> -      return _dl_open_hook2->dlvsym (map, name, version);
> -    }
> +    return GLRO (dl_dlfcn_hook)->libc_dlvsym (map, name, version);
>  #endif
>  
>    struct do_dlvsym_args args;

Ok.

> @@ -287,7 +226,7 @@ __libc_dlclose (void *map)
>  {
>  #ifdef SHARED
>    if (!rtld_active ())
> -    return _dl_open_hook->dlclose (map);
> +    return GLRO (dl_dlfcn_hook)->libc_dlclose (map);
>  #endif
>    return dlerror_run (do_dlclose, map);
>  }

Ok.

> diff --git a/elf/rtld_static_init.c b/elf/rtld_static_init.c
> index 42efecfbff..3f8abb6800 100644
> --- a/elf/rtld_static_init.c
> +++ b/elf/rtld_static_init.c
> @@ -25,6 +25,23 @@
>  
>  #include <rtld_static_init.h>
>  
> +static const struct dlfcn_hook _dlfcn_hook =
> +  {
> +    .dlopen = __dlopen,
> +    .dlclose = __dlclose,
> +    .dlsym = __dlsym,
> +    .dlvsym = __dlvsym,
> +    .dlerror = __dlerror,
> +    .dladdr = __dladdr,
> +    .dladdr1 = __dladdr1,
> +    .dlinfo = __dlinfo,
> +    .dlmopen = __dlmopen,
> +    .libc_dlopen_mode = __libc_dlopen_mode,
> +    .libc_dlsym = __libc_dlsym,
> +    .libc_dlvsym = __libc_dlvsym,
> +    .libc_dlclose = __libc_dlclose,
> +  };
> +
>  void
>  __rtld_static_init (struct link_map *map)
>  {
> @@ -45,6 +62,7 @@ __rtld_static_init (struct link_map *map)
>    extern __typeof (dl->_dl_clktck) _dl_clktck attribute_hidden;
>    dl->_dl_clktck = _dl_clktck;
>  #endif
> +  dl->_dl_dlfcn_hook = &_dlfcn_hook;
>    extern __typeof (dl->_dl_hwcap) _dl_hwcap attribute_hidden;
>    dl->_dl_hwcap = _dl_hwcap;
>    extern __typeof (dl->_dl_hwcap2) _dl_hwcap2 attribute_hidden;

Ok.

> diff --git a/include/dlfcn.h b/include/dlfcn.h
> index 711bbb0f12..d4440c567e 100644
> --- a/include/dlfcn.h
> +++ b/include/dlfcn.h
> @@ -91,8 +91,12 @@ libc_hidden_proto (_dl_vsym)
>  extern int _dlerror_run (void (*operate) (void *), void *args);
>  libc_hidden_proto (_dlerror_run)
>  
> +/* This structure is used to make the outer (statically linked)
> +   implementation of dlopen and related functions to the inner libc
> +   after static dlopen, via the GLRO (dl_dlfcn_hook) pointer.  */
>  struct dlfcn_hook
>  {
> +  /* Public interfaces.  */
>    void *(*dlopen) (const char *file, int mode, void *dl_caller);
>    int (*dlclose) (void *handle);
>    void *(*dlsym) (void *handle, const char *name, void *dl_caller);
> @@ -104,15 +108,17 @@ struct dlfcn_hook
>  		  void **extra_info, int flags);
>    int (*dlinfo) (void *handle, int request, void *arg);
>    void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller);
> -  void *pad[4];
> -};
>  
> -extern struct dlfcn_hook *_dlfcn_hook;
> -libc_hidden_proto (_dlfcn_hook)
> +  /* Internal interfaces.  */
> +  void* (*libc_dlopen_mode)  (const char *__name, int __mode);
> +  void* (*libc_dlsym)  (void *map, const char *name);
> +  void* (*libc_dlvsym)  (void *map, const char *name, const char *version);
> +  int   (*libc_dlclose) (void *map);
> +};

Ok.

>  
> -/* Note: These prototypes are for initializing _dflcn_hook in static
> -   libraries.  Internal calls in glibc should use the __libc_dl*
> -   functions defined in elf/dl-libc.c instead.  */
> +/* Note: These prototypes are for initializing _dlfcn_hook in static
> +   builds; see __rtld_static_init.  Internal calls in glibc should use
> +   the __libc_dl* functions defined in elf/dl-libc.c instead.  */
>  
>  extern void *__dlopen (const char *file, int mode, void *caller);
>  extern void *__dlmopen (Lmid_t nsid, const char *file, int mode,
> @@ -125,16 +131,7 @@ extern int __dladdr (const void *address, Dl_info *info);
>  extern int __dladdr1 (const void *address, Dl_info *info,
>  		      void **extra_info, int flags);
>  extern int __dlinfo (void *handle, int request, void *arg);
> -
> -#ifndef SHARED
> -struct link_map;
> -extern void * __libc_dlsym_private (struct link_map *map, const char *name)
> -     attribute_hidden;
> -extern void __libc_register_dl_open_hook (struct link_map *map)
> -     attribute_hidden;
> -extern void __libc_register_dlfcn_hook (struct link_map *map)
> -     attribute_hidden;
> -#endif
> +extern char *__dlerror (void);
>  
>  #endif
>  #endif

Ok.

> diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
> index e383aa1dc3..176394de4d 100644
> --- a/sysdeps/generic/ldsodefs.h
> +++ b/sysdeps/generic/ldsodefs.h
> @@ -687,6 +687,9 @@ struct rtld_global_ro
>    int (*_dl_discover_osversion) (void);
>  #endif
>  
> +  /* Dynamic linker operations used after static dlopen.  */
> +  const struct dlfcn_hook *_dl_dlfcn_hook;
> +
>    /* List of auditing interfaces.  */
>    struct audit_ifaces *_dl_audit;
>    unsigned int _dl_naudit;
> 

Ok.

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2021-06-02 19:18 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-31 14:10 [PATCH v3 00/16] Move libdl into libc Florian Weimer
2021-05-31 14:11 ` [PATCH v2 01/16] stdio-common: Remove _IO_vfwscanf Florian Weimer
2021-05-31 19:42   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 02/16] Add missing symbols to Version files Florian Weimer
2021-06-01 19:12   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 03/16] scripts/versions.awk: Add local: * to all version nodes Florian Weimer
2021-06-01 19:23   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH v2 04/16] Add libc ABI extension kludge for baseline-violating libdl symbols Florian Weimer
2021-06-01 19:31   ` Adhemerval Zanella
2021-06-01 19:34     ` Florian Weimer
2021-06-01 19:38       ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 05/16] dlfcn: Move dlerror into libc Florian Weimer
2021-06-01 19:36   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 06/16] dlfcn: Move dlclose " Florian Weimer
2021-06-02 12:58   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 07/16] dlfcn: Move dladdr " Florian Weimer
2021-06-02 14:02   ` Adhemerval Zanella
2021-05-31 14:11 ` [PATCH 08/16] dlfcn: Move dlsym " Florian Weimer
2021-06-02 14:12   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 09/16] dlfcn: Move dlmopen " Florian Weimer
2021-06-02 14:19   ` Adhemerval Zanella
2021-06-02 14:37     ` Florian Weimer
2021-06-02 14:43       ` Adhemerval Zanella
2021-06-02 17:49     ` Florian Weimer
2021-06-02 18:00       ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 10/16] dlfcn: Move dladdr1 " Florian Weimer
2021-06-02 14:29   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 11/16] dlfcn: Move dlinfo " Florian Weimer
2021-06-02 14:31   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 12/16] dlfcn: Move dlvsym " Florian Weimer
2021-06-02 14:34   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 13/16] dlfcn: Move dlopen " Florian Weimer
2021-06-02 14:54   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 14/16] dlfcn: Cleanups after -ldl is no longer required Florian Weimer
2021-06-02 18:08   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH v2 15/16] dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2 Florian Weimer
2021-06-02 18:09   ` Adhemerval Zanella
2021-05-31 14:12 ` [PATCH 16/16] dlfcn: Rework static dlopen hooks Florian Weimer
2021-06-02 19:18   ` Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).