llvm-project/lld/ELF
Peter Smith 7dc5af75ae [ELF] Use more specific method to calculate DT_PLTRELSZ
The DT_PLTRELSZ dynamic tag is calculated using the size of the
OutputSection containing the In.RelaPlt InputSection. This will work for the
default no linker script case and the majority of linker scripts.
Unfortunately it doesn't work for some 'almost' sensible linker scripts. It
is permitted by ELF to have a single OutputSection containing both
In.RelaDyn, In.RelaPlt and In.RelaIPlt. It is also permissible for the range
of memory [DT_RELA, DT_RELA + DT_RELASZ) and the range
[DT_JMPREL, DT_JMPREL + DT_JMPRELSZ) to overlap as long as the the latter
range is at the end.

To support this type of linker script use the specific InputSection sizes.

Fixes pr39678

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

llvm-svn: 347736
2018-11-28 10:04:55 +00:00
..
Arch Support ARM_V4BX relocation 2018-11-16 19:24:45 +00:00
AArch64ErrataFix.cpp [AArch64] Cortex-a53-843419 erratum should not apply to relaxed TLS. 2018-11-27 10:17:35 +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] - Implement -z nodefaultlib 2018-11-27 09:48:17 +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 [ELF] - Implement -z nodefaultlib 2018-11-27 09:48:17 +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 [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 [ELF] - Fix R_AARCH64_ADR_GOT_PAGE, R_AARCH64_LD64_GOT_LO12 handling against IFUNC symbols. 2018-11-27 10:30:46 +00:00
InputSection.h [LLD][ELF] - Simplify. NFCI. 2018-11-23 15:13:26 +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 [ELF] Make TrapInstr and Filler byte arrays. NFC. 2018-11-14 21:05:20 +00:00
OutputSections.h [ELF] Make TrapInstr and Filler byte arrays. NFC. 2018-11-14 21:05:20 +00:00
README.md
Relocations.cpp [ELF] - Fix R_AARCH64_ADR_GOT_PAGE, R_AARCH64_LD64_GOT_LO12 handling against IFUNC symbols. 2018-11-27 10:30:46 +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] - Do not crash when parsing the -defsym option from a error state. 2018-11-26 12:29:56 +00:00
ScriptParser.h [ELF] Support expressions with -defsym option 2017-11-04 02:03:58 +00:00
SymbolTable.cpp [ELF] - Make SymbolTable::addDefined return Defined. 2018-11-22 11:40:08 +00:00
SymbolTable.h [ELF] - Make SymbolTable::addDefined return Defined. 2018-11-22 11:40:08 +00:00
Symbols.cpp [ELF] Write IPLT header in -static -z retpolineplt mode 2018-11-21 18:10:00 +00:00
Symbols.h [PPC64] Long branch thunks. 2018-11-14 17:56:43 +00:00
SyntheticSections.cpp [ELF] Use more specific method to calculate DT_PLTRELSZ 2018-11-28 10:04:55 +00:00
SyntheticSections.h [LLD][ELF] - Add llvm_unreachable. NFC. 2018-11-26 10:07:10 +00:00
Target.cpp Use llvm_unreachable for unreachable code. 2018-11-01 20:08:29 +00:00
Target.h [ELF] Allow --noinhibit-exec to produce corrupted executable with relocation overflow 2018-11-20 17:04:11 +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 [ELF] - Make SymbolTable::addDefined return Defined. 2018-11-22 11:40:08 +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