Handle X86::reloc_riprel_4byte in 32 bits mode.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Mar 2015 17:33:40 +0000 (17:33 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Mar 2015 17:33:40 +0000 (17:33 +0000)
We can get there with .code64.

Fixes pr22349.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232651 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
test/MC/ELF/relocation-386.s

index 569b811e5f48f1e0d16d7d1e575cad2bcc3280d9..172887a48ec827b028d04b361378969119e8aeb5 100644 (file)
@@ -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:
index 83c524b9d07bbec7eddac3fb525368f4f7ec57d5..39abcedba5e1e58adca8b943691b9f4e61bb900e 100644 (file)
@@ -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