llvm-capstone/lld
Fangrui Song f5b42eaadb [ELF] -r --compress-debug-sections: update implicit addends for .rel.debug_* referencing STT_SECTION symbols (#66804)
https://reviews.llvm.org/D48929 updated addends for non-SHF_ALLOC sections
relocated by REL for -r links, but the patch did not update the addends when
--compress-debug-sections={zlib,zstd} is used (#66738).

https://reviews.llvm.org/D116946 handled tombstone values in debug
sections in relocatable links. As a side effect, both
relocateNonAllocForRelocatable (using `sec->relocations`) and
relocatenonNonAlloc (using raw REL/RELA) may run.

Actually, we can adjust the condition in relocatenonAlloc to completely replace
relocateNonAllocForRelocatable. This patch implements this idea and fixes #66738.

As relocateNonAlloc processes the raw relocations like copyRelocations() does,
the condition `if (config->relocatable && type != target.noneRel)` in `copyRelocations`
(commit 08d6a3f133, modified by https://reviews.llvm.org/D62052)
can be made specific to SHF_ALLOC sections.

As a side effect, we can now report diagnostics for PC-relative relocations for
-r. This is a less useful diagnostic that is not worth too much code. As
https://github.com/ClangBuiltLinux/linux/issues/1937 has violations, just
suppress the warning for -r. Tested by commit 561b98f9e0.
2023-09-20 14:50:13 -07:00
..
cmake/modules
COFF [NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295) 2023-09-14 14:10:14 -07:00
Common [GlobPattern] Update invalid glob pattern diagnostic for unmatched '[' 2023-08-08 20:25:10 -07:00
docs Fix lld Sphinx build 2023-09-15 15:15:52 -04:00
ELF [ELF] -r --compress-debug-sections: update implicit addends for .rel.debug_* referencing STT_SECTION symbols (#66804) 2023-09-20 14:50:13 -07:00
include/lld/Common
MachO [NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295) 2023-09-14 14:10:14 -07:00
MinGW [LLD] [MinGW] Ignore --sort-common option (#66336) 2023-09-15 11:13:27 +03:00
test [ELF] -r --compress-debug-sections: update implicit addends for .rel.debug_* referencing STT_SECTION symbols (#66804) 2023-09-20 14:50:13 -07:00
tools/lld [lld] Do not include StringSwitch.h (NFC) 2023-08-23 09:20:14 -07:00
unittests
utils
wasm [lld][WebAssembly] Improve error message on adding LTO object post-LTO. NFC (#66688) 2023-09-18 14:11:49 -07:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
LICENSE.TXT
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.