mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[yaml2obj/obj2yaml] - Do not trigger llvm_unreachable when dumping/parsing relocations and e_machine is unsupported.
Currently when e_machine is set to something that is not supported by YAML lib, then tools fail with llvm_unreachable. In this patch I allow them to handle relocations in this case. It can be used to dump and create objects for broken or unsupported targets. Differential revision: https://reviews.llvm.org/D67657 llvm-svn: 372377
This commit is contained in:
parent
24419cf007
commit
a52c2bff8d
@ -655,7 +655,8 @@ void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration(
|
||||
#include "llvm/BinaryFormat/ELFRelocs/PowerPC64.def"
|
||||
break;
|
||||
default:
|
||||
llvm_unreachable("Unsupported architecture");
|
||||
// Nothing to do.
|
||||
break;
|
||||
}
|
||||
#undef ELF_RELOC
|
||||
IO.enumFallback<Hex32>(Value);
|
||||
|
38
test/tools/obj2yaml/relocation-unsupported-machine.yaml
Normal file
38
test/tools/obj2yaml/relocation-unsupported-machine.yaml
Normal file
@ -0,0 +1,38 @@
|
||||
## Show that obj2yaml is able to dump relocations when `e_machine` is unknown.
|
||||
|
||||
# RUN: yaml2obj %s -o %t1
|
||||
# RUN: obj2yaml %t1 | FileCheck %s
|
||||
|
||||
# CHECK: --- !ELF
|
||||
# CHECK-NEXT: FileHeader:
|
||||
# CHECK-NEXT: Class: ELFCLASS64
|
||||
# CHECK-NEXT: Data: ELFDATA2MSB
|
||||
# CHECK-NEXT: Type: ET_REL
|
||||
# CHECK-NEXT: Machine: 0x1234
|
||||
# CHECK-NEXT: Sections:
|
||||
# CHECK-NEXT: - Name: .rela.text
|
||||
# CHECK-NEXT: Type: SHT_RELA
|
||||
# CHECK-NEXT: Link: .symtab
|
||||
# CHECK-NEXT: EntSize: 0x0000000000000018
|
||||
# CHECK-NEXT: Relocations:
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000001
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: 0x00000002
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000003
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: 0x00000004
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2MSB
|
||||
Type: ET_REL
|
||||
Machine: 0x1234
|
||||
Sections:
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Offset: 0x1
|
||||
Type: 0x2
|
||||
- Offset: 0x3
|
||||
Type: 0x4
|
24
test/tools/yaml2obj/relocation-unsupported-machine.yaml
Normal file
24
test/tools/yaml2obj/relocation-unsupported-machine.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
## Show that yaml2obj is able to write relocations for an unknown e_machine properly.
|
||||
|
||||
# RUN: yaml2obj %s -o %t1
|
||||
# RUN: llvm-readelf %t1 --relocations | FileCheck %s
|
||||
|
||||
# CHECK: Relocation section '.rela.text' at offset 0x40 contains 2 entries:
|
||||
# CHECK: Offset Info Type Symbol's Value Symbol's Name + Addend
|
||||
# CHECK-NEXT: 0000000000000001 0000000000000002 Unknown 0
|
||||
# CHECK-NEXT: 0000000000000003 0000000000000004 Unknown 0
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2MSB
|
||||
Type: ET_REL
|
||||
Machine: 0x1234
|
||||
Sections:
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Relocations:
|
||||
- Offset: 0x1
|
||||
Type: 0x2
|
||||
- Offset: 0x3
|
||||
Type: 0x4
|
Loading…
Reference in New Issue
Block a user