mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-02 09:40:13 +00:00
9e78f6f6e7
This change moves the main implementation of _dl_catch_error, _dl_signal_error to libc.so, where TLS variables can be used directly. This removes a writable function pointer from the rtld_global variable. For use during initial relocation, minimal implementations of these functions are provided in ld.so. These are eventually interposed by the libc.so implementations. This is implemented by compiling elf/dl-error-skeleton.c twice, via elf/dl-error.c and elf/dl-error-minimal.c. As a side effect of this change, the static version of dl-error.c no longer includes support for the _dl_signal_cerror/_dl_receive_error mechanism because it is only used in ld.so.
27 lines
822 B
Plaintext
27 lines
822 B
Plaintext
# See scripts/check-localplt.awk for how this file is processed.
|
|
# PLT use is required for the malloc family and for matherr because
|
|
# users can define their own functions and have library internals call them.
|
|
libc.so: calloc
|
|
libc.so: free
|
|
libc.so: malloc
|
|
libc.so: memalign
|
|
libc.so: realloc
|
|
libc.so: _exit
|
|
libc.so: __sigsetjmp
|
|
libc.so: _IO_funlockfile
|
|
libc.so: sigprocmask
|
|
libc.so: __errno_location
|
|
libm.so: matherr
|
|
libpthread.so: __errno_location
|
|
# The dynamic loader uses __libc_memalign internally to allocate aligned
|
|
# TLS storage. The other malloc family of functions are expected to allow
|
|
# user symbol interposition.
|
|
ld.so: __libc_memalign
|
|
ld.so: malloc
|
|
ld.so: calloc
|
|
ld.so: realloc
|
|
ld.so: free
|
|
# The TLS-enabled version of these functions is interposed from libc.so.
|
|
ld.so: _dl_signal_error
|
|
ld.so: _dl_catch_error
|