linker: enable -fvisibility=hidden
Compile the linker with -fvisibility=hidden. This reduces the number of symbols that show up in the .dynsym section of the linker. These symbols are never exported to other applications. In particular, this fixes a problem with setting -DLINKER_DEBUG=1 introduced in 468319ce4f3f7383d788b76c09cda2a405311f36. Because the symbols "debug_verbosity" and "format_log" have not been resolved before the linker links itself, any attempt to call PRINT / INFO / TRACE / WARN / ERROR will result in a segfault. This change allows the static linker to produce a relative reference to these symbols rather than relying on relocation. This also has a nice side effect of making the linker slightly smaller and slightly more optimized. The following symbols no longer in the .dynsym section of the linker after this change: -addr_to_name -call_constructors_recursi -calloc -debugger_init -debugger_signal_handler -debug_verbosity -dladdr -dlclose -dlerror -dl_lock -dlopen -dlsym -dl_unwind_find_exidx -find_containing_library -find_containing_symbol -find_library -format_buffer -free -libdl_info -linker_env_get -linker_env_init -linker_env_secure -linker_env_unset -linker_get_error -__linker_init -lookup -lookup_in_library -malloc -notify_gdb_of_libraries -notify_gdb_of_load -notify_gdb_of_unload -realloc -rtld_db_dlactivity -unload_library -vsnprintf Bug: 5827809 Change-Id: I5e8cd7dcf48c1d6831a970a67f63f24916c5e437
This commit is contained in:
parent
8aeaa478df
commit
3a7ea52f17
@ -12,7 +12,9 @@ LOCAL_SRC_FILES:= \
|
||||
|
||||
LOCAL_LDFLAGS := -shared
|
||||
|
||||
LOCAL_CFLAGS += -fno-stack-protector -Wstrict-overflow=5
|
||||
LOCAL_CFLAGS += -fno-stack-protector \
|
||||
-Wstrict-overflow=5 \
|
||||
-fvisibility=hidden
|
||||
|
||||
# Set LINKER_DEBUG to either 1 or 0
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user