llvm-project/lld
Peter Collingbourne 97e251e05a ELF: Don't merge SHF_LINK_ORDER sections for different output sections in relocatable links.
Merging SHF_LINK_ORDER sections can affect semantics if the sh_link
fields point to different sections.

Specifically, for SHF_LINK_ORDER sections, the sh_link field acts as a reverse
dependency from the linked section, causing the SHF_LINK_ORDER section to
be included if the linked section is included. Merging sections with different
sh_link fields will cause the entire contents of the SHF_LINK_ORDER section
to be associated with a single (arbitrarily chosen) output section, whereas the
correct semantics are for the individual pieces of the SHF_LINK_ORDER section
to be associated with their linked output sections. As a result we can end up
incorrectly dropping SHF_LINK_ORDER section contents or including the wrong
section contents, depending on which linked sections were chosen.

Differential Revision: https://reviews.llvm.org/D68094

llvm-svn: 373255
2019-09-30 20:23:00 +00:00
..
COFF [LLD] [COFF] Use the unified llvm demangle frontend function. NFC. 2019-09-27 12:23:45 +00:00
Common [LLD] Simplify the demangleItanium function. NFC. 2019-09-27 12:24:18 +00:00
ELF ELF: Don't merge SHF_LINK_ORDER sections for different output sections in relocatable links. 2019-09-30 20:23:00 +00:00
MinGW [MinGW] Correct handling different forms of a few options 2019-08-14 09:35:44 +00:00
cmake/modules [CMake] Properly conditionalize installation of lld libraries 2018-03-09 13:09:36 +00:00
docs [ELF] Add -z separate-loadable-segments to complement separate-code and noseparate-code 2019-09-25 03:39:31 +00:00
include/lld [LLD] Simplify the demangleItanium function. NFC. 2019-09-27 12:24:18 +00:00
lib [lld][mach-o] Avoid segfaulting when handling an empty section list. 2019-09-26 17:03:20 +00:00
test ELF: Don't merge SHF_LINK_ORDER sections for different output sections in relocatable links. 2019-09-30 20:23:00 +00:00
tools/lld Fix build breakage on Darwin. 2019-07-11 06:12:18 +00:00
unittests Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
utils Python 2/3 compatibility 2019-03-20 07:42:13 +00:00
wasm [LLD] Simplify the demangleItanium function. NFC. 2019-09-27 12:24:18 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt [CMake] Don't set Python_ADDITIONAL_VERSIONS 2019-07-18 15:17:42 +00:00
CODE_OWNERS.TXT
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
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.