llvm-project/lld/ELF
Rui Ueyama 0e53c7dd2c ELF: Make names for TLS module indices shorter.
The previous names contained "Local" and "Current", but what we
are handling is always local and current, so they were redundant.

TlsIndex comes from "tls_index" struct that Ulrich Drepper is using
in this document to describe this data structure in GOT.

llvm-svn: 259852
2016-02-05 00:10:02 +00:00
..
CMakeLists.txt Set the folder for libraries to 'lld libraries'. NFC. 2016-01-07 00:14:04 +00:00
Config.h [ELF][MIPS] Add handling for __gnu_local_gp symbol 2016-02-04 12:09:49 +00:00
Driver.cpp [ELF][MIPS] Add handling for __gnu_local_gp symbol 2016-02-04 12:09:49 +00:00
Driver.h ELF: Make link() to take an output stream to which error messages are written. 2016-02-02 22:49:32 +00:00
DriverUtils.cpp Re-submit ELF: Report multiple errors from the driver. 2016-02-02 21:13:09 +00:00
Error.cpp ELF: Make link() to take an output stream to which error messages are written. 2016-02-02 22:49:32 +00:00
Error.h ELF: Make link() to take an output stream to which error messages are written. 2016-02-02 22:49:32 +00:00
InputFiles.cpp Don't push relocation sections onto InputSection<ELFT>::Discarded.RelocSections 2016-02-04 21:41:07 +00:00
InputFiles.h ELF: Use StringRef instead of std::string. 2016-02-02 20:24:31 +00:00
InputSection.cpp ELF: Make names for TLS module indices shorter. 2016-02-05 00:10:02 +00:00
InputSection.h Simplify MipsReginfoInputSection. 2016-01-06 22:42:43 +00:00
LinkerScript.cpp Re-submit ELF: Report multiple errors from the driver. 2016-02-02 21:13:09 +00:00
MarkLive.cpp Merge two consecutive if's. NFC. 2016-01-12 21:57:44 +00:00
Options.td [ELF] Implemented -Bsymbolic-functions command line option 2016-02-02 09:28:53 +00:00
OutputSections.cpp ELF: Make names for TLS module indices shorter. 2016-02-05 00:10:02 +00:00
OutputSections.h ELF: Make names for TLS module indices shorter. 2016-02-05 00:10:02 +00:00
README.md ELF: Write about the current policy to README. 2016-02-02 23:45:54 +00:00
SymbolTable.cpp ELF: Include archive names in error messages. 2016-02-02 08:22:41 +00:00
SymbolTable.h Delete addIgnoredStrong. 2016-01-19 00:05:54 +00:00
Symbols.cpp Define SymbolBody::getSize instead of getSymSize(SymbolBody&). NFC. 2016-02-03 00:12:24 +00:00
Symbols.h Define SymbolBody::getSize instead of getSymSize(SymbolBody&). NFC. 2016-02-03 00:12:24 +00:00
Target.cpp [ELF][MIPS] Support R_MIPS_PC32 relocation handling 2016-02-04 12:31:39 +00:00
Target.h [ELF][MIPS] Replace needsMipsLocalGot function by canBePreempted 2016-02-04 11:51:45 +00:00
Writer.cpp ELF: Make names for TLS module indices shorter. 2016-02-05 00:10:02 +00:00
Writer.h ELF2: Implement --gc-sections. 2015-10-22 18:49:53 +00:00

README.md

The New ELF Linker

This directory contains a port of the new PE/COFF linker for ELF.

Overall Design

See COFF/README.md for details on the design. Note that unlike COFF, we do not distinguish chunks from input sections; they are merged together.

Capabilities

This linker can link LLVM and Clang on Linux/x86-64 or FreeBSD/x86-64 "Hello world" can be linked on Linux/PPC64 and on Linux/AArch64 or FreeBSD/AArch64.

Performance

Achieving good performance is one of our goals. It's too early to reach a conclusion, but we are optimistic about that as it currently seems to be faster than GNU gold. It will be interesting to compare when we are close to feature parity.

Library Use

You can embed LLD to your program by linking against it and calling the linker's entry point function lld::elf2::link.

The current policy is that it is your reponsibility to give trustworthy object files. The function is guaranteed to return as long as you do not pass corrupted or malicious object files. A corrupted file could cause a fatal error or SEGV. That being said, you don't need to worry too much about it if you create object files in a usual way and give them to the linker (it is naturally expected to work, or otherwise it's a linker's bug.)