llvm/lld
Fangrui Song fbf41b5267 [ELF] Simplify sh_addr computation and warn if sh_addr is not a multiple of sh_addralign
See `docs/ELF/linker_script.rst` for the new computation for sh_addr and sh_addralign.
`ALIGN(section_align)` now means: "increase alignment to section_align"
(like yet another input section requirement).

The "start of section .foo changes from 0x11 to 0x20" warning no longer
makes sense. Change it to warn if sh_addr%sh_addralign!=0.

To decrease the alignment from the default max_input_align,
use `.output ALIGN(8) : {}` instead of `.output : ALIGN(8) {}`
See linkerscript/section-address-align.test as an example.

When both an output section address and ALIGN are set (can be seen as an
"undefined behavior" https://sourceware.org/ml/binutils/2020-03/msg00115.html),
lld may align more than GNU ld, but it makes a linker script working
with GNU ld hard to break with lld.

This patch can be considered as restoring part of the behavior before D74736.

Differential Revision: https://reviews.llvm.org/D75724
2020-03-11 09:35:42 -07:00
..
cmake/modules
COFF [lld][ELF][COFF] Fix archived bitcode files naming 2020-03-04 12:46:31 +03:00
Common
docs [ELF] Simplify sh_addr computation and warn if sh_addr is not a multiple of sh_addralign 2020-03-11 09:35:42 -07:00
ELF [ELF] Simplify sh_addr computation and warn if sh_addr is not a multiple of sh_addralign 2020-03-11 09:35:42 -07:00
include/lld LLD already has a mechanism for caching creation of DWARCContext: 2020-03-06 21:17:07 +03:00
lib
MinGW
test [ELF] Simplify sh_addr computation and warn if sh_addr is not a multiple of sh_addralign 2020-03-11 09:35:42 -07:00
tools/lld
unittests
utils
wasm [lld][WebAssembly] Add support for --rsp-quoting 2020-03-04 11:41:33 -08:00
.clang-format
.clang-tidy [lld] Add .clang-tidy to customize readability-identifier-naming.{Member,Parameter,Variable}Case => camelBack 2020-03-09 08:26:41 -07:00
.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.