[13/16] dlfcn: Move dlopen into libc

Message ID 88d8aaf6b3975effbcac0f2d04e88d49b638fe42.1622469909.git.fweimer@redhat.com
State Committed
Commit 0c1c3a771eceec46e66ce1183cf988e2303bd373
Headers
Series Move libdl into libc |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Florian Weimer May 31, 2021, 2:12 p.m. UTC
  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
  

Comments

Adhemerval Zanella June 2, 2021, 2:54 p.m. UTC | #1
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.
  

Patch

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