summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2017-06-30 10:31:03 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2017-06-30 10:31:03 +0000
commit940b9a117bcdb7068566bf76f7427a6a2155c0a3 (patch)
treead7d4f2d8339405bfcb4513bc16a640afb1d92f8
parentb68c6ed9f1fc6ac69187cff41c129000fcf8d310 (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.cpp1
-rw-r--r--test/Object/X86/yaml-elf-x86-rel-broken.yaml29
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