[llvm] r208228 - [yaml2obj] Support ELF x86 relocations.
NAKAMURA Takumi
geek4civic at gmail.com
Fri May 9 04:32:33 PDT 2014
2014-05-08 2:06 GMT+09:00 Simon Atanasyan <simon at atanasyan.com>:
> Author: atanasyan
> Date: Wed May 7 12:06:38 2014
> New Revision: 208228
>
> URL: http://llvm.org/viewvc/llvm-project?rev=208228&view=rev
> Log:
> [yaml2obj] Support ELF x86 relocations.
>
> Added:
> llvm/trunk/test/Object/X86/yaml2obj-elf-x86-rel.yaml
> Modified:
> llvm/trunk/lib/Object/ELFYAML.cpp
>
> Modified: llvm/trunk/lib/Object/ELFYAML.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELFYAML.cpp?rev=208228&r1=208227&r2=208228&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Object/ELFYAML.cpp (original)
> +++ llvm/trunk/lib/Object/ELFYAML.cpp Wed May 7 12:06:38 2014
> @@ -570,6 +570,49 @@ void ScalarEnumerationTraits<ELFYAML::EL
> 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");
> }
>
> Added: llvm/trunk/test/Object/X86/yaml2obj-elf-x86-rel.yaml
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/X86/yaml2obj-elf-x86-rel.yaml?rev=208228&view=auto
> ==============================================================================
> --- llvm/trunk/test/Object/X86/yaml2obj-elf-x86-rel.yaml (added)
> +++ llvm/trunk/test/Object/X86/yaml2obj-elf-x86-rel.yaml Wed May 7 12:06:38 2014
> @@ -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
2nd hash "Type" causes memory leak.
YAMLTraits.cpp:343: mapHNode->Mapping[KeyStr] = ValueHNode;
Previous value of Mapping[KeyStr] lost.
Tweaked in r208406. Could you fix?
> + Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
> + AddressAlign: 0x04
> + Content: 0000000000000000
> + - Type: SHT_REL
> + Name: .rel.text
> + Type: SHT_REL
Same as above.
> + 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
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list