[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

llvm-svn: 306814
This commit is contained in:
George Rimar 2017-06-30 10:31:03 +00:00
parent aad84e2ee2
commit 892c6c86ea
2 changed files with 30 additions and 0 deletions

View File

@ -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(

View File

@ -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