From: Simon Atanasyan Date: Wed, 7 May 2014 17:06:38 +0000 (+0000) Subject: [yaml2obj] Support ELF x86 relocations. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d92c843b2edac2e83dd579d39fc4f0cc2beb4986;p=oota-llvm.git [yaml2obj] Support ELF x86 relocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208228 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp index c0bdc134bf0..35cda6378c8 100644 --- a/lib/Object/ELFYAML.cpp +++ b/lib/Object/ELFYAML.cpp @@ -570,6 +570,49 @@ void ScalarEnumerationTraits::enumeration( ECase(R_HEX_TPREL_16_X) ECase(R_HEX_TPREL_11_X) break; + case ELF::EM_386: + ECase(R_386_NONE) + ECase(R_386_32) + ECase(R_386_PC32) + ECase(R_386_GOT32) + ECase(R_386_PLT32) + ECase(R_386_COPY) + ECase(R_386_GLOB_DAT) + ECase(R_386_JUMP_SLOT) + ECase(R_386_RELATIVE) + ECase(R_386_GOTOFF) + ECase(R_386_GOTPC) + ECase(R_386_32PLT) + ECase(R_386_TLS_TPOFF) + ECase(R_386_TLS_IE) + ECase(R_386_TLS_GOTIE) + ECase(R_386_TLS_LE) + ECase(R_386_TLS_GD) + ECase(R_386_TLS_LDM) + ECase(R_386_16) + ECase(R_386_PC16) + ECase(R_386_8) + ECase(R_386_PC8) + ECase(R_386_TLS_GD_32) + ECase(R_386_TLS_GD_PUSH) + ECase(R_386_TLS_GD_CALL) + ECase(R_386_TLS_GD_POP) + ECase(R_386_TLS_LDM_32) + ECase(R_386_TLS_LDM_PUSH) + ECase(R_386_TLS_LDM_CALL) + ECase(R_386_TLS_LDM_POP) + ECase(R_386_TLS_LDO_32) + ECase(R_386_TLS_IE_32) + ECase(R_386_TLS_LE_32) + ECase(R_386_TLS_DTPMOD32) + ECase(R_386_TLS_DTPOFF32) + ECase(R_386_TLS_TPOFF32) + ECase(R_386_TLS_GOTDESC) + ECase(R_386_TLS_DESC_CALL) + ECase(R_386_TLS_DESC) + ECase(R_386_IRELATIVE) + ECase(R_386_NUM) + break; default: llvm_unreachable("Unsupported architecture"); } diff --git a/test/Object/X86/yaml2obj-elf-x86-rel.yaml b/test/Object/X86/yaml2obj-elf-x86-rel.yaml new file mode 100644 index 00000000000..a86c3764335 --- /dev/null +++ b/test/Object/X86/yaml2obj-elf-x86-rel.yaml @@ -0,0 +1,43 @@ +# RUN: yaml2obj -format=elf %s > %t +# RUN: llvm-readobj -r %t | FileCheck %s + +# CHECK: Relocations [ +# CHECK-NEXT: Section (2) .rel.text { +# CHECK-NEXT: 0x0 R_386_32 main 0x0 +# CHECK-NEXT: } +# CHECK-NEXT: ] + +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_386 +Sections: + - Type: SHT_PROGBITS + Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x04 + Content: 0000000000000000 + - Type: SHT_REL + Name: .rel.text + Type: SHT_REL + Link: .symtab + Info: .text + AddressAlign: 0x04 + Relocations: + - Offset: 0 + Symbol: main + Type: R_386_32 + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08