abf736a780
Previously, the address of the global variable was communicated from the dynamic linker to libc.so using a field of KernelArgumentBlock, which is communicated using the TLS_SLOT_BIONIC_PREINIT slot. As long as this function isn't called during relocations (i.e. while executing an ifunc), it always return a non-NULL value. If it's called before its PLT entry is relocated, I expect a crash. I removed the __libc_init_shared_globals function. It's currently empty, and I don't think there's one point in libc's initialization where shared globals should be initialized. Bug: http://b/25751302 Test: bionic unit tests Change-Id: I614d25e7ef5e0d2ccc40d5c821dee10f1ec61c2e
29 lines
856 B
Text
29 lines
856 B
Text
{
|
|
global:
|
|
__loader_dlopen;
|
|
__loader_dlclose;
|
|
__loader_dlsym;
|
|
__loader_dlerror;
|
|
__loader_dladdr;
|
|
__loader_android_update_LD_LIBRARY_PATH;
|
|
__loader_android_get_LD_LIBRARY_PATH;
|
|
__loader_dl_iterate_phdr;
|
|
__loader_android_dlopen_ext;
|
|
__loader_android_set_application_target_sdk_version;
|
|
__loader_android_get_application_target_sdk_version;
|
|
__loader_android_init_anonymous_namespace;
|
|
__loader_android_create_namespace;
|
|
__loader_dlvsym;
|
|
__loader_android_dlwarning;
|
|
__loader_cfi_fail;
|
|
__loader_android_link_namespaces;
|
|
__loader_android_link_namespaces_all_libs;
|
|
__loader_android_get_exported_namespace;
|
|
__loader_dl_unwind_find_exidx;
|
|
__loader_add_thread_local_dtor;
|
|
__loader_remove_thread_local_dtor;
|
|
__loader_shared_globals;
|
|
rtld_db_dlactivity;
|
|
local:
|
|
*;
|
|
};
|