]> git.ipfire.org Git - thirdparty/glibc.git/commit
ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486]
authorFlorian Weimer <fweimer@redhat.com>
Sat, 8 Feb 2020 18:58:43 +0000 (19:58 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Sat, 15 Feb 2020 10:01:23 +0000 (11:01 +0100)
commit3a0ecccb599a6b1ad4b149dc569c0080e92d057b
treee1c4c0e5f2e80221054d6bb6260b4038e27567b4
parent2efa52c880d46ee89523c8ed8102ceeb02043926
ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486]

Exporting functions and relying on symbol interposition from libc.so
makes the choice of implementation dependent on DT_NEEDED order, which
is not what some compiler drivers expect.

This commit replaces one magic mechanism (symbol interposition) with
another one (preprocessor-/compiler-based redirection).  This makes
the hand-over from the minimal malloc to the full malloc more
explicit.

Removing the ABI symbols is backwards-compatible because libc.so is
always in scope, and the dynamic loader will find the malloc-related
symbols there since commit f0b2132b35248c1f4a80f62a2c38cddcc802aa8c
("ld.so: Support moving versioned symbols between sonames
[BZ #24741]").

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
60 files changed:
elf/Makefile
elf/Versions
elf/dl-lookup.c
elf/dl-minimal.c
elf/rtld.c
include/inline-hashtab.h
include/libc-symbols.h
include/malloc.h
include/rtld-malloc.h [new file with mode: 0644]
include/stdlib.h
sysdeps/generic/localplt.data
sysdeps/mach/hurd/i386/ld.abilist
sysdeps/mach/hurd/i386/localplt.data
sysdeps/unix/sysv/linux/aarch64/ld.abilist
sysdeps/unix/sysv/linux/aarch64/localplt.data
sysdeps/unix/sysv/linux/alpha/ld.abilist
sysdeps/unix/sysv/linux/alpha/localplt.data
sysdeps/unix/sysv/linux/arm/be/ld.abilist
sysdeps/unix/sysv/linux/arm/le/ld.abilist
sysdeps/unix/sysv/linux/arm/localplt.data
sysdeps/unix/sysv/linux/csky/ld.abilist
sysdeps/unix/sysv/linux/csky/localplt.data
sysdeps/unix/sysv/linux/hppa/ld.abilist
sysdeps/unix/sysv/linux/hppa/localplt.data
sysdeps/unix/sysv/linux/i386/ld.abilist
sysdeps/unix/sysv/linux/i386/localplt.data
sysdeps/unix/sysv/linux/ia64/ld.abilist
sysdeps/unix/sysv/linux/ia64/localplt.data
sysdeps/unix/sysv/linux/m68k/coldfire/ld.abilist
sysdeps/unix/sysv/linux/m68k/coldfire/localplt.data
sysdeps/unix/sysv/linux/m68k/m680x0/ld.abilist
sysdeps/unix/sysv/linux/m68k/m680x0/localplt.data
sysdeps/unix/sysv/linux/microblaze/ld.abilist
sysdeps/unix/sysv/linux/microblaze/localplt.data
sysdeps/unix/sysv/linux/mips/mips32/ld.abilist
sysdeps/unix/sysv/linux/mips/mips64/n32/ld.abilist
sysdeps/unix/sysv/linux/mips/mips64/n64/ld.abilist
sysdeps/unix/sysv/linux/nios2/ld.abilist
sysdeps/unix/sysv/linux/nios2/localplt.data
sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
sysdeps/unix/sysv/linux/powerpc/powerpc64/be/ld.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/le/ld.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
sysdeps/unix/sysv/linux/riscv/localplt.data
sysdeps/unix/sysv/linux/riscv/rv64/ld.abilist
sysdeps/unix/sysv/linux/s390/localplt.data
sysdeps/unix/sysv/linux/s390/s390-32/ld.abilist
sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist
sysdeps/unix/sysv/linux/sh/be/ld.abilist
sysdeps/unix/sysv/linux/sh/le/ld.abilist
sysdeps/unix/sysv/linux/sh/localplt.data
sysdeps/unix/sysv/linux/sparc/sparc32/ld.abilist
sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
sysdeps/unix/sysv/linux/sparc/sparc64/ld.abilist
sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data
sysdeps/unix/sysv/linux/x86_64/64/ld.abilist
sysdeps/unix/sysv/linux/x86_64/x32/ld.abilist
sysdeps/x86_64/localplt.data