diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-06-28 04:24:32 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-06-28 04:24:32 +0000 |
commit | c084c0945b0530180e8969f5e2017d02d06db130 (patch) | |
tree | 6c6a3f46c3a7726567a097639fd20a2647484c6a | |
parent | 8e7294f9953a98cfaae7e3bf5a6c852018cbcb83 (diff) | |
download | llvm-c084c0945b0530180e8969f5e2017d02d06db130.tar.gz llvm-c084c0945b0530180e8969f5e2017d02d06db130.tar.bz2 llvm-c084c0945b0530180e8969f5e2017d02d06db130.tar.xz |
Integrate Assembler: Support X86_64_DTPOFF64 relocations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185131 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp | 13 | ||||
-rw-r--r-- | test/MC/ELF/relocation.s | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp index de80dd835e..b400b87f30 100644 --- a/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp +++ b/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp @@ -101,7 +101,18 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target, } else { switch ((unsigned)Fixup.getKind()) { default: llvm_unreachable("invalid fixup kind!"); - case FK_Data_8: Type = ELF::R_X86_64_64; break; + case FK_Data_8: + switch (Modifier) { + default: + llvm_unreachable("Unimplemented"); + case MCSymbolRefExpr::VK_None: + Type = ELF::R_X86_64_64; + break; + case MCSymbolRefExpr::VK_DTPOFF: + Type = ELF::R_X86_64_DTPOFF64; + break; + } + break; case X86::reloc_signed_4byte: switch (Modifier) { default: diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index 18d43dab76..d2c4f2e078 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -18,7 +18,7 @@ bar: movq foo(%rip), %rdx leaq foo-bar(%r14),%r14 addq $bar,%rax # R_X86_64_32S - + .quad foo@DTPOFF // CHECK: Section { // CHECK: Name: .rela.text @@ -38,6 +38,7 @@ bar: // CHECK-NEXT: 0x55 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC // CHECK-NEXT: 0x5C R_X86_64_PC32 foo 0x5C // CHECK-NEXT: 0x63 R_X86_64_32S .text 0x0 +// CHECK-NEXT: 0x67 R_X86_64_DTPOFF64 foo 0x0 // CHECK-NEXT: ] // CHECK-NEXT: } |