mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Implement _dl_catch_error, _dl_signal_error in libc.so [BZ #16628]
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.
This commit is contained in:
@ -24,3 +24,6 @@ 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
|
||||
|
@ -26,3 +26,6 @@ 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
|
||||
|
Reference in New Issue
Block a user