[x86] Support R_386_PC8, R_386_PC16 and R_X86_64_PC8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198763 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Woodhouse
2014-01-08 12:58:40 +00:00
parent 51a64502bf
commit 38b362617c
3 changed files with 33 additions and 0 deletions

View File

@@ -57,6 +57,7 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target,
case FK_Data_8: Type = ELF::R_X86_64_PC64; break;
case FK_Data_4: Type = ELF::R_X86_64_PC32; break;
case FK_Data_2: Type = ELF::R_X86_64_PC16; break;
case FK_Data_1: Type = ELF::R_X86_64_PC8; break;
case FK_PCRel_8:
assert(Modifier == MCSymbolRefExpr::VK_None);
@@ -160,6 +161,28 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target,
Type = ELF::R_386_GOTPC;
break;
case FK_PCRel_1:
case FK_Data_1:
switch (Modifier) {
default:
llvm_unreachable("Unimplemented");
case MCSymbolRefExpr::VK_None:
Type = ELF::R_386_PC8;
break;
}
break;
case FK_PCRel_2:
case FK_Data_2:
switch (Modifier) {
default:
llvm_unreachable("Unimplemented");
case MCSymbolRefExpr::VK_None:
Type = ELF::R_386_PC16;
break;
}
break;
case X86::reloc_signed_4byte:
case FK_PCRel_4:
case FK_Data_4: