Handle 16 bit PC relative relocations.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 6 Jun 2015 02:29:56 +0000 (02:29 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 6 Jun 2015 02:29:56 +0000 (02:29 +0000)
Fixes pr23771.

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

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

index 45088835cfb9078719a19afec18be3a556ddc2bb..a33468dc476994a3301381bbb465f52c186ec349 100644 (file)
@@ -66,6 +66,7 @@ static X86_64RelType getType64(unsigned Kind,
   case X86::reloc_riprel_4byte:
   case X86::reloc_riprel_4byte_movq_load:
     return RT64_32;
+  case FK_PCRel_2:
   case FK_Data_2:
     return RT64_16;
   case FK_PCRel_1:
index 7697eb060010877146fa5ab8a3926d209f3ec7c6..34f1a4038131b62e58c40a1075e53176d35f2368 100644 (file)
@@ -54,6 +54,10 @@ bar:
 
         .quad  pr23272_2 - pr23272
         .quad  pr23272_3 - pr23272
+
+        .code16
+        call pr23771
+
 // CHECK:        Section {
 // CHECK:          Name: .rela.text
 // CHECK:          Relocations [
@@ -90,5 +94,6 @@ bar:
 // CHECK-NEXT:       0xD4 R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0
 // CHECK-NEXT:       0xD8 R_X86_64_GOTPCREL foo 0x0
 // CHECK-NEXT:       0xDC R_X86_64_PLT32 foo 0x0
+// CHECK-NEXT:       0xF1 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
 // CHECK-NEXT:     ]
 // CHECK-NEXT:   }