platform_bionic/linker
Ryan Prichard 94a8e859ed linker: avoid -O0 memset while clearing temp_tcb
With -O0, on arm64, Clang uses memset for this declaration:

    bionic_tcb temp_tcb = {};

arm64 doesn't currently have an ifunc for memset, but if it did, then this
line would crash when the linker is compiled with -O0. It looks like other
architectures would only use a memset call if the bionic_tcb struct were
larger.

Avoid memset by using a custom memclr function that the compiler optimizes
into something efficient.

Also add __attribute__((uninitialized)) to ensure that
-ftrivial-auto-var-init does not generate a call to memset. See this
change[1] in build/soong.

[1] If085ec53c619e2cebc86ca23f7039298160d99ae

Test: build linker with -O0, linker[64] --help works
Bug: none
Change-Id: I0df8065a362646de4fa021cae63a7d68ca3966b6
2019-11-05 14:56:09 -08:00
..
arch Make tls related header files platform accessible. 2019-09-27 12:14:24 -07:00
Android.bp Use ifuncs in the linker 2019-11-05 13:37:51 -08:00
dlfcn.cpp Cleanup linker unwinder integration 2019-10-16 04:20:23 +00:00
ld.config.format.md Fix some typos in the linker configuration file format documentation. 2019-08-07 18:45:45 +01:00
ld_android.cpp Expose libc_shared_globals to libc.so with symbol 2018-11-28 14:26:14 -08:00
ldd ldd: slightly improve error message. 2019-06-27 13:50:31 -07:00
linked_list.h Clean up bionic_macros.h a bit. 2018-10-25 11:00:00 -07:00
linked_list_test.cpp Switch linker tests to Android.bp. 2019-02-15 14:40:08 -08:00
linker.arm.map Expose libc_shared_globals to libc.so with symbol 2018-11-28 14:26:14 -08:00
linker.cpp Use ifuncs in the linker 2019-11-05 13:37:51 -08:00
linker.generic.map Expose libc_shared_globals to libc.so with symbol 2018-11-28 14:26:14 -08:00
linker.h Don't create anonymous namespace 2019-08-08 16:02:15 +09:00
linker_block_allocator.cpp Cosmetic changes to linker allocator and config 2019-03-12 01:11:24 +00:00
linker_block_allocator.h Purge linker block allocators before leaving linker 2019-01-30 22:13:13 -08:00
linker_block_allocator_test.cpp Switch linker tests to Android.bp. 2019-02-15 14:40:08 -08:00
linker_cfi.cpp Add PR_SET_VMA and PR_SET_VMA_ANON_NAME to <sys/prctl.h>. 2018-08-22 10:36:23 -07:00
linker_cfi.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
linker_common_types.h Clean up bionic_macros.h a bit. 2018-10-25 11:00:00 -07:00
linker_config.cpp Add linker config variable: VNDK_APEX_VER 2019-10-29 05:47:03 +09:00
linker_config.h Revert "Change linker config variable: VNDK_VER" 2019-10-16 23:42:56 +00:00
linker_config_test.cpp linker: Add support for "whitelisted" property in linker config files 2019-03-20 10:20:49 -07:00
linker_debug.h linker: remove COUNT_PAGES 2019-10-25 17:46:43 -07:00
linker_debuggerd.h Refactor linker/Android.bp for native-bridge 2019-11-05 13:37:29 -08:00
linker_debuggerd_android.cpp Refactor linker/Android.bp for native-bridge 2019-11-05 13:37:29 -08:00
linker_debuggerd_stub.cpp Refactor linker/Android.bp for native-bridge 2019-11-05 13:37:29 -08:00
linker_dlwarning.cpp Unify linker files under one license (BSD) 2017-02-15 15:35:33 -08:00
linker_dlwarning.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
linker_gdb_support.cpp Unify linker files under one license (BSD) 2017-02-15 15:35:33 -08:00
linker_gdb_support.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
linker_globals.cpp Be clearer about linker warnings. 2018-02-28 12:37:28 -08:00
linker_globals.h Add more linker debug log. 2019-09-05 12:00:25 +00:00
linker_libc_support.c Unify linker files under one license (BSD) 2017-02-15 15:35:33 -08:00
linker_libcxx_support.cpp Adapt to the new libc++/libc++abi update. 2018-01-08 14:44:42 -08:00
linker_logger.cpp linker: only generate log messages when logging is enabled 2019-01-17 14:24:14 -08:00
linker_logger.h Add more linker debug. 2019-03-19 14:03:18 +00:00
linker_main.cpp linker: avoid -O0 memset while clearing temp_tcb 2019-11-05 14:56:09 -08:00
linker_main.h Allow invoking the linker on an executable. 2018-10-10 14:31:06 -07:00
linker_mapped_file_fragment.cpp Unify linker files under one license (BSD) 2017-02-15 15:35:33 -08:00
linker_mapped_file_fragment.h Clean up bionic_macros.h a bit. 2018-10-25 11:00:00 -07:00
linker_memory.cpp Move the linker allocator into libc 2019-01-25 15:31:35 -08:00
linker_mips.cpp MIPS: Fix MIPS linker VDSO issues 2017-10-13 12:08:30 +02:00
linker_namespaces.cpp linker: Add support for "whitelisted" property in linker config files 2019-03-20 10:20:49 -07:00
linker_namespaces.h Don't create anonymous namespace 2019-08-08 16:02:15 +09:00
linker_phdr.cpp Fix DLEXT_WRITE_RELRO when loading multiple libs. 2019-04-02 18:06:12 -04:00
linker_phdr.h Fix DLEXT_WRITE_RELRO when loading multiple libs. 2019-04-02 18:06:12 -04:00
linker_reloc_iterators.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
linker_relocs.h Factor out R_GENERIC_COPY 2019-10-18 12:44:01 -07:00
linker_sdk_versions.cpp Reland "fdsan: make fatal by default." 2019-08-20 17:59:14 -07:00
linker_sleb128.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
linker_sleb128_test.cpp Switch linker tests to Android.bp. 2019-02-15 14:40:08 -08:00
linker_soinfo.cpp Inline soinfo::get_tls 2019-10-03 18:01:59 -07:00
linker_soinfo.h Inline soinfo::get_tls 2019-10-03 18:01:59 -07:00
linker_test_globals.cpp Switch linker tests to Android.bp. 2019-02-15 14:40:08 -08:00
linker_tls.cpp libasync_safe: stop clobbering other folks' identifiers. 2019-02-14 14:23:13 -08:00
linker_tls.h Implement arm64 TLSDESC 2019-01-29 08:33:09 +00:00
linker_utils.cpp Don't resolve already resolved paths when parsing ld.config.txt 2019-05-17 10:09:13 +09:00
linker_utils.h Don't resolve already resolved paths when parsing ld.config.txt 2019-05-17 10:09:13 +09:00
linker_utils_test.cpp Switch linker tests to Android.bp. 2019-02-15 14:40:08 -08:00
linker_wrapper.cpp Rework the linker_wrapper to work with lld 2018-10-22 22:52:25 +00:00
MODULE_LICENSE_APACHE2 Move libdl and linker to static NOTICE files. 2019-04-19 14:18:07 -07:00
NOTICE Move libdl and linker to static NOTICE files. 2019-04-19 14:18:07 -07:00
rt.cpp