summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2020-01-23 11:52:03 -0800
committerHans Wennborg <hans@chromium.org>2020-01-23 23:06:55 +0100
commit26fd69afd9f3c6bb48b8a4e60578ea8ae919593f (patch)
tree8c0b4aadfe7fea125f2adb3bf9a596c4d51234fe /lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py
parented63454d984f2262ce332b9b15d49917be3eac98 (diff)
downloadbcm5719-llvm-26fd69afd9f3c6bb48b8a4e60578ea8ae919593f.tar.gz
bcm5719-llvm-26fd69afd9f3c6bb48b8a4e60578ea8ae919593f.zip
[ELF] --no-dynamic-linker: don't emit undefined weak symbols to .dynsym
I felt really sad to push this commit for my selfish purpose to make glibc -static-pie build with lld. Some code constructs in glibc require R_X86_64_GOTPCREL/R_X86_64_REX_GOTPCRELX referencing undefined weak to be resolved to a GOT entry not relocated by R_X86_64_GLOB_DAT (GNU ld behavior), e.g. csu/libc-start.c if (__pthread_initialize_minimal != NULL) __pthread_initialize_minimal (); elf/dl-object.c void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) { /* We modify the list of loaded objects. */ __rtld_lock_lock_recursive (GL(dl_load_write_lock)); Emitting a GLOB_DAT will make the address equal &__ehdr_start (true value) and cause elf/ldconfig to segfault. glibc really should move away from weak references, which do not have defined semantics. Temporarily special case --no-dynamic-linker. (cherry picked from commit 0fbf28f7aae0ceb70071cac56de345e3ff04439c)
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud