Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion llvm/include/llvm/ObjectYAML/ELFYAML.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ struct FileHeader {
llvm::yaml::Hex8 ABIVersion;
ELF_ET Type;
std::optional<ELF_EM> Machine;
ELF_EF Flags;
std::optional<ELF_EF> Flags;
llvm::yaml::Hex64 Entry;
std::optional<StringRef> SectionHeaderStringTable;

Expand Down
5 changes: 4 additions & 1 deletion llvm/lib/ObjectYAML/ELFEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -481,7 +481,10 @@ void ELFState<ELFT>::writeELFHeader(raw_ostream &OS) {

Header.e_version = EV_CURRENT;
Header.e_entry = Doc.Header.Entry;
Header.e_flags = Doc.Header.Flags;
if (Doc.Header.Flags)
Header.e_flags = *Doc.Header.Flags;
else
Header.e_flags = 0;
Header.e_ehsize = sizeof(Elf_Ehdr);

if (Doc.Header.EPhOff)
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/ObjectYAML/ELFYAML.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1158,7 +1158,7 @@ void MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO,
IO.mapOptional("ABIVersion", FileHdr.ABIVersion, Hex8(0));
IO.mapRequired("Type", FileHdr.Type);
IO.mapOptional("Machine", FileHdr.Machine);
IO.mapOptional("Flags", FileHdr.Flags, ELFYAML::ELF_EF(0));
IO.mapOptional("Flags", FileHdr.Flags);
IO.mapOptional("Entry", FileHdr.Entry, Hex64(0));
IO.mapOptional("SectionHeaderStringTable", FileHdr.SectionHeaderStringTable);

Expand Down
1 change: 1 addition & 0 deletions llvm/test/Object/obj2yaml.test
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,7 @@
# ELF-X86-64-NEXT: OSABI: ELFOSABI_GNU
# ELF-X86-64-NEXT: Type: ET_REL
# ELF-X86-64-NEXT: Machine: EM_X86_64
# ELF-X86-64-NEXT: Flags: [ ]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an undesirable outcome: if the Flags are empty, we shouldn't end up with a Flags entry in the output.

# ELF-X86-64-NEXT: Sections:
# ELF-X86-64-NEXT: - Name: .text
# ELF-X86-64-NEXT: Type: SHT_PROGBITS
Expand Down
14 changes: 12 additions & 2 deletions llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# and DWO output.
# Note that we don't actually need any DWARF to produce the DWO file.

# RUN: yaml2obj %s -o %t.o
# RUN: yaml2obj -DMACHINE=EM_NONE %s -o %t.o
# RUN: yaml2obj -DMACHINE=EM_AMDGPU -DFLAGS=[EF_AMDGPU_MACH_AMDGCN_GFX900] %s -o %t-amdgpu.o

# Without --output-format, the format should match the input.
# RUN: llvm-objcopy %t.o %t.default.o --split-dwo=%t.default.dwo
Expand Down Expand Up @@ -121,13 +122,19 @@
# RUN: llvm-readobj --file-headers %t.elf64_s390.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV
# RUN: llvm-readobj --file-headers %t.elf64_s390.dwo | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV


Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: remove duplicate blank line.

# RUN: llvm-objcopy %t-amdgpu.o -O elf64-amdgpu %t-amdgpu.elf64_amdgpu.o --split-dwo=%t-amdgpu.elf64_amdgpu.dwo
# RUN: llvm-readobj --file-headers %t-amdgpu.elf64_amdgpu.o | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
# RUN: llvm-readobj --file-headers %t-amdgpu.elf64_amdgpu.dwo | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV

!ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_EXEC
# Arbitrary values that do not match any value we convert to via --output-format.
Machine: EM_NONE
Machine: [[MACHINE]]
Flags: [[FLAGS=<none>]]
OSABI: ELFOSABI_STANDALONE
Sections:
- Name: .text
Expand All @@ -154,6 +161,7 @@ Symbols:
# I386-SAME: i386
# IAMCU-SAME: iamcu
# AARCH-SAME: aarch64
# AMDGPU-SAME: amdgpu
# ARM-SAME: littlearm
# HEXAGON-SAME: hexagon
# LA32-SAME: loongarch{{$}}
Expand All @@ -171,6 +179,7 @@ Symbols:
# I386-NEXT: Arch: i386
# IAMCU-NEXT: Arch: i386
# AARCH-NEXT: Arch: aarch64
# AMDGPU-NEXT: Arch: amdgcn
# ARM-NEXT: Arch: arm
# HEXAGON-NEXT: Arch: hexagon
# LA32-NEXT: Arch: loongarch32
Expand Down Expand Up @@ -204,6 +213,7 @@ Symbols:
# DEFAULT: OS/ABI: Standalone (0xFF)

# AARCH: Machine: EM_AARCH64 (0xB7)
# AMDGPU: Machine: EM_AMDGPU (0xE0)
# ARM: Machine: EM_ARM (0x28)
# HEXAGON: Machine: EM_HEXAGON (0xA4)
# I386: Machine: EM_386 (0x3)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# VALID-NEXT: Class: ELFCLASS64
# VALID-NEXT: Data: ELFDATA2LSB
# VALID-NEXT: Type: ET_EXEC
# VALID-NEXT: Flags: [ ]
# VALID-NEXT: Sections:
# VALID-NEXT: - Name: .llvm_bb_addr_map
# VALID-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down Expand Up @@ -122,6 +123,7 @@ Sections:
# MULTI-NEXT: Class: ELFCLASS64
# MULTI-NEXT: Data: ELFDATA2LSB
# MULTI-NEXT: Type: ET_EXEC
# MULTI-NEXT: Flags: [ ]
# MULTI-NEXT: Sections:
# MULTI-NEXT: - Name: .llvm_bb_addr_map
# MULTI-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down Expand Up @@ -194,6 +196,7 @@ Sections:
# INVALID-NEXT: Class: ELFCLASS64
# INVALID-NEXT: Data: ELFDATA2LSB
# INVALID-NEXT: Type: ET_EXEC
# INVALID-NEXT: Flags: [ ]
# INVALID-NEXT: Sections:
# INVALID-NEXT: - Name: .llvm_bb_addr_map
# INVALID-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down Expand Up @@ -225,6 +228,7 @@ Sections:
# MISSING-FEC-NEXT: Class: ELFCLASS64
# MISSING-FEC-NEXT: Data: ELFDATA2LSB
# MISSING-FEC-NEXT: Type: ET_EXEC
# MISSING-FEC-NEXT: Flags: [ ]
# MISSING-FEC-NEXT: Sections:
# MISSING-FEC-NEXT: - Name: .llvm_bb_addr_map
# MISSING-FEC-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down
4 changes: 4 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# VALID-NEXT: Class: ELFCLASS64
# VALID-NEXT: Data: ELFDATA2LSB
# VALID-NEXT: Type: ET_EXEC
# VALID-NEXT: Flags: [ ]
# VALID-NEXT: Sections:
# VALID-NEXT: - Name: .llvm_bb_addr_map
# VALID-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down Expand Up @@ -89,6 +90,7 @@ Sections:
# EMPTY-NEXT: Class: ELFCLASS64
# EMPTY-NEXT: Data: ELFDATA2LSB
# EMPTY-NEXT: Type: ET_EXEC
# EMPTY-NEXT: Flags: [ ]
# EMPTY-NEXT: Sections:
# EMPTY-NEXT: - Name: .llvm_bb_addr_map
# EMPTY-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand All @@ -114,6 +116,7 @@ Sections:
# MULTI-NEXT: Class: ELFCLASS64
# MULTI-NEXT: Data: ELFDATA2LSB
# MULTI-NEXT: Type: ET_EXEC
# MULTI-NEXT: Flags: [ ]
# MULTI-NEXT: Sections:
# MULTI-NEXT: - Name: .llvm_bb_addr_map
# MULTI-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down Expand Up @@ -178,6 +181,7 @@ Sections:
# INVALID-NEXT: Class: ELFCLASS64
# INVALID-NEXT: Data: ELFDATA2LSB
# INVALID-NEXT: Type: ET_EXEC
# INVALID-NEXT: Flags: [ ]
# INVALID-NEXT: Sections:
# INVALID-NEXT: - Name: .llvm_bb_addr_map
# INVALID-NEXT: Type: SHT_LLVM_BB_ADDR_MAP
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Symbols:
# INVALID-NEXT: Class: ELFCLASS32
# INVALID-NEXT: Data: ELFDATA2MSB
# INVALID-NEXT: Type: ET_DYN
# INVALID-NEXT: Flags: [ ]
# INVALID-NEXT: Sections:
# INVALID-NEXT: - Name: .empty
# INVALID-NEXT: Type: SHT_LLVM_CALL_GRAPH_PROFILE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
# CASE1-NEXT: Class: ELFCLASS64
# CASE1-NEXT: Data: ELFDATA2LSB
# CASE1-NEXT: Type: ET_REL
# CASE1-NEXT: Flags: [ ]
# CASE1-NEXT: Sections:
# CASE1-NEXT: - Name: .foo
# CASE1-NEXT: Type: SHT_PROGBITS
Expand Down
2 changes: 2 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/emachine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: [[MACHINE]]
# CHECK-NEXT: Flags: [ ]

--- !ELF
FileHeader:
Expand All @@ -34,4 +35,5 @@ FileHeader:
# DEFAULT-NEXT: Class: ELFCLASS64
# DEFAULT-NEXT: Data: ELFDATA2MSB
# DEFAULT-NEXT: Type: ET_REL
# DEFAULT-NEXT: Flags: [ ]
# DEFAULT-NEXT: ...
3 changes: 3 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/eshnum.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
# PRESERVE-NEXT: Class: ELFCLASS64
# PRESERVE-NEXT: Data: ELFDATA2LSB
# PRESERVE-NEXT: Type: ET_REL
# PRESERVE-NEXT: Flags: [ ]
# PRESERVE-NEXT: EShNum: 0x0
# PRESERVE-NEXT: Sections:
# PRESERVE-NEXT: - Type: SHT_NULL
Expand Down Expand Up @@ -48,6 +49,7 @@ Sections:
# NO-SECTIONS-NEXT: Class: ELFCLASS64
# NO-SECTIONS-NEXT: Data: ELFDATA2LSB
# NO-SECTIONS-NEXT: Type: ET_REL
# NO-SECTIONS-NEXT: Flags: [ ]
# NO-SECTIONS-NEXT: EShNum: 0x0
## Note: yaml2obj will create the SHT_NULL section with sh_size = 0 implicitly.
# NO-SECTIONS-NEXT: ...
Expand All @@ -64,4 +66,5 @@ Sections:
# NO-HEADERS-NEXT: Class: ELFCLASS64
# NO-HEADERS-NEXT: Data: ELFDATA2LSB
# NO-HEADERS-NEXT: Type: ET_REL
# NO-HEADERS-NEXT: Flags: [ ]
# NO-HEADERS-NEXT: ...
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: OSABI: ELFOSABI_GNU
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Symbols:
# CHECK-NEXT: - Name: foo
# CHECK-NEXT: Type: STT_OBJECT
Expand Down
2 changes: 2 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
# OUTPUT-NEXT: Class: ELFCLASS64
# OUTPUT-NEXT: Data: ELFDATA2LSB
# OUTPUT-NEXT: Type: ET_DYN
# OUTPUT-NEXT: Flags: [ ]
# OUTPUT-NEXT: Sections:
# OUTPUT-NEXT: - Name: .foo.1
# OUTPUT-NEXT: Type: SHT_PROGBITS
Expand Down Expand Up @@ -125,6 +126,7 @@ DynamicSymbols:
# OUTPUT2-NEXT: Class: ELFCLASS64
# OUTPUT2-NEXT: Data: ELFDATA2LSB
# OUTPUT2-NEXT: Type: ET_DYN
# OUTPUT2-NEXT: Flags: [ ]
# OUTPUT2-NEXT: Sections:
# OUTPUT2-NEXT: - Name: .foo.1
# OUTPUT2-NEXT: Type: SHT_PROGBITS
Expand Down
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: SectionHeaderStringTable: {{.*}}
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: "{{.*}}"
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ FileHeader:
# RUN: yaml2obj --docnum=25 %s -o %t-arch-1b
# RUN: obj2yaml %t-arch-1b | FileCheck %s --check-prefix=ARCH-1

# ARCH-1-NOT: Flags:
# ARCH-1-NOT: Flags: [ ]

--- !ELF
FileHeader:
Expand Down
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: EM_X86_64
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .text
# CHECK-NEXT: Type: SHT_PROGBITS
Expand Down
2 changes: 2 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# NOSYMTAB-NEXT: Class: ELFCLASS64
# NOSYMTAB-NEXT: Data: ELFDATA2LSB
# NOSYMTAB-NEXT: Type: ET_DYN
# NOSYMTAB-NEXT: Flags: [ ]
# NOSYMTAB-NEXT: ...

--- !ELF
Expand All @@ -28,6 +29,7 @@ FileHeader:
# SYMTAB-NEXT: Class: ELFCLASS64
# SYMTAB-NEXT: Data: ELFDATA2LSB
# SYMTAB-NEXT: Type: ET_DYN
# SYMTAB-NEXT: Flags: [ ]
# SYMTAB-NEXT: Symbols: []
# SYMTAB-NEXT: ...

Expand Down
4 changes: 4 additions & 0 deletions llvm/test/tools/obj2yaml/ELF/null-section.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# FIRST-SEC-NEXT: Class: ELFCLASS64
# FIRST-SEC-NEXT: Data: ELFDATA2LSB
# FIRST-SEC-NEXT: Type: ET_REL
# FIRST-SEC-NEXT: Flags: [ ]
# FIRST-SEC-NEXT: Sections:
# FIRST-SEC-NEXT: - Type: SHT_NULL
# FIRST-SEC-NEXT: Flags: [ SHF_ALLOC ]
Expand Down Expand Up @@ -50,6 +51,7 @@ Sections:
# SECOND-SEC-NEXT: Class: ELFCLASS64
# SECOND-SEC-NEXT: Data: ELFDATA2LSB
# SECOND-SEC-NEXT: Type: ET_REL
# SECOND-SEC-NEXT: Flags: [ ]
# SECOND-SEC-NEXT: Sections:
# SECOND-SEC-NEXT: - Name: .foo
# SECOND-SEC-NEXT: Type: SHT_PROGBITS
Expand Down Expand Up @@ -92,6 +94,7 @@ Sections:
# NULL-SEC-NEXT: Class: ELFCLASS64
# NULL-SEC-NEXT: Data: ELFDATA2LSB
# NULL-SEC-NEXT: Type: ET_REL
# NULL-SEC-NEXT: Flags: [ ]
# NULL-SEC-NEXT: Sections:
# NULL-SEC-NEXT: - Name: .foo
# NULL-SEC-NEXT: Type: SHT_PROGBITS
Expand All @@ -118,6 +121,7 @@ Sections:
# NULL-SEC-MIDDLE-NEXT: Class: ELFCLASS64
# NULL-SEC-MIDDLE-NEXT: Data: ELFDATA2LSB
# NULL-SEC-MIDDLE-NEXT: Type: ET_REL
# NULL-SEC-MIDDLE-NEXT: Flags: [ ]
# NULL-SEC-MIDDLE-NEXT: Sections:
# NULL-SEC-MIDDLE-NEXT: - Name: .foo
# NULL-SEC-MIDDLE-NEXT: Type: SHT_PROGBITS
Expand Down
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/offset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# BASIC-NEXT: Class: ELFCLASS64
# BASIC-NEXT: Data: ELFDATA2LSB
# BASIC-NEXT: Type: ET_REL
# BASIC-NEXT: Flags: [ ]
# BASIC-NEXT: Sections:
# BASIC-NEXT: - Name: .foo1
# BASIC-NEXT: Type: SHT_PROGBITS
Expand Down
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: EM_PPC64
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .rela.text
# CHECK-NEXT: Type: SHT_RELA
Expand Down
1 change: 1 addition & 0 deletions llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: [[MACHINE]]
# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .rela.text
# CHECK-NEXT: Type: SHT_RELA
Expand Down
Loading
Loading