summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-03-18 17:33:40 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-03-18 17:33:40 +0000
commit38438bae21aee9bc24276d31f5b3eede81ac1a1d (patch)
tree4763114b19e4d90a317a9cbf386b7eb0e2e6d3f1
parent5d7e8fcd5297169b461f2465470f620b2dd9f9c9 (diff)
downloadbcm5719-llvm-38438bae21aee9bc24276d31f5b3eede81ac1a1d.tar.gz
bcm5719-llvm-38438bae21aee9bc24276d31f5b3eede81ac1a1d.zip
Handle X86::reloc_riprel_4byte in 32 bits mode.
We can get there with .code64. Fixes pr22349. llvm-svn: 232651
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp1
-rw-r--r--llvm/test/MC/ELF/relocation-386.s4
2 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
index 569b811e5f4..172887a48ec 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
@@ -191,6 +191,7 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target,
}
break;
+ case X86::reloc_riprel_4byte:
case X86::reloc_signed_4byte:
case FK_PCRel_4:
case FK_Data_4:
diff --git a/llvm/test/MC/ELF/relocation-386.s b/llvm/test/MC/ELF/relocation-386.s
index 83c524b9d07..39abcedba5e 100644
--- a/llvm/test/MC/ELF/relocation-386.s
+++ b/llvm/test/MC/ELF/relocation-386.s
@@ -65,6 +65,7 @@
// CHECK-NEXT: 0xA3 R_386_GOTOFF und_symbol 0x0
// Relocation 29 (zed@PLT) is of type R_386_PLT32 and uses the symbol
// CHECK-NEXT: 0xA9 R_386_PLT32 zed 0x0
+// CHECK-NEXT: 0xAF R_386_PC32 tr_start 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]
@@ -133,6 +134,9 @@ bar2:
leal 1 + und_symbol@GOTOFF, %edi
movl zed@PLT(%eax), %eax
+ .code64
+ jmpq *tr_start(%rip)
+
.section zedsec,"awT",@progbits
zed:
.long 0
OpenPOWER on IntegriCloud