llvm-project/lld
Rafael Espindola 08d6a3f133 Create only one section symbol per section.
Unfortunately some consumers of our .o files produced with -r expect
only one section symbol per section. That is true of at least of go's
own linker.

Combining them is a somewhat convoluted process. We have to create a
symbol for every section since we don't know which ones will be
needed. The relocation sections also have to be written first to
handle the Elf_Rel addend.

I did consider a completely different approach:

We could remove the -r special case of relocation sections when
reading. We would instead have a copyRelocs function that is used
instead of scanRelocs. It would create a DynamicReloc for each
relocation and a RelocationSection for each input relocation section.

A complication of such change is that DynamicReloc would have to take
a section index and a input section instead of a symbol since with
-emit-relocs some DynamicReloc would hold relocations referring to the
dynamic symbol table and other to the static symbol table.

That would be a pretty big change, and if we do it it is probably
better to do it as a refactoring.

llvm-svn: 294816
2017-02-11 01:40:49 +00:00
..
COFF [CMake] Fix pthread handling for out-of-tree builds 2017-02-10 01:59:20 +00:00
ELF Create only one section symbol per section. 2017-02-11 01:40:49 +00:00
cmake/modules [lld][cmake] Fix BUILD_SHARED_LIBS installation 2017-01-24 10:41:02 +00:00
docs Don't try to link to the 4.0 release notes 2017-02-09 23:27:17 +00:00
include/lld added missing files for r293965 2017-02-02 23:53:10 +00:00
lib [CMake] Fix pthread handling for out-of-tree builds 2017-02-10 01:59:20 +00:00
test Create only one section symbol per section. 2017-02-11 01:40:49 +00:00
tools/lld [lld][cmake] Fix LLVM_LINK_LLVM_DYLIB build 2017-01-09 09:57:08 +00:00
unittests [CMake] Fix pthread handling for out-of-tree builds 2017-02-10 01:59:20 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format
.gitignore
CMakeLists.txt [cmake] Support running tests in stand-alone builds 2017-01-31 14:10:20 +00:00
CODE_OWNERS.TXT Add initial CODE_OWNERS.TXT file 2015-07-25 00:44:37 +00:00
LICENSE.TXT Update copyright year to 2016. 2016-03-30 22:40:59 +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.