llvm-project/lld
Rui Ueyama e05b629d39 Use NativeReferenceIvarsV2 if necessary.
NativeReferenceIvarsV1 cannot handle more than 65535 relocation targets
because its field to point to the target table is of type uint16_t. Because
of that limitation, the LLD couldn't link a file containing more than 65535
relocations. 65535 is not a big number - the LLD couldn't even link itself
with V1.

This patch solves the issue by adding NativeReferenceIvarsV2 support. The
new structure has more bits for the target table, so it can handle a large
number of relocatinos.

V2 structure is larger than V1. In order to prevent file bloating, V2 format
is used only when the resulting file cannot be represented in V1 format. The
writer and the reader support both V1 and V2 formats.

Differential Revision: http://llvm-reviews.chandlerc.com/D2217

llvm-svn: 195270
2013-11-20 20:54:18 +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 Use early continue. Style fix. No functionality change. 2013-11-19 06:10:13 +00:00
lib Use NativeReferenceIvarsV2 if necessary. 2013-11-20 20:54:18 +00:00
test Fix Weak External symbol handling. 2013-11-20 20:51:55 +00:00
tools Make Driver::link and LinkingContext::validate return true on success. 2013-09-24 23:26:34 +00:00
unittests [PECOFF] Ignore /tlbid, /tlbout, /idlout and /ignoreigl for now. 2013-11-19 05:55:08 +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 Get lld building with MSVC2013 2013-11-12 15:14:33 +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.