diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 88c7200734f..c4e2e3f390b 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -1610,6 +1610,7 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target, assert(Modifier == MCSymbolRefExpr::VK_None); Type = ELF::R_X86_64_PC64; break; + case X86::reloc_riprel_4byte_movq_load: case FK_Data_4: // FIXME? case X86::reloc_riprel_4byte: case FK_PCRel_4: diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index a3ad5268b40..ea27214b8a9 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -15,6 +15,7 @@ bar: leaq foo@TLSLD(%rip), %rdi # R_X86_64_TLSLD leaq foo@DTPOFF(%rax), %rcx # R_X86_64_DTPOFF32 pushq $bar + movq foo(%rip), %rdx // CHECK: # Section 0x00000001 @@ -98,3 +99,9 @@ bar: // CHECK-NEXT: ('r_sym', 0x00000002) // CHECK-NEXT: ('r_type', 0x0000000b) // CHECK-NEXT: ('r_addend', 0x00000000) + +// CHECK: # Relocation 0x0000000c +// CHECK-NEXT: (('r_offset', 0x00000055) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0xfffffffc)