diff options
author | David Woodhouse <dwmw2@infradead.org> | 2014-01-08 12:58:40 +0000 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2014-01-08 12:58:40 +0000 |
commit | adfc88599788bf8f885fa5898f02988bc2e8b2dc (patch) | |
tree | fda800a3e38b77546a7556cbd4a1fb48272d05ba /llvm/lib | |
parent | 9785f512cb7d5d17b4e81bbedb4fbbed6ed13476 (diff) | |
download | bcm5719-llvm-adfc88599788bf8f885fa5898f02988bc2e8b2dc.tar.gz bcm5719-llvm-adfc88599788bf8f885fa5898f02988bc2e8b2dc.zip |
[x86] Support R_386_PC8, R_386_PC16 and R_X86_64_PC8
llvm-svn: 198763
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp index 3ddd86599eb..64344e45218 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp @@ -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: |