llvm-project/lld/ELF
Simon Atanasyan 9e0297b8bc [ELF][MIPS] N32 ABI support
In short the patch introduces support for linking object file conform
MIPS N32 ABI [1]. This ABI is similar to N64 ABI but uses 32-bit
pointer size.

The most non-trivial requirement of this ABI is one more relocation
packing format. N64 ABI puts multiple relocation type into the single
relocation record. The N32 ABI uses series of successive relocations
with the same offset for this purpose. In this patch, new function
`mergeMipsN32RelTypes` handle this case and "convert" N32 relocation to
the N64 relocation so the rest of the code keep unchanged.

For now, linker does not support series of relocations applied to sections
without SHF_ALLOC bit. Probably later I will add the support or insert
some sort of assert into the `relocateNonAlloc` routine to catch this
case.

[1] ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf

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

llvm-svn: 286052
2016-11-05 22:58:01 +00:00
..
CMakeLists.txt Create SyntheticSections.cpp. 2016-11-01 20:28:21 +00:00
Config.h [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Driver.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Driver.h Consolidate BumpPtrAllocators. 2016-10-28 20:57:25 +00:00
DriverUtils.cpp Consolidate BumpPtrAllocators. 2016-10-28 20:57:25 +00:00
EhFrame.cpp [ELF] Allow arbitrary code alignment in .eh_frame 2016-07-29 04:41:38 +00:00
EhFrame.h Create a new file EhFrame.cpp and move code to read .eh_frame there. 2016-05-24 02:55:45 +00:00
Error.cpp Use fewer allocators. 2016-10-27 13:32:32 +00:00
Error.h Use fewer allocators. 2016-10-27 13:32:32 +00:00
GdbIndex.cpp [ELF] - Partial support of --gdb-index command line option (Part 1). 2016-10-20 09:19:48 +00:00
GdbIndex.h [ELF] - Partial support of --gdb-index command line option (Part 1). 2016-10-20 09:19:48 +00:00
ICF.cpp Create a vector containing all input sections. 2016-11-05 22:37:59 +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 Simplify now that this is only used for global symbols. 2016-11-03 20:48:57 +00:00
InputFiles.h Simplify now that this is only used for global symbols. 2016-11-03 20:48:57 +00:00
InputSection.cpp Now that the ELFFile constructor does nothing, create it when needed. 2016-11-03 20:44:50 +00:00
InputSection.h Create SyntheticSections.cpp. 2016-11-01 20:28:21 +00:00
LTO.cpp Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
LTO.h Consolidate BumpPtrAllocators. 2016-10-28 20:57:25 +00:00
LinkerScript.cpp Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
LinkerScript.h Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
MarkLive.cpp Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
Memory.cpp Replace GAlloc with a template function. 2016-11-01 21:06:40 +00:00
Memory.h Make a function in a header "inline" instead of "static". 2016-11-02 00:16:43 +00:00
Mips.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Options.td [ELF] - Accept both "-" and "--" for Ttext/Tdata/Tbss options. 2016-11-03 12:49:25 +00:00
OutputSections.cpp Revert r285968: Always use parallel_for_each because it falls back to std::for_each. 2016-11-04 18:22:36 +00:00
OutputSections.h Add a few const qualifiers. 2016-11-04 13:20:45 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
Relocations.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Relocations.h [ELF][MIPS] Put local GOT entries accessed via a 16-bit index first 2016-10-21 07:22:30 +00:00
ScriptParser.cpp Simplify. NFC. 2016-10-21 04:52:13 +00:00
ScriptParser.h Rename skip(StringRef) -> consume(StringRef). 2016-10-17 16:01:53 +00:00
Strings.cpp Add [<chars>] to the glob matcher to eliminate use of llvm::Regex. 2016-11-03 17:57:38 +00:00
Strings.h Add [<chars>] to the glob matcher to eliminate use of llvm::Regex. 2016-11-03 17:57:38 +00:00
SymbolListFile.cpp Rename skip(StringRef) -> consume(StringRef). 2016-10-17 16:01:53 +00:00
SymbolListFile.h [ELF] - Remove VersionScriptParser class and move the members to ScriptParser 2016-08-31 09:08:26 +00:00
SymbolTable.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
SymbolTable.h Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
Symbols.cpp Consolidate BumpPtrAllocators. 2016-10-28 20:57:25 +00:00
Symbols.h Consolidate BumpPtrAllocators. 2016-10-28 20:57:25 +00:00
SyntheticSections.cpp Don't gc .interp section. 2016-11-04 22:25:39 +00:00
SyntheticSections.h Convert Out::InterpSection to In::InterpSection. 2016-11-02 18:58:44 +00:00
Target.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Target.h [ELF] Set MAXPAGESIZE to 2MiB on x86-64 to match bfd and gold. 2016-08-17 02:10:51 +00:00
Thunks.cpp Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes. 2016-11-05 01:00:56 +00:00
Thunks.h Attempt to fix buildbots. 2016-07-09 23:02:37 +00:00
Writer.cpp Create a vector containing all input sections. 2016-11-05 22:37:59 +00:00
Writer.h [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00

README.md

See docs/NewLLD.rst