From: Rafael Espindola <rafael.espindola@gmail.com>
Date: Sat, 6 Jun 2015 02:29:56 +0000 (+0000)
Subject: Handle 16 bit PC relative relocations.
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dcb11d3206e01dec45b8b21f82f7b07c6cc9dd7a;p=oota-llvm.git

Handle 16 bit PC relative relocations.

Fixes pr23771.

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

diff --git a/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
index 45088835cfb..a33468dc476 100644
--- a/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
+++ b/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
@@ -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:
diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s
index 7697eb06001..34f1a403813 100644
--- a/test/MC/ELF/relocation.s
+++ b/test/MC/ELF/relocation.s
@@ -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:   }