mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-13 13:37:38 +08:00
The old exception handling implementation used function interposition to replace the dynamic loader implementation (no TLS support) with the libc implementation (TLS support). This results in problems if the link order between the dynamic loader and libc is reversed (bug 25486). The new implementation moves the entire implementation of the exception handling functions back into the dynamic loader, using THREAD_GETMEM and THREAD_SETMEM for thread-local data support. These depends on Hurd support for these macros, added in commit b65a82e4e757c1e6cb7073916 ("hurd: Add THREAD_GET/SETMEM/_NC"). One small obstacle is that the exception handling facilities are used before the TCB has been set up, so a check is needed if the TCB is available. If not, a regular global variable is used to store the exception handling information. Also rename dl-error.c to dl-catch.c, to avoid confusion with the dlerror function. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
83 lines
1.9 KiB
Plaintext
83 lines
1.9 KiB
Plaintext
libc {
|
|
GLIBC_2.0 {
|
|
%ifdef EXPORT_UNWIND_FIND_FDE
|
|
__deregister_frame_info; __register_frame_info;
|
|
%endif
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in other libraries
|
|
_dl_mcount_wrapper; _dl_mcount_wrapper_check;
|
|
}
|
|
GLIBC_2.2.4 {
|
|
dl_iterate_phdr;
|
|
}
|
|
%ifdef EXPORT_UNWIND_FIND_FDE
|
|
# Needed for SHLIB_COMPAT calls using this version.
|
|
GLIBC_2.2.5 {
|
|
}
|
|
GCC_3.0 {
|
|
__deregister_frame_info_bases; __register_frame_info_bases;
|
|
__register_frame_info_table_bases; _Unwind_Find_FDE;
|
|
}
|
|
%endif
|
|
GLIBC_2.35 {
|
|
_dl_find_object;
|
|
}
|
|
GLIBC_ABI_DT_RELR {
|
|
# This symbol is used only for empty version map and will be removed
|
|
# by scripts/versions.awk.
|
|
__placeholder_only_for_empty_version_map;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
# functions used in other libraries
|
|
__libc_early_init;
|
|
}
|
|
}
|
|
|
|
ld {
|
|
GLIBC_2.0 {
|
|
_r_debug;
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in other libraries
|
|
_dl_mcount;
|
|
# historically used by Garbage Collectors
|
|
__libc_stack_end;
|
|
}
|
|
GLIBC_2.3 {
|
|
# runtime interface to TLS
|
|
__tls_get_addr;
|
|
}
|
|
GLIBC_2.4 {
|
|
# stack canary
|
|
__stack_chk_guard;
|
|
}
|
|
GLIBC_2.34 {
|
|
__rtld_version_placeholder;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
# Those are in the dynamic linker, but used by libc.so.
|
|
__libc_enable_secure;
|
|
_dl_allocate_tls; _dl_allocate_tls_init;
|
|
_dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info;
|
|
_dl_deallocate_tls; _dl_make_stack_executable;
|
|
_dl_rtld_di_serinfo; _dl_starting_up; _dl_fatal_printf;
|
|
_dl_audit_symbind_alt; _dl_audit_preinit;
|
|
_rtld_global; _rtld_global_ro;
|
|
|
|
# Only here for gdb while a better method is developed.
|
|
_dl_debug_state;
|
|
|
|
# Pointer protection.
|
|
__pointer_chk_guard;
|
|
|
|
# Internal error handling support.
|
|
_dl_exception_create; _dl_exception_create_format; _dl_exception_free;
|
|
_dl_signal_exception; _dl_catch_exception;
|
|
_dl_signal_error;
|
|
|
|
# Set value of a tunable.
|
|
__tunable_get_val;
|
|
}
|
|
}
|