llvm-project/lld/ELF
Peter Smith 3a52eb0054 [ELF] Use SyntheticSections for Thunks
Thunks are now implemented by redirecting the relocation to the
symbol S, to a symbol TS in a Thunk. The Thunk will transfer control
to S. This has the following implications:
- All the side-effects of Thunks happen within createThunks()
- Thunks are no longer stored in InputSections and Symbols no longer
  need to hold a pointer to a Thunk
- The synthetic Thunk sections need to be merged into OutputSections
    
This implementation is almost a direct conversion of the existing
Thunks with the following exceptions:
- Mips LA25 Thunks are placed before the InputSection that defines
  the symbol that needs a Thunk.
- All ARM Thunks are placed at the end of the OutputSection of the
  first caller to the Thunk.
    
Range extension Thunks are not supported yet so it is optimistically
assumed that all Thunks can be reused.

This is a recommit of r293283 with a fixed comparison predicate as
std::merge requires a strict weak ordering.

Differential revision: https://reviews.llvm.org/D29327

llvm-svn: 293757
2017-02-01 10:26:03 +00:00
..
CMakeLists.txt Implement -Map. 2017-01-13 21:05:46 +00:00
Config.h Fix and simplify the reporting of undefined symbols. 2017-01-27 15:52:08 +00:00
Driver.cpp Merge a few Cases using StringSwitch::Cases. 2017-01-30 01:50:16 +00:00
Driver.h Add linker-script-included files to reproduce tar files. 2017-01-09 01:42:02 +00:00
DriverUtils.cpp Remove unused #include. 2017-01-26 03:02:30 +00:00
EhFrame.cpp Move getLocation from Relocations.cpp to InputSection.cpp. 2016-11-25 18:51:53 +00:00
EhFrame.h [ELF] Print error location in .eh_frame parser 2016-11-23 09:45:17 +00:00
Error.cpp Remove error(error_code, const Twine &). 2017-01-12 22:18:04 +00:00
Error.h Remove error(error_code, const Twine &). 2017-01-12 22:18:04 +00:00
GdbIndex.cpp [ELF] - Return file offset as address only for allocatable sections when building .gdb_index 2016-12-23 07:51:59 +00:00
GdbIndex.h [ELF] - Partial support of --gdb-index command line option (Part 3). 2016-12-15 12:07:53 +00:00
ICF.cpp ELF: Fix ICF crash on absolute symbol relocations. 2017-01-20 04:58:12 +00:00
ICF.h Do not pass Symtab to markLive/doICF since Symtab is globally accessible. 2016-05-02 19:30:42 +00:00
InputFiles.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
InputFiles.h [ELF] - Stop handling local symbols in a special way. 2017-01-23 14:07:23 +00:00
InputSection.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
InputSection.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
LTO.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
LTO.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
LinkerScript.cpp [ELF] - Recommit r293749. Improve comment. NFC. 2017-02-01 09:14:22 +00:00
LinkerScript.h Rename NotFlags -> NegFlags. 2017-01-26 02:58:59 +00:00
MapFile.cpp Print alignment in decimal instead of hexadecimal. 2017-01-31 20:42:34 +00:00
MapFile.h Implement -Map. 2017-01-13 21:05:46 +00:00
MarkLive.cpp Parse relocations only once. 2016-11-10 14:53:24 +00:00
Memory.h Remove lld/Support/Memory.h. 2016-12-18 14:06:06 +00:00
Mips.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Options.td [ELF] Add warn-unresolved-symbols/error-unresolved-symbols options 2017-01-26 02:19:20 +00:00
OutputSections.cpp [ELF] Bypass section type check #2 2017-01-31 10:26:52 +00:00
OutputSections.h Revert commits r293276 and r293278. 2017-01-27 18:39:30 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
Relocations.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Relocations.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
ScriptParser.cpp Simplify ScriptParser. 2016-12-01 04:36:54 +00:00
ScriptParser.h Simplify ScriptParser. 2016-12-01 04:36:54 +00:00
Strings.cpp [ELF] __cxa_demangle is now called itaniumDemangle. Update. 2017-01-17 01:59:13 +00:00
Strings.h Use ArrayRef instead of `const std::vector`. 2016-12-20 23:17:00 +00:00
SymbolTable.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
SymbolTable.h Add a isInCurrentDSO helper. NFC. 2017-01-17 16:08:06 +00:00
Symbols.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Symbols.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
SyntheticSections.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
SyntheticSections.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Target.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Target.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Threads.h Update comment to clarify the machine spec. 2016-12-04 02:34:29 +00:00
Thunks.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Thunks.h [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Writer.cpp [ELF] Use SyntheticSections for Thunks 2017-02-01 10:26:03 +00:00
Writer.h Don't create a bogus PT_PHDR if we don't allocate the headers. 2017-01-20 20:46:15 +00:00

README.md

See docs/NewLLD.rst