diff options
author | George Rimar <grimar@accesssoftek.com> | 2017-06-30 10:31:03 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2017-06-30 10:31:03 +0000 |
commit | 940b9a117bcdb7068566bf76f7427a6a2155c0a3 (patch) | |
tree | ad7d4f2d8339405bfcb4513bc16a640afb1d92f8 | |
parent | b68c6ed9f1fc6ac69187cff41c129000fcf8d310 (diff) |
[YAML] - Teach yaml2obj/obj2yaml to work with numeric relocation values.
That may be useful if we want to produce or parse object containing
broken relocation values using yaml2obj/obj2yaml.
Previously that was impossible because only enum values were parsed
correctly, this patch allows to put any numeric value as a
relocation type.
Differential revision: https://reviews.llvm.org/D34758
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306814 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/ObjectYAML/ELFYAML.cpp | 1 | ||||
-rw-r--r-- | test/Object/X86/yaml-elf-x86-rel-broken.yaml | 29 |
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/ObjectYAML/ELFYAML.cpp b/lib/ObjectYAML/ELFYAML.cpp index dbd5498e003..8578997fe57 100644 --- a/lib/ObjectYAML/ELFYAML.cpp +++ b/lib/ObjectYAML/ELFYAML.cpp @@ -542,6 +542,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration( llvm_unreachable("Unsupported architecture"); } #undef ELF_RELOC + IO.enumFallback<Hex32>(Value); } void ScalarEnumerationTraits<ELFYAML::MIPS_AFL_REG>::enumeration( diff --git a/test/Object/X86/yaml-elf-x86-rel-broken.yaml b/test/Object/X86/yaml-elf-x86-rel-broken.yaml new file mode 100644 index 00000000000..edd5dbce123 --- /dev/null +++ b/test/Object/X86/yaml-elf-x86-rel-broken.yaml @@ -0,0 +1,29 @@ +# RUN: yaml2obj %s > %t +# RUN: obj2yaml %t | FileCheck %s + +# CHECK: Relocations: +# CHECK-NEXT: - Offset: +# CHECK-NEXT: Symbol: +# CHECK-NEXT: Type: 0x000000FF + +!ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_386 +Sections: + - Type: SHT_PROGBITS + Name: .text + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x04 + Content: 0000000000000000 + - Type: SHT_REL + Name: .rel.text + Link: .symtab + Info: .text + AddressAlign: 0x04 + Relocations: + - Offset: 0 + Symbol: main + Type: 0xFF |