llvm-project/lld/ELF
Fangrui Song 50394f6e01 [ELF] A shared object is needed if any of its occurrences is needed
Summary:
If a DSO appears more than once with and without --as-needed, ld.bfd and gold consider --no-as-needed to takes precedence over --as-needed. lld didn't and this patch makes it do so.

This makes it a bit away from the position-dependent behavior (how
different occurrences of the same DSO interact) and protects us from
some mysterious runtime errors: if some interceptor libraries add their
own --no-as-needed dependencies (e.g. librt.so), and the user
application specifies -Wl,--as-needed -lrt , the absence of the
DT_NEEDED entry would make dlsym(RTLD_NEXT, "clock_gettime") return NULL
and would break at runtime.

Reviewers: ruiu, espindola

Reviewed By: ruiu

Subscribers: emaste, arichardson, llvm-commits

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

llvm-svn: 350105
2018-12-27 22:24:45 +00:00
..
Arch [PPC64] Add toc-optimizations for got based relocations. 2018-12-20 17:00:33 +00:00
AArch64ErrataFix.cpp ELF: AArch64: Fix errata patch address calculation. 2018-12-17 20:15:12 +00:00
AArch64ErrataFix.h Consistent (non) use of empty lines in include blocks 2018-02-20 21:53:18 +00:00
Bits.h Move bit operations to a new file, ELF/Bits.h. 2017-10-26 21:37:17 +00:00
CMakeLists.txt Rename GdbIndex.{cpp,h} -> DWARF.{cpp,h}. 2018-09-14 23:51:05 +00:00
CallGraphSort.cpp Simplify. NFC. 2018-10-12 22:44:06 +00:00
CallGraphSort.h [ELF] Add profile guided section layout 2018-04-17 23:30:05 +00:00
Config.h Add --plugin-opt=emit-llvm option. 2018-12-14 21:58:49 +00:00
DWARF.cpp [LLD][ELF] - Improve the DWARF v5 suport for building .gdb_index. 2018-12-03 10:48:57 +00:00
DWARF.h [LLD][ELF] - Improve the DWARF v5 suport for building .gdb_index. 2018-12-03 10:48:57 +00:00
Driver.cpp Use unique_ptr to manage a TarWriter instance. NFC. 2018-12-18 23:50:37 +00:00
Driver.h Add TARGET(foo) linker script directive. 2018-08-06 21:29:41 +00:00
DriverUtils.cpp Eliminate dependency to formatv(). NFC. 2018-10-10 20:29:29 +00:00
EhFrame.cpp Avoid unnecessary buffer allocation and memcpy for compressed sections. 2018-10-08 16:58:59 +00:00
EhFrame.h De-template EhReader. NFC. 2017-10-27 03:14:09 +00:00
Filesystem.cpp s/LLVM_ON_WIN32/_WIN32/, lld 2018-04-10 13:15:21 +00:00
Filesystem.h Add a missing #include. 2017-11-17 08:17:21 +00:00
ICF.cpp Make a member function non-member. NFC. 2018-11-27 17:47:24 +00:00
ICF.h Consistent use of header file for ICF and MarkLive 2018-02-20 22:09:59 +00:00
InputFiles.cpp Use unique_ptr to manage a TarWriter instance. NFC. 2018-12-18 23:50:37 +00:00
InputFiles.h Use unique_ptr to manage a TarWriter instance. NFC. 2018-12-18 23:50:37 +00:00
InputSection.cpp [ELF][AArch64] Fix adrp to undefined weak reference. 2018-12-13 11:13:01 +00:00
InputSection.h Do not use a hash table to uniquify mergeable strings. 2018-12-05 19:13:31 +00:00
LTO.cpp Add --plugin-opt=emit-llvm option. 2018-12-14 21:58:49 +00:00
LTO.h Simplify. 2018-09-11 14:37:27 +00:00
LinkerScript.cpp [LLD][ELF] - Support discarding the .dynamic section. 2018-12-10 09:24:49 +00:00
LinkerScript.h [LLD][ELF] - Linker script: accept using a file name without a list of sections. 2018-12-06 08:34:52 +00:00
MapFile.cpp [ELF] - (-Map file) Implement printing of LMA for assignments outside of section declarations. 2018-12-06 09:04:52 +00:00
MapFile.h Implement --cref. 2018-03-14 20:29:45 +00:00
MarkLive.cpp [ELF] Move IsNeeded logic from SymbolTable::addShared to MarkLive, and check IsUsedInRegularObj 2018-12-20 22:46:01 +00:00
MarkLive.h Consistent use of header file for ICF and MarkLive 2018-02-20 22:09:59 +00:00
Options.td Add --plugin-opt=emit-llvm option. 2018-12-14 21:58:49 +00:00
OutputSections.cpp ELF: allow non allocated sections to go into allocated sections 2018-12-04 18:47:44 +00:00
OutputSections.h [ELF] Make TrapInstr and Filler byte arrays. NFC. 2018-11-14 21:05:20 +00:00
README.md
Relocations.cpp keymethod -> keyfunction 2018-12-21 22:57:11 +00:00
Relocations.h [ELF] - Fix R_AARCH64_ADR_GOT_PAGE, R_AARCH64_LD64_GOT_LO12 handling against IFUNC symbols. 2018-11-27 10:30:46 +00:00
ScriptLexer.cpp [LLD][ELD] - Do not reject INFO output section type when used with a start address. 2018-08-28 08:39:21 +00:00
ScriptLexer.h [LLD][ELD] - Do not reject INFO output section type when used with a start address. 2018-08-28 08:39:21 +00:00
ScriptParser.cpp [LLD][ELF] - Use auto. NFC. 2018-12-06 10:56:11 +00:00
ScriptParser.h [ELF] Support expressions with -defsym option 2017-11-04 02:03:58 +00:00
SymbolTable.cpp [ELF] A shared object is needed if any of its occurrences is needed 2018-12-27 22:24:45 +00:00
SymbolTable.h [ELF] A shared object is needed if any of its occurrences is needed 2018-12-27 22:24:45 +00:00
Symbols.cpp Simplify Symbol::getPltVA. 2018-11-28 17:42:59 +00:00
Symbols.h Simplify Symbol::getPltVA. 2018-11-28 17:42:59 +00:00
SyntheticSections.cpp Use error() instead of fatal() to report an invalid address range. 2018-12-26 19:15:04 +00:00
SyntheticSections.h [ELF] .gnu.hash bloom filter: use Shift2 = 26 instead of 6 2018-12-21 21:59:34 +00:00
Target.cpp Use llvm_unreachable for unreachable code. 2018-11-01 20:08:29 +00:00
Target.h Simplify Symbol::getPltVA. 2018-11-28 17:42:59 +00:00
Thunks.cpp [ELF][ARM] Add support for architecture v6m thunks 2018-12-17 10:33:47 +00:00
Thunks.h ELF: Allow thunks to change size. NFCI. 2018-03-29 22:32:13 +00:00
Writer.cpp [ELF] Place .note in the first page to ensure they are available in core files 2018-12-18 19:16:37 +00:00
Writer.h ELF: Do not ICF two sections with different output sections. 2018-05-23 01:58:43 +00:00

README.md

See docs/NewLLD.rst