diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-04-25 14:05:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-04-25 14:05:44 +0000 |
commit | 926bff8c3e3f3fd12395968423380b84caf087f1 (patch) | |
tree | 437f422afdcbe65b8636ac4aca399d1f70fa5e63 | |
parent | c3596284c3c1a13f56f0c2264dcbcc3658a65797 (diff) | |
download | bcm5719-llvm-926bff8c3e3f3fd12395968423380b84caf087f1.tar.gz bcm5719-llvm-926bff8c3e3f3fd12395968423380b84caf087f1.zip |
Add support for R_X86_64_PC64.
llvm-svn: 267409
-rw-r--r-- | lld/ELF/Target.cpp | 2 | ||||
-rw-r--r-- | lld/test/ELF/relocation-shared.s | 35 |
2 files changed, 37 insertions, 0 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index ceb3ef57a72..31d72bbc0e1 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -541,6 +541,7 @@ RelExpr X86_64TargetInfo::getRelExpr(uint32_t Type, const SymbolBody &S) const { case R_X86_64_PLT32: return R_PLT_PC; case R_X86_64_PC32: + case R_X86_64_PC64: return R_PC; case R_X86_64_GOT32: return R_GOT_FROM_END; @@ -750,6 +751,7 @@ void X86_64TargetInfo::relocateOne(uint8_t *Loc, uint32_t Type, case R_X86_64_64: case R_X86_64_DTPOFF64: case R_X86_64_SIZE64: + case R_X86_64_PC64: write64le(Loc, Val); break; case R_X86_64_GOTPCREL: diff --git a/lld/test/ELF/relocation-shared.s b/lld/test/ELF/relocation-shared.s new file mode 100644 index 00000000000..e1850944c45 --- /dev/null +++ b/lld/test/ELF/relocation-shared.s @@ -0,0 +1,35 @@ +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o +// RUN: ld.lld %t.o -shared -o %t.so +// RUN: llvm-readobj -r -s -section-data %t.so | FileCheck %s + +// CHECK: Name: foo +// CHECK-NEXT: Type: SHT_PROGBITS +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x1C8 +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: 8 +// CHECK-NEXT: Link: 0 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 1 +// CHECK-NEXT: EntrySize: 0 +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 380E0000 00000000 +// 0x1000 - 0x1C8 = 0xE38 +// CHECK-NEXT: ) + +// CHECK: Name: .text +// CHECK-NEXT: Type: SHT_PROGBITS +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: SHF_EXECINSTR +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x1000 + +// CHECK: Relocations [ +// CHECK-NEXT: ] + +bar: + .section foo,"a",@progbits + .quad bar - . |