mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 11:39:35 +00:00
[yaml2obj] - Allow producing ELFDATANONE ELFs
I need this to remove a binary from LLD test suite. The patch also simplifies the code a bit. Differential revision: https://reviews.llvm.org/D59082 llvm-svn: 355591
This commit is contained in:
parent
cfd3255251
commit
a5a0a0f049
@ -232,8 +232,9 @@ void ScalarEnumerationTraits<ELFYAML::ELF_ELFCLASS>::enumeration(
|
||||
void ScalarEnumerationTraits<ELFYAML::ELF_ELFDATA>::enumeration(
|
||||
IO &IO, ELFYAML::ELF_ELFDATA &Value) {
|
||||
#define ECase(X) IO.enumCase(Value, #X, ELF::X)
|
||||
// Since the semantics of ELFDATANONE is "invalid", just don't accept it
|
||||
// here.
|
||||
// ELFDATANONE is an invalid data encoding, but we accept it because
|
||||
// we want to be able to produce invalid binaries for the tests.
|
||||
ECase(ELFDATANONE);
|
||||
ECase(ELFDATA2LSB);
|
||||
ECase(ELFDATA2MSB);
|
||||
#undef ECase
|
||||
|
15
llvm/test/tools/yaml2obj/elf-header-elfdatanone.yaml
Normal file
15
llvm/test/tools/yaml2obj/elf-header-elfdatanone.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
## We have a YAML file describing an invalid data type.
|
||||
## Check we are able to produce the invalid binary.
|
||||
|
||||
# RUN: yaml2obj %s -o %t.o
|
||||
|
||||
## Check that EI_DATA field is ELFDATANONE(0)
|
||||
# RUN: od -b %t.o +5 | FileCheck %s
|
||||
# CHECK: 0000005 000
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATANONE
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
@ -207,8 +207,7 @@ void ELFState<ELFT>::initELFHeader(Elf_Ehdr &Header) {
|
||||
Header.e_ident[EI_MAG2] = 'L';
|
||||
Header.e_ident[EI_MAG3] = 'F';
|
||||
Header.e_ident[EI_CLASS] = ELFT::Is64Bits ? ELFCLASS64 : ELFCLASS32;
|
||||
bool IsLittleEndian = ELFT::TargetEndianness == support::little;
|
||||
Header.e_ident[EI_DATA] = IsLittleEndian ? ELFDATA2LSB : ELFDATA2MSB;
|
||||
Header.e_ident[EI_DATA] = Doc.Header.Data;
|
||||
Header.e_ident[EI_VERSION] = EV_CURRENT;
|
||||
Header.e_ident[EI_OSABI] = Doc.Header.OSABI;
|
||||
Header.e_ident[EI_ABIVERSION] = Doc.Header.ABIVersion;
|
||||
|
Loading…
Reference in New Issue
Block a user