llvm-project/lld/ELF
Sean Fertile 614dc11ca8 [PPC64] Long branch thunks.
On PowerPC64, when a function call offset is too large to encode in a call
instruction the address is stored in a table in the data segment. A thunk is
used to load the branch target address from the table relative to the
TOC-pointer and indirectly branch to the callee. When linking position-dependent
code the addresses are stored directly in the table, for position-independent
code the table is allocated and filled in at load time by the dynamic linker.

For position-independent code the branch targets could have gone in the .got.plt
but using the .branch_lt section for both position dependent and position
independent binaries keeps it consitent and helps keep this PPC64 specific logic
seperated from the target-independent code handling the .got.plt.

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

llvm-svn: 346877
2018-11-14 17:56:43 +00:00
..
Arch [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
AArch64ErrataFix.cpp Avoid unnecessary buffer allocation and memcpy for compressed sections. 2018-10-08 16:58:59 +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 [ELF] Add --{,no-}call-graph-profile-sort (enabled by default) 2018-10-25 23:15:23 +00:00
DWARF.cpp [ELF] Change GnuPub{Names,Types}Section from StringRef to LLDDWARFSection 2018-11-11 18:57:35 +00:00
DWARF.h [ELF] Change GnuPub{Names,Types}Section from StringRef to LLDDWARFSection 2018-11-11 18:57:35 +00:00
Driver.cpp Rename warnUnorderableSymbol maybeWarnUnorderableSymbol because the function doesn't always emit a warning. 2018-10-26 15:07:12 +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 Avoid unnecessary buffer allocation and memcpy for compressed sections. 2018-10-08 16:58:59 +00:00
ICF.h Consistent use of header file for ICF and MarkLive 2018-02-20 22:09:59 +00:00
InputFiles.cpp [ELF] - Do not crash when -r output uses linker script with `/DISCARD/` 2018-11-01 09:20:06 +00:00
InputFiles.h [ELF] Read the call graph profile from object files. 2018-10-02 00:17:15 +00:00
InputSection.cpp [AArch64] Fix resolution of R_PLT_PAGE RelExpr 2018-11-14 13:53:47 +00:00
InputSection.h Avoid unnecessary buffer allocation and memcpy for compressed sections. 2018-10-08 16:58:59 +00:00
LTO.cpp Set MAttrs in LTO mode 2018-11-01 20:02:49 +00:00
LTO.h Simplify. 2018-09-11 14:37:27 +00:00
LinkerScript.cpp Remove `Type` parameter from SymbolTable::insert(). NFC. 2018-10-12 18:29:18 +00:00
LinkerScript.h Move forward declarations to the top of the file and sort. 2018-10-23 22:37:14 +00:00
MapFile.cpp Reset input section pointers to null on each linker invocation. 2018-09-25 19:26:58 +00:00
MapFile.h Implement --cref. 2018-03-14 20:29:45 +00:00
MarkLive.cpp Avoid unnecessary buffer allocation and memcpy for compressed sections. 2018-10-08 16:58:59 +00:00
MarkLive.h Consistent use of header file for ICF and MarkLive 2018-02-20 22:09:59 +00:00
Options.td [ELF] Add --{,no-}call-graph-profile-sort (enabled by default) 2018-10-25 23:15:23 +00:00
OutputSections.cpp Remove a global variable that we can live without. 2018-10-23 17:39:43 +00:00
OutputSections.h Remove a global variable that we can live without. 2018-10-23 17:39:43 +00:00
README.md
Relocations.cpp [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
Relocations.h [ELF] - Renamed AArch64 specific relocations expressions. NFC. 2018-11-13 10:16:36 +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 Handle OUTPUT_FORMAT arguments in quotation marks 2018-11-03 05:25:49 +00:00
ScriptParser.h [ELF] Support expressions with -defsym option 2017-11-04 02:03:58 +00:00
SymbolTable.cpp Remove `Type` parameter from SymbolTable::insert(). NFC. 2018-10-12 18:29:18 +00:00
SymbolTable.h Remove `Type` parameter from SymbolTable::insert(). NFC. 2018-10-12 18:29:18 +00:00
Symbols.cpp [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
Symbols.h [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
SyntheticSections.cpp [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
SyntheticSections.h [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
Target.cpp Use llvm_unreachable for unreachable code. 2018-11-01 20:08:29 +00:00
Target.h [ELF] Refactor per-target TLS layout configuration. NFC. 2018-10-31 20:53:17 +00:00
Thunks.cpp [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
Thunks.h ELF: Allow thunks to change size. NFCI. 2018-03-29 22:32:13 +00:00
Writer.cpp [PPC64] Long branch thunks. 2018-11-14 17:56:43 +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