forked from OSchip/llvm-project
[yaml2obj] - Don't crash when `FileHeader` declares an empty `Flags` key in specific situations.
We currently call the `llvm_unreachable` for the following YAML: ``` --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_NONE Flags: [ ] ``` it happens because the `Flags` key is present, though `EM_NONE` is a machine type that has no known `EF_*` values and we call `llvm_unreachable` by mistake. Differential revision: https://reviews.llvm.org/D86138
This commit is contained in:
parent
1b93ebccaa
commit
bd7daf5ceb
|
@ -434,10 +434,8 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO,
|
|||
BCase(EF_AMDGPU_XNACK);
|
||||
BCase(EF_AMDGPU_SRAM_ECC);
|
||||
break;
|
||||
case ELF::EM_X86_64:
|
||||
break;
|
||||
default:
|
||||
llvm_unreachable("Unsupported architecture");
|
||||
break;
|
||||
}
|
||||
#undef BCase
|
||||
#undef BCaseMask
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
## Check how the 'Flags' key can be used to encode e_flags field values.
|
||||
|
||||
## Check we are able to produce no flags for EM_NONE. EM_NONE is an arbitrary
|
||||
## e_machine type that has no EF_* values defined for it.
|
||||
# RUN: yaml2obj %s -o %t-no-flags
|
||||
# RUN: llvm-readelf --file-headers %t-no-flags | FileCheck %s --check-prefix=NOFLAGS
|
||||
|
||||
# NOFLAGS: Flags: 0x0{{$}}
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_NONE
|
||||
Flags: [ ]
|
Loading…
Reference in New Issue