From: Rafael Espindola 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: }