diff options
| author | George Rimar <grimar@accesssoftek.com> | 2015-10-07 18:46:13 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2015-10-07 18:46:13 +0000 |
| commit | 730c27894a62bf52db434f44fbcac3b1893f6dc9 (patch) | |
| tree | ff13fe0d8a31354491fa49970c548bc97365fd9e /lld | |
| parent | 675f49bbd58ef78c947ac0ba32835051ff33f4e5 (diff) | |
| download | bcm5719-llvm-730c27894a62bf52db434f44fbcac3b1893f6dc9.tar.gz bcm5719-llvm-730c27894a62bf52db434f44fbcac3b1893f6dc9.zip | |
[ELF2] - fix to use PLT/GOT for DSO function calls (X86TargetInfo)
Differential Revision: http://reviews.llvm.org/D13522
llvm-svn: 249588
Diffstat (limited to 'lld')
| -rw-r--r-- | lld/ELF/Target.cpp | 2 | ||||
| -rw-r--r-- | lld/test/elf2/relocation-i686.s | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index 56b336face1..8b87c20d7e2 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -56,7 +56,7 @@ bool X86TargetInfo::relocPointsToGot(uint32_t Type) const { } bool X86TargetInfo::relocNeedsPlt(uint32_t Type, const SymbolBody &S) const { - return Type == R_386_PLT32; + return Type == R_386_PLT32 || (Type == R_386_PC32 && S.isShared()); } static void add32le(uint8_t *L, int32_t V) { write32le(L, read32le(L) + V); } diff --git a/lld/test/elf2/relocation-i686.s b/lld/test/elf2/relocation-i686.s index b0cf617ad50..756c5c97974 100644 --- a/lld/test/elf2/relocation-i686.s +++ b/lld/test/elf2/relocation-i686.s @@ -62,7 +62,7 @@ R_386_GOTPC: call bar+4 // CHECK: Disassembly of section .dynamic_reloc: // CHECK-NEXT: .dynamic_reloc: -// CHECK-NEXT: 12019: e8 00 00 00 00 calll 0 +// CHECK-NEXT: 12019: e8 16 00 00 00 calll 22 .section .R_386_GOT32,"ax",@progbits .global R_386_GOT32 |

