llvm-project/lld/test
Fangrui Song b4744d306c [ELF] Support --{,no-}allow-shlib-undefined
Summary:
In ld.bfd/gold, --no-allow-shlib-undefined is the default when linking
an executable. This patch implements a check to error on undefined
symbols in a shared object, if all of its DT_NEEDED entries are seen.

Our approach resembles the one used in gold, achieves a good balance to
be useful but not too smart (ld.bfd traces all DSOs and emulates the
behavior of a dynamic linker to catch more cases).

The error is issued based on the symbol table, different from undefined
reference errors issued for relocations. It is most effective when there
are DSOs that were not linked with -z defs (e.g. when static sanitizers
runtime is used).

gold has a comment that some system libraries on GNU/Linux may have
spurious undefined references and thus system libraries should be
excluded (https://sourceware.org/bugzilla/show_bug.cgi?id=6811). The
story may have changed now but we make --allow-shlib-undefined the
default for now. Its interaction with -shared can be discussed in the
future.

Reviewers: ruiu, grimar, pcc, espindola

Reviewed By: ruiu

Subscribers: joerg, emaste, arichardson, llvm-commits

Differential Revision: https://reviews.llvm.org/D57385

llvm-svn: 352826
2019-02-01 02:25:05 +00:00
..
COFF lld-link: Allow mixing 'discard' and 'largest' comdat selections 2019-01-31 16:14:33 +00:00
Driver/Inputs
ELF [ELF] Support --{,no-}allow-shlib-undefined 2019-02-01 02:25:05 +00:00
MinGW [MinGW] Pass libpath to the COFF linker 2018-10-10 09:00:03 +00:00
Unit [lit] Rename lld and clang lit configs to end in .py 2017-09-21 17:38:13 +00:00
darwin [Darwin] Do not error on '-lto_library' option 2018-06-13 18:59:14 +00:00
mach-o Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
wasm [WebAssembly] Fix crash with LTO + relocatable + undefined symbols 2019-01-30 18:55:15 +00:00
CMakeLists.txt Use llvm_canonicalize_cmake_booleans for LLVM_LIBXML2_ENABLED [lld] 2019-01-19 00:09:43 +00:00
lit.cfg.py Use llvm_canonicalize_cmake_booleans for LLVM_LIBXML2_ENABLED [lld] 2019-01-19 00:09:43 +00:00
lit.site.cfg.py.in Use llvm_canonicalize_cmake_booleans for LLVM_LIBXML2_ENABLED [lld] 2019-01-19 00:09:43 +00:00