[llvm] r193709 - This commit adds some (but not all) of the x86-64 relocations that are not
Tom Roeder
tmroeder at google.com
Wed Oct 30 11:47:25 PDT 2013
Author: tmroeder
Date: Wed Oct 30 13:47:25 2013
New Revision: 193709
URL: http://llvm.org/viewvc/llvm-project?rev=193709&view=rev
Log:
This commit adds some (but not all) of the x86-64 relocations that are not
currently supported in the ELF object writer, along with a simple test case.
Modified:
llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
llvm/trunk/test/MC/ELF/relocation.s
Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp?rev=193709&r1=193708&r2=193709&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp Wed Oct 30 13:47:25 2013
@@ -108,6 +108,12 @@ unsigned X86ELFObjectWriter::GetRelocTyp
case MCSymbolRefExpr::VK_None:
Type = ELF::R_X86_64_64;
break;
+ case MCSymbolRefExpr::VK_GOT:
+ Type = ELF::R_X86_64_GOT64;
+ break;
+ case MCSymbolRefExpr::VK_GOTOFF:
+ Type = ELF::R_X86_64_GOTOFF64;
+ break;
case MCSymbolRefExpr::VK_TPOFF:
Type = ELF::R_X86_64_TPOFF64;
break;
Modified: llvm/trunk/test/MC/ELF/relocation.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/relocation.s?rev=193709&r1=193708&r2=193709&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/relocation.s (original)
+++ llvm/trunk/test/MC/ELF/relocation.s Wed Oct 30 13:47:25 2013
@@ -14,6 +14,8 @@ bar:
leaq foo at TPOFF(%rax), %rax # R_X86_64_TPOFF32
leaq foo at TLSLD(%rip), %rdi # R_X86_64_TLSLD
leaq foo at dtpoff(%rax), %rcx # R_X86_64_DTPOFF32
+ movabs foo at GOT, %rax # R_X86_64_GOT64
+ movabs foo at GOTOFF, %rax # R_X86_64_GOTOFF64
pushq $bar
movq foo(%rip), %rdx
leaq foo-bar(%r14),%r14
@@ -35,12 +37,14 @@ bar:
// CHECK-NEXT: 0x3B R_X86_64_TPOFF32 foo 0x0
// CHECK-NEXT: 0x42 R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC
// CHECK-NEXT: 0x49 R_X86_64_DTPOFF32 foo 0x0
-// CHECK-NEXT: 0x4E R_X86_64_32S .text 0x0
-// 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: 0x71 R_X86_64_TPOFF64 baz 0x0
+// CHECK-NEXT: 0x4F R_X86_64_GOT64 foo 0x0
+// CHECK-NEXT: 0x59 R_X86_64_GOTOFF64 foo 0x0
+// CHECK-NEXT: 0x62 R_X86_64_32S .text 0x0
+// CHECK-NEXT: 0x69 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT: 0x70 R_X86_64_PC32 foo 0x70
+// CHECK-NEXT: 0x77 R_X86_64_32S .text 0x0
+// CHECK-NEXT: 0x7B R_X86_64_DTPOFF64 foo 0x0
+// CHECK-NEXT: 0x85 R_X86_64_TPOFF64 baz 0x0
// CHECK-NEXT: ]
// CHECK-NEXT: }
More information about the llvm-commits
mailing list