[09/16] dlfcn: Move dlmopen into libc

Message ID 59a14fc491a58520936da8d69093abf9112a7ffe.1622469908.git.fweimer@redhat.com
State Committed
Commit 6a1ed32789eaec6e1cd4345552e7342b5b18da5f
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                                |  3 +-
 dlfcn/Versions                                |  6 +-
 dlfcn/dlfcn.c                                 | 19 ++++-
 dlfcn/dlmopen.c                               | 73 ++++++++++---------
 dlfcn/sdlmopen.c                              |  1 -
 include/dlfcn.h                               | 12 +--
 sysdeps/mach/hurd/i386/libc.abilist           |  2 +
 sysdeps/mach/hurd/i386/libdl.abilist          |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/libdl.abilist |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/alpha/libdl.abilist   |  2 +-
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/libdl.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/be/libdl.abilist  |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/le/libdl.abilist  |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/csky/libdl.abilist    |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/hppa/libdl.abilist    |  2 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/i386/libdl.abilist    |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/ia64/libdl.abilist    |  2 +-
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
 .../sysv/linux/m68k/coldfire/libdl.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
 .../unix/sysv/linux/m68k/m680x0/libdl.abilist |  2 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../sysv/linux/microblaze/be/libdl.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../sysv/linux/microblaze/le/libdl.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
 .../unix/sysv/linux/mips/mips32/libdl.abilist |  2 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../unix/sysv/linux/mips/mips64/libdl.abilist |  2 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/nios2/libdl.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/libdl.abilist     |  2 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/be/libdl.abilist  |  2 +-
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/libdl.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/libdl.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/libdl.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
 .../sysv/linux/s390/s390-32/libdl.abilist     |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../sysv/linux/s390/s390-64/libdl.abilist     |  2 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/be/libdl.abilist   |  2 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/le/libdl.abilist   |  2 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/libdl.abilist    |  2 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc64/libdl.abilist    |  2 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../unix/sysv/linux/x86_64/64/libdl.abilist   |  2 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/libdl.abilist  |  1 -
 69 files changed, 154 insertions(+), 73 deletions(-)
 delete mode 100644 dlfcn/sdlmopen.c
  

Comments

Adhemerval Zanella June 2, 2021, 2:19 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. I would move the compat symbols at dlfcn/dlfcn.c to
a dlfcn/libdl-compat.c, similar to what is done for libpthread.

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

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

Ok.

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

Ok.

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

I think it should built only for SHARED.

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

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

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

Ok.

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

Ok.

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

Ok.

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

Ok.
  
Florian Weimer June 2, 2021, 2:37 p.m. UTC | #2
* Adhemerval Zanella:

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

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

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

Fair enough.
  
Florian Weimer June 2, 2021, 5:49 p.m. UTC | #4
* Adhemerval Zanella:

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

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

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

Ok, so you can ignore this suggestion then.
  

Patch

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