hanchenye-llvm-project/lld
Alex Richardson 35c5e564e6 [ELF] Check the Elf_Rel addends for dynamic relocations
There used to be many cases where addends for Elf_Rel were not emitted in
the final object file (mostly when building for MIPS64 since the input .o
files use RELA but the output uses REL). These cases have been fixed since,
but this patch adds a check to ensure that the written values are correct.
It is based on a previous patch that I added to the CHERI fork of LLD since
we were using MIPS64 as a baseline. The work has now almost entirely
shifted to RISC-V and Arm Morello (which use Elf_Rela), but I thought
it would be useful to upstream our local changes anyway.

This patch adds a (hidden) command line flag --check-dynamic-relocations
that can be used to enable these checks. It is also on by default in
assertions builds for targets that handle all dynamic relocations kinds
that LLD can emit in Target::getImplicitAddend(). Currently this is
enabled for ARM, MIPS, and I386.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D101450
2021-07-09 10:41:40 +01:00
..
COFF PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23 2021-07-08 13:37:57 -07:00
Common [lld] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
ELF [ELF] Check the Elf_Rel addends for dynamic relocations 2021-07-09 10:41:40 +01:00
MachO [lld/mac] Fix warning about unused variable [NFC] 2021-07-08 09:46:30 +02:00
MinGW [LLD] [COFF] Fix up missing stdcall decorations in MinGW mode 2021-07-02 09:49:14 +03:00
cmake/modules [cmake] Add support for multiple distributions 2021-05-12 11:13:18 -07:00
docs [lld][WebAssembly] Add new `--import-undefined` option 2021-06-17 11:44:21 -07:00
include/lld [WebAssembly] Rename event to tag 2021-06-17 20:34:19 -07:00
lib [OptTable] Rename PrintHelp to printHelp 2021-06-24 14:47:03 -07:00
test [ELF] Check the Elf_Rel addends for dynamic relocations 2021-07-09 10:41:40 +01:00
tools/lld [lld] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
unittests
utils
wasm [WebAssembly][lld] Fix segfault on .bss sections in mapfile 2021-07-07 23:31:48 -07:00
.clang-format
.clang-tidy NFC: .clang-tidy: Inherit configs from parents to improve maintainability 2021-06-08 08:25:59 -07:00
.gitignore
CMakeLists.txt Fix lld macho standalone build by including llvm/Config/llvm-config.h instead of llvm/Config/config.h 2021-05-19 11:15:07 -04:00
CODE_OWNERS.TXT
LICENSE.TXT
README.md

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.