hanchenye-llvm-project/lld
George Rimar e7bf968803 [ELF] - Stop producing broken output for R_386_GOT32[X] relocations.
Previously we silently produced broken output for R_386_GOT32X/R_386_GOT32 
relocations if they were used to compute the address of the symbol’s global
offset table entry without base register when position-independent code is disabled.

Situation happened because of recent ABI changes. Released ABI mentions that
R_386_GOT32X can be calculated in a two different ways (so we did not follow ABI here 
before this patch), but draft ABI also mentions R_386_GOT32 relocation here. 
We should use the same calculations for both relocations.

Problem is that we always calculated them as G + A - GOT (offset from end of GOT),
but for case when PIC is disabled, according to i386 ABI calculation should be G + A,
what should produce just an address in GOT finally.

ABI: https://github.com/hjl-tools/x86-psABI/wiki/intel386-psABI-draft.pdf (p36, p60).
llvm-svn: 299812
2017-04-08 06:14:14 +00:00
..
COFF COFF: support the /appcontainer flag 2017-04-06 23:07:53 +00:00
ELF [ELF] - Stop producing broken output for R_386_GOT32[X] relocations. 2017-04-08 06:14:14 +00:00
cmake/modules [lld][cmake] Fix BUILD_SHARED_LIBS installation 2017-01-24 10:41:02 +00:00
docs Improve the documentation. Patch from genewitch. Found on https://github.com/llvm-mirror/lld/pull/5 2017-03-02 10:40:24 +00:00
include/lld [Core] Fix parallel_for for Linux 2017-04-07 08:11:28 +00:00
lib [ELF] - Allow the Code Model flag when using LTO 2017-02-28 23:43:26 +00:00
test [ELF] - Stop producing broken output for R_386_GOT32[X] relocations. 2017-04-08 06:14:14 +00:00
tools/lld s/Mac/macOS/ because that's now the official name of the OS. 2017-02-23 02:58:14 +00:00
unittests Fix signed/unsigned comparison warning in a unit test. This was appearing on 2017-04-07 08:48:17 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt [cmake] Support running tests in stand-alone builds 2017-01-31 14:10:20 +00:00
CODE_OWNERS.TXT
LICENSE.TXT
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.