llvm-project/lld
Rui Ueyama 1ce8a0a8ed [PECOFF] Only COMDAT symbols are allowed to be dead-stripped.
We should dead-strip atoms only if they are created for COMDAT symbols. If we
remove non-COMDAT atoms from a binary, it will no longer be guaranteed that
the binary will work correctly.

In COFF, you can manipulate the order of section contents in the resulting
binary by section name. For example, if you have four sections
.data$unique_prefix_{a,b,c,d}, it's guaranteed that the contents of A, B, C,
and D will be consecutive in the resulting .data section in that order.
Thus, you can access B's and C's contents by incrementing a pointer pointing
to A until it reached to D. That's why we cannot dead-strip B or C even if
no one is directly referencing to them.

Some object files in the standard library actually use that technique.

llvm-svn: 193017
2013-10-18 23:54:55 +00:00
..
cmake/modules Add VTune as an optional external dependency and add task tracking. 2013-04-06 00:56:40 +00:00
docs Update documentation. 2013-09-07 18:01:39 +00:00
include/lld Improve debug message of the layout pass. 2013-10-18 02:56:31 +00:00
lib [PECOFF] Only COMDAT symbols are allowed to be dead-stripped. 2013-10-18 23:54:55 +00:00
test [PECOFF] Only COMDAT symbols are allowed to be dead-stripped. 2013-10-18 23:54:55 +00:00
tools Make Driver::link and LinkingContext::validate return true on success. 2013-09-24 23:26:34 +00:00
unittests Make undefines check into an assertion. 2013-10-16 19:21:50 +00:00
utils Add basic linker script parsing. 2013-03-01 00:03:36 +00:00
.arcconfig Add .arcconfig for Phabricator command-line support 2013-01-03 02:15:37 +00:00
.gitignore docs: Sketch Sphinx based docs structure. 2012-04-06 21:02:20 +00:00
CMakeLists.txt CMake: Support the LLVM_INSTALL_TOOLCHAIN_ONLY flag 2013-08-24 00:24:15 +00:00
LICENSE.TXT Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
README.md Test commit 2012-09-14 00:00:39 +00:00

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.