From 926bff8c3e3f3fd12395968423380b84caf087f1 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 25 Apr 2016 14:05:44 +0000 Subject: [PATCH] Add support for R_X86_64_PC64. llvm-svn: 267409 --- lld/ELF/Target.cpp | 2 ++ lld/test/ELF/relocation-shared.s | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 lld/test/ELF/relocation-shared.s diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index ceb3ef5..31d72bb 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 0000000..e185094 --- /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 - . -- 2.7.4