glibc/shlib-versions
Siddhesh Poyarekar 2d2d9f2b48 Move malloc hooks into a compat DSO
Remove all malloc hook uses from core malloc functions and move it
into a new library libc_malloc_debug.so.  With this, the hooks now no
longer have any effect on the core library.

libc_malloc_debug.so is a malloc interposer that needs to be preloaded
to get hooks functionality back so that the debugging features that
depend on the hooks, i.e. malloc-check, mcheck and mtrace work again.
Without the preloaded DSO these debugging features will be nops.
These features will be ported away from hooks in subsequent patches.

Similarly, legacy applications that need hooks functionality need to
preload libc_malloc_debug.so.

The symbols exported by libc_malloc_debug.so are maintained at exactly
the same version as libc.so.

Finally, static binaries will no longer be able to use malloc
debugging features since they cannot preload the debugging DSO.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-07-22 18:37:59 +05:30

79 lines
2.4 KiB
Plaintext

# This file (and shlib-versions files in sysdeps directories) defines
# the shared library version numbers we will install.
# The following lines list the associated versions to use for various
# libraries. The entire list is processed, with earlier entries
# taking precedence over later entries (and the files from sysdeps
# directories coming before those from other subdirectories, which
# come before this file).
# This file can use cpp-style conditionals starting with % instead of #
# to test the symbols defined in config.h by configure.
# In the optional second column, there can one or more symbol set names
# listed, which must be in ascending version order reading left to right
# and must appear in this same order in the Versions.def file. Each listed
# version subsumes all prior versions back to the previous listed version.
#
# An entry with DEFAULT in the first column gives a default second
# column to apply when the matching entry for a particular library has
# no second column. The defaults must precede the entries they apply
# to.
# Library=version Earliest symbol set (optional)
# --------------- ------------------------------
# We use the ELF ABI standard name for the default.
ld=ld.so.1
# The -ldl interface (see <dlfcn.h>) is the same on all platforms.
libdl=2
# So far the -lutil interface is the same on all platforms, except for the
# `struct utmp' format, which depends on libc.
libutil=1
# Version number 2 is used on other systems for the BIND 4.9.5 resolver
# interface.
libresolv=2
# Interface revision of nss_* modules. This must match NSS_SHLIB_REVISION
# in nss/nsswitch.h, which determines the library names used for service
# names given in /etc/nsswitch.conf.
libnss_files=2
libnss_dns=2
libnss_compat=2
libnss_ldap=2
libnss_hesiod=2
libnss_db=2
# Tests for NSS. They must have the same NSS_SHLIB_REVISION number as
# the rest.
libnss_test1=2
libnss_test2=2
# Version for libnsl with YP and NIS+ functions.
libnsl=1
# This defines the shared library version numbers we will install.
libcrypt=1
# The gross patch for programs assuming broken locale implementations.
libBrokenLocale=1
# The real-time library from POSIX.1b.
librt=1
# The asynchronous name lookup library.
libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
# The vector math library
libmvec=1
# The malloc debug library
libc_malloc_debug=0