llvm-project/lld/ELF
Fangrui Song c384ca3c6a [ELF] For relative paths in INPUT() and GROUP(), search the directory of the current linker script before searching other paths
For a relative path in INPUT() or GROUP(), this patch changes the search order by adding the directory of the current linker script.
The new search order (consistent with GNU ld >= 2.35 regarding the new test `test/ELF/input-relative.s`):

1. the directory of the current linker script (GNU ld from Binutils 2.35 onwards; https://sourceware.org/bugzilla/show_bug.cgi?id=25806)
2. the current working directory
3. library paths (-L)

This behavior makes it convenient to replace a .so or .a with a linker script with additional input. For example, glibc

```
% cat /usr/lib/x86_64-linux-gnu/libm.a
/* GNU ld script
*/
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /usr/lib/x86_64-linux-gnu/libm-2.29.a /usr/lib/x86_64-linux-gnu/libmvec.a )
```

could be simplified as `GROUP(libm-2.29.a libmvec.a)`.

Another example is to make libc++.a a linker script:
```
INPUT(libc++.a.1 libc++abi.a)
```

Note, -l is not affected.

Reviewed By: psmith

Differential Revision: https://reviews.llvm.org/D77779
2020-04-22 12:34:20 -07:00
..
Arch [ELF][ARM] Increase default max-page-size from 4096 to 6536 2020-04-18 08:19:45 -07:00
AArch64ErrataFix.cpp [ELF] Rename relocateOne() to relocate() and pass `Relocation` to it 2020-01-25 12:00:18 -08:00
AArch64ErrataFix.h [ELF] Fix variable names in comments after VariableName -> variableName change 2019-07-16 05:50:45 +00:00
ARMErrataFix.cpp [ELF] Rename relocateOne() to relocate() and pass `Relocation` to it 2020-01-25 12:00:18 -08:00
ARMErrataFix.h [ELF][ARM] Implement --fix-cortex-a8 to fix erratum 657417 2019-09-16 09:38:38 +00:00
CMakeLists.txt [ThinLTO] Pass CodeGenOpts like UnrollLoops/VectorizeLoop/VectorizeSLP 2020-01-09 21:13:11 -08:00
CallGraphSort.cpp [lld] NFC: fix trivial typos in comments 2020-04-02 01:21:36 +09:00
CallGraphSort.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Config.h [ELF] Add --warn-backrefs-exclude=<glob> 2020-04-20 07:52:15 -07:00
DWARF.cpp [LLD][NFC] Remove getOffsetInFile() workaround. 2020-03-05 15:52:46 +03:00
DWARF.h gdb-index: Wire up str_offsets section to avoid incorrect error message about offsets_base 2019-08-07 22:49:14 +00:00
Driver.cpp [ELF] Keep local symbols when both --emit-relocs and --discard-all are specified 2020-04-21 08:28:12 -07:00
Driver.h [Coding style change] Rename variables so that they start with a lowercase letter 2019-07-10 05:00:37 +00:00
DriverUtils.cpp Remove unused Endian.h includes, NFC 2020-03-11 15:45:34 -07:00
EhFrame.cpp [ELF] Wrap things in `namespace lld { namespace elf {`, NFC 2019-10-07 08:31:18 +00:00
EhFrame.h [Coding style change] Rename variables so that they start with a lowercase letter 2019-07-10 05:00:37 +00:00
ICF.cpp [lld][COFF][ELF][WebAssembly] Replace --[no-]threads /threads[:no] with --threads={1,2,...} /threads:{1,2,...} 2020-03-31 08:46:12 -07:00
ICF.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InputFiles.cpp [ELF] Allow invalid sh_size%sh_entsize!=0 for non-SHF_MERGE sections 2020-04-03 08:48:30 -07:00
InputFiles.h LLD already has a mechanism for caching creation of DWARCContext: 2020-03-06 21:17:07 +03:00
InputSection.cpp [ELF] Fix a null pointer dereference when relocating a Local-Exec TLS relocation for a lazy symbol 2020-04-21 15:39:31 -07:00
InputSection.h LLD Support for Basic Block Sections 2020-04-07 06:55:57 -07:00
LTO.cpp LLD Support for Basic Block Sections 2020-04-07 06:55:57 -07:00
LTO.h [Coding style change] Rename variables so that they start with a lowercase letter 2019-07-10 05:00:37 +00:00
LinkerScript.cpp [ELF] Propagate LMA offset to sections with neither AT() nor AT> 2020-04-01 08:19:06 -07:00
LinkerScript.h [ELF] -M/-Map: fix VMA/LMA/Size columns of symbol assignments when address/size>=2**32 2020-04-07 10:15:15 -07:00
MapFile.cpp Make it possible to redirect not only errs() but also outs() 2019-11-18 11:18:06 +09:00
MapFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MarkLive.cpp [LLD][ELF] Add time-trace to ELF LLD 2020-02-06 12:14:13 +00:00
MarkLive.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Options.td [ELF] Add --warn-backrefs-exclude=<glob> 2020-04-20 07:52:15 -07:00
OutputSections.cpp LLD Support for Basic Block Sections 2020-04-07 06:55:57 -07:00
OutputSections.h [ELF] Refactor uses of getInputSections to improve efficiency NFC 2020-01-21 12:27:52 +00:00
README.md
Relocations.cpp [Hexagon] Fix issue with non-preemptible STT_TLS symbols 2020-04-03 08:55:23 -05:00
Relocations.h LLD Support for Basic Block Sections 2020-04-07 06:55:57 -07:00
ScriptLexer.cpp [lld] NFC: fix trivial typos in comments 2020-04-02 01:21:36 +09:00
ScriptLexer.h [ELF] For relative paths in INPUT() and GROUP(), search the directory of the current linker script before searching other paths 2020-04-22 12:34:20 -07:00
ScriptParser.cpp [ELF] For relative paths in INPUT() and GROUP(), search the directory of the current linker script before searching other paths 2020-04-22 12:34:20 -07:00
ScriptParser.h [ELF] Fix variable names in comments after VariableName -> variableName change 2019-07-16 05:50:45 +00:00
SymbolTable.cpp [ELF] Make --version-script/--dynamic-list work for lazy symbols fetched by LTO libcalls 2020-04-06 09:47:06 -07:00
SymbolTable.h [ELF] Replace SymbolTable::forEachSymbol with iterator_range symbols() 2019-11-26 09:09:32 -08:00
Symbols.cpp [ELF] Add --warn-backrefs-exclude=<glob> 2020-04-20 07:52:15 -07:00
Symbols.h [ELF] Fix "TLS attribute mismatch" false positives for STT_NOTYPE undefined symbols 2020-04-21 07:56:35 -07:00
SyntheticSections.cpp [lld] NFC: fix trivial typos in comments 2020-04-02 01:21:36 +09:00
SyntheticSections.h [lld] NFC: fix trivial typos in comments 2020-04-02 01:21:36 +09:00
Target.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Target.h LLD Support for Basic Block Sections 2020-04-07 06:55:57 -07:00
Thunks.cpp [ELF][PPC64] Enable R_PPC64_REL14 trunks 2020-04-04 10:59:17 -07:00
Thunks.h [ELF][PPC32] Implement IPLT code sequence for non-preemptible IFUNC 2019-12-29 22:42:53 -08:00
Writer.cpp [ELF] Keep local symbols when both --emit-relocs and --discard-all are specified 2020-04-21 08:28:12 -07:00
Writer.h Revert "Revert r370635, it caused PR43241." 2019-09-06 15:57:24 +00:00

README.md

See docs/NewLLD.rst