[llvm] Allow "[[FLAGS=<none>]]" value in the ELF Fileheader Flags field (PR #143845)
Aakanksha Patil via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 00:09:51 PDT 2025
https://github.com/aakanksha555 created https://github.com/llvm/llvm-project/pull/143845
https://github.com/llvm/llvm-project/pull/92066 will be dependent on this change
>From 07f69db8ddb08971ad66e8b62552351491232c4a Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Tue, 7 May 2024 15:40:39 -0400
Subject: [PATCH 1/6] [AMDGPU] Add AMDGPU support for llvm-objcopy
---
.../ELF/amdgpu-cross-arch-headers.test | 57 +++++++++++++++++++
llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 2 +
2 files changed, 59 insertions(+)
create mode 100644 llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
diff --git a/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
new file mode 100644
index 0000000000000..a7242385950a8
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
@@ -0,0 +1,57 @@
+# Show that the --output-format correctly configures both the main output file
+# and DWO output.
+# Note that we don't actually need any DWARF to produce the DWO file.
+
+# RUN: yaml2obj %s -o %t.o
+
+# Without --output-format, the format should match the input.
+
+# RUN: llvm-objcopy %t.o -O elf64-amdgpu %t.elf64_amdgpu.o --split-dwo=%t.elf64_amdgpu.dwo
+# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.o | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
+# RUN: llvm-readobj --file-headers %t.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_AMDGPU
+ OSABI: ELFOSABI_STANDALONE
+ Flags: [EF_AMDGPU_MACH_AMDGCN_GFX900]
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+Symbols:
+ - Name: foo
+ Type: STT_FUNC
+ Section: .text
+ Value: 0x1234
+ Binding: STB_GLOBAL
+ - Name: bar
+ Type: STT_OBJECT
+ Section: .data
+ Value: 0xabcd
+ Binding: STB_GLOBAL
+
+# CHECK: Format:
+# AMDGPU-SAME: elf64-amdgpu
+
+# AMDGPU-NEXT: Arch: amdgcn
+
+# 64-NEXT: AddressSize: 64bit
+
+# 64: Class: 64-bit
+# LE: DataEncoding: LittleEndian
+
+# SYSV: OS/ABI: SystemV (0x0)
+
+# AMDGPU: Machine: EM_AMDGPU (0xE0)
+
+# 64: HeaderSize: 64
+
+# 64: SectionHeaderEntrySize: 64
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index a1897334cff2e..0fd1f9eac40f4 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -319,6 +319,8 @@ static const StringMap<MachineInfo> TargetMap{
{"elf64-loongarch", {ELF::EM_LOONGARCH, true, true}},
// SystemZ
{"elf64-s390", {ELF::EM_S390, true, false}},
+ // AMDGPU
+ {"elf64-amdgpu", {ELF::EM_AMDGPU, true, true}},
};
static Expected<TargetInfo>
>From 03fad14c55233123d6929f578131d0973388bd4b Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Tue, 18 Jun 2024 12:47:45 -0400
Subject: [PATCH 2/6] [AMDGPU] Add AMDGPU support for llvm-objcopy
Add amdgpu support in cross-arch-headers.test instead of its own test
---
.../ELF/amdgpu-cross-arch-headers.test | 57 -------------------
.../llvm-objcopy/ELF/cross-arch-headers.test | 9 +++
2 files changed, 9 insertions(+), 57 deletions(-)
delete mode 100644 llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
diff --git a/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
deleted file mode 100644
index a7242385950a8..0000000000000
--- a/llvm/test/tools/llvm-objcopy/ELF/amdgpu-cross-arch-headers.test
+++ /dev/null
@@ -1,57 +0,0 @@
-# Show that the --output-format correctly configures both the main output file
-# and DWO output.
-# Note that we don't actually need any DWARF to produce the DWO file.
-
-# RUN: yaml2obj %s -o %t.o
-
-# Without --output-format, the format should match the input.
-
-# RUN: llvm-objcopy %t.o -O elf64-amdgpu %t.elf64_amdgpu.o --split-dwo=%t.elf64_amdgpu.dwo
-# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.o | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
-# RUN: llvm-readobj --file-headers %t.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_AMDGPU
- OSABI: ELFOSABI_STANDALONE
- Flags: [EF_AMDGPU_MACH_AMDGCN_GFX900]
-Sections:
- - Name: .text
- Type: SHT_PROGBITS
- Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
- - Name: .data
- Type: SHT_PROGBITS
- Flags: [ SHF_ALLOC ]
-Symbols:
- - Name: foo
- Type: STT_FUNC
- Section: .text
- Value: 0x1234
- Binding: STB_GLOBAL
- - Name: bar
- Type: STT_OBJECT
- Section: .data
- Value: 0xabcd
- Binding: STB_GLOBAL
-
-# CHECK: Format:
-# AMDGPU-SAME: elf64-amdgpu
-
-# AMDGPU-NEXT: Arch: amdgcn
-
-# 64-NEXT: AddressSize: 64bit
-
-# 64: Class: 64-bit
-# LE: DataEncoding: LittleEndian
-
-# SYSV: OS/ABI: SystemV (0x0)
-
-# AMDGPU: Machine: EM_AMDGPU (0xE0)
-
-# 64: HeaderSize: 64
-
-# 64: SectionHeaderEntrySize: 64
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index 9a8128611792d..2d9222673c12c 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -3,6 +3,7 @@
# Note that we don't actually need any DWARF to produce the DWO file.
# RUN: yaml2obj %s -o %t.o
+# RUN: yaml2obj -DFLAGS=[EF_AMDGPU_MACH_AMDGCN_GFX900] %s -o %t.o
# Without --output-format, the format should match the input.
# RUN: llvm-objcopy %t.o %t.default.o --split-dwo=%t.default.dwo
@@ -121,6 +122,10 @@
# 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
+# RUN: llvm-objcopy %t.o -O elf64-amdgpu %t.elf64_amdgpu.o --split-dwo=%t.elf64_amdgpu.dwo
+# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.o | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
+# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.dwo | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
+
!ELF
FileHeader:
Class: ELFCLASS32
@@ -129,6 +134,7 @@ FileHeader:
# Arbitrary values that do not match any value we convert to via --output-format.
Machine: EM_NONE
OSABI: ELFOSABI_STANDALONE
+ Flags: [[FLAGS=<none>]]
Sections:
- Name: .text
Type: SHT_PROGBITS
@@ -154,6 +160,7 @@ Symbols:
# I386-SAME: i386
# IAMCU-SAME: iamcu
# AARCH-SAME: aarch64
+# AMDGPU-SAME: elf64-amdgpu
# ARM-SAME: littlearm
# HEXAGON-SAME: hexagon
# LA32-SAME: loongarch{{$}}
@@ -171,6 +178,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
@@ -204,6 +212,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)
>From 5fb376cca642133d28c3d21c31e8af66a9047294 Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Tue, 3 Jun 2025 19:07:30 -0400
Subject: [PATCH 3/6] Update cross-arch-headers.test
---
.../llvm-objcopy/ELF/cross-arch-headers.test | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index 2d9222673c12c..5102e0d03be8c 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -2,8 +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 -DFLAGS=[EF_AMDGPU_MACH_AMDGCN_GFX900] %s -o %t.o
+# RUN: yaml2obj -DMACHINE=EM_NONE -DFLAGS="" %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
@@ -122,9 +122,10 @@
# 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
-# RUN: llvm-objcopy %t.o -O elf64-amdgpu %t.elf64_amdgpu.o --split-dwo=%t.elf64_amdgpu.dwo
-# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.o | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
-# RUN: llvm-readobj --file-headers %t.elf64_amdgpu.dwo | FileCheck %s --check-prefixes=CHECK,LE,AMDGPU,64,SYSV
+
+# 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:
@@ -132,9 +133,9 @@ FileHeader:
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]] ]
OSABI: ELFOSABI_STANDALONE
- Flags: [[FLAGS=<none>]]
Sections:
- Name: .text
Type: SHT_PROGBITS
@@ -160,7 +161,7 @@ Symbols:
# I386-SAME: i386
# IAMCU-SAME: iamcu
# AARCH-SAME: aarch64
-# AMDGPU-SAME: elf64-amdgpu
+# AMDGPU-SAME: amdgpu
# ARM-SAME: littlearm
# HEXAGON-SAME: hexagon
# LA32-SAME: loongarch{{$}}
>From 5c078b046ac9cab0ee6b7a73791b61006d5bfdb0 Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Wed, 4 Jun 2025 20:20:49 -0400
Subject: [PATCH 4/6] Allow ELF Fileheader Flags to accept "<none>" value
---
llvm/include/llvm/ObjectYAML/ELFYAML.h | 2 +-
llvm/lib/ObjectYAML/ELFEmitter.cpp | 5 ++++-
llvm/lib/ObjectYAML/ELFYAML.cpp | 2 +-
llvm/test/Object/obj2yaml.test | 1 +
.../tools/llvm-objcopy/ELF/cross-arch-headers.test | 6 +++---
.../obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml | 4 ++++
llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml | 4 ++++
.../obj2yaml/ELF/call-graph-profile-section.yaml | 1 +
.../ELF/duplicate-symbol-and-section-names.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/emachine.yaml | 2 ++
llvm/test/tools/obj2yaml/ELF/eshnum.yaml | 3 +++
.../tools/obj2yaml/ELF/gnu-unique-symbols.yaml | 1 +
.../obj2yaml/ELF/implicit-sections-order.yaml | 2 ++
.../tools/obj2yaml/ELF/invalid-section-name.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml | 2 +-
llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/no-symtab.yaml | 2 ++
llvm/test/tools/obj2yaml/ELF/null-section.yaml | 4 ++++
llvm/test/tools/obj2yaml/ELF/offset.yaml | 1 +
.../test/tools/obj2yaml/ELF/ppc64-relocations.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/relocation-type.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/shstrtab.yaml | 14 ++++++++++++++
llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml | 4 ++++
.../test/tools/obj2yaml/ELF/symbol-visibility.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/symbol.yaml | 1 +
llvm/test/tools/obj2yaml/ELF/versym-section.yaml | 1 +
27 files changed, 62 insertions(+), 7 deletions(-)
diff --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
index dfdfa055d65fa..1ef1e9123d2f1 100644
--- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
@@ -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;
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index 9ae76a71ede5e..77f541efa9fb9 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -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)
diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index 520e956fdab9f..a953b10dbfeb8 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -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);
diff --git a/llvm/test/Object/obj2yaml.test b/llvm/test/Object/obj2yaml.test
index dea9cf41eab54..61771f8182a40 100644
--- a/llvm/test/Object/obj2yaml.test
+++ b/llvm/test/Object/obj2yaml.test
@@ -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: [ ]
# ELF-X86-64-NEXT: Sections:
# ELF-X86-64-NEXT: - Name: .text
# ELF-X86-64-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index 5102e0d03be8c..aff687986be7e 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -2,8 +2,8 @@
# and DWO output.
# Note that we don't actually need any DWARF to produce the DWO file.
-# RUN: yaml2obj -DMACHINE=EM_NONE -DFLAGS="" %s -o %t.o
-# RUN: yaml2obj -DMACHINE=EM_AMDGPU -DFLAGS=EF_AMDGPU_MACH_AMDGCN_GFX900 %s -o %t-amdgpu.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
@@ -134,7 +134,7 @@ FileHeader:
Type: ET_EXEC
# Arbitrary values that do not match any value we convert to via --output-format.
Machine: [[MACHINE]]
- Flags: [ [[FLAGS]] ]
+ Flags: [[FLAGS=<none>]]
OSABI: ELFOSABI_STANDALONE
Sections:
- Name: .text
diff --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
index 299bf463cf4bc..1f14d50ec7c81 100644
--- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
@@ -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
@@ -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
@@ -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
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
index 8dbf97ef2bc12..904af28bc1852 100644
--- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
@@ -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
@@ -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
@@ -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
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml b/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
index a1ac4d9f58f5c..c6db6c4f0c55d 100644
--- a/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml b/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
index 97724f72fcd11..3c4f88b368bd6 100644
--- a/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/emachine.yaml b/llvm/test/tools/obj2yaml/ELF/emachine.yaml
index 10d72bed87f4e..fd1ef88b3299d 100644
--- a/llvm/test/tools/obj2yaml/ELF/emachine.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/emachine.yaml
@@ -11,6 +11,7 @@
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: [[MACHINE]]
+# CHECK-NEXT: Flags: [ ]
--- !ELF
FileHeader:
@@ -34,4 +35,5 @@ FileHeader:
# DEFAULT-NEXT: Class: ELFCLASS64
# DEFAULT-NEXT: Data: ELFDATA2MSB
# DEFAULT-NEXT: Type: ET_REL
+# DEFAULT-NEXT: Flags: [ ]
# DEFAULT-NEXT: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/eshnum.yaml b/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
index 35c7cfddf58c8..ec7779ba74bdf 100644
--- a/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
@@ -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
@@ -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: ...
@@ -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: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml b/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
index c34ab3e3fc0ad..98a220aef50e2 100644
--- a/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml b/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
index 11a0a2ad5e07c..a314cac83995a 100644
--- a/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
@@ -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
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml b/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
index ffb039fd6d069..3d38061f1f692 100644
--- a/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
@@ -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: "{{.*}}"
diff --git a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
index 9306dbceefccd..58265ebfce6db 100644
--- a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
@@ -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:
diff --git a/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml b/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
index cee843503bc51..e81ef2dc4e4ab 100644
--- a/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml b/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
index da0fbbaa1dd77..7ead3ab150208 100644
--- a/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
@@ -9,6 +9,7 @@
# NOSYMTAB-NEXT: Class: ELFCLASS64
# NOSYMTAB-NEXT: Data: ELFDATA2LSB
# NOSYMTAB-NEXT: Type: ET_DYN
+# NOSYMTAB-NEXT: Flags: [ ]
# NOSYMTAB-NEXT: ...
--- !ELF
@@ -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: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/null-section.yaml b/llvm/test/tools/obj2yaml/ELF/null-section.yaml
index 9a755f4151ffd..723e1ad887dc1 100644
--- a/llvm/test/tools/obj2yaml/ELF/null-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/null-section.yaml
@@ -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 ]
@@ -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
@@ -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
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/offset.yaml b/llvm/test/tools/obj2yaml/ELF/offset.yaml
index 47970a07535c3..55ade2f95182c 100644
--- a/llvm/test/tools/obj2yaml/ELF/offset.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/offset.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml b/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
index e476242eb1c67..f8820f56ffd23 100644
--- a/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml b/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
index 22e859465a671..9b601107c1835 100644
--- a/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
@@ -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
diff --git a/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml b/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
index daea0dc8f7d58..3b81b404abf05 100644
--- a/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
@@ -13,6 +13,7 @@
# CUSTOM-NEXT: Class: ELFCLASS64
# CUSTOM-NEXT: Data: ELFDATA2LSB
# CUSTOM-NEXT: Type: ET_EXEC
+# CUSTOM-NEXT: Flags: [ ]
# CUSTOM-NEXT: SectionHeaderStringTable: .foo
# CUSTOM-NEXT: ...
@@ -45,6 +46,7 @@ Sections:
# XINDEX-NEXT: Class: ELFCLASS64
# XINDEX-NEXT: Data: ELFDATA2LSB
# XINDEX-NEXT: Type: ET_EXEC
+# XINDEX-NEXT: Flags: [ ]
# XINDEX-NEXT: SectionHeaderStringTable: .foo
# XINDEX-NEXT: Sections:
# XINDEX-NEXT: - Type: SHT_NULL
@@ -63,6 +65,7 @@ Sections:
# STRTAB-NEXT: Class: ELFCLASS64
# STRTAB-NEXT: Data: ELFDATA2LSB
# STRTAB-NEXT: Type: ET_EXEC
+# STRTAB-NEXT: Flags: [ ]
# STRTAB-NEXT: SectionHeaderStringTable: .strtab
# STRTAB-NEXT: Symbols:
# STRTAB-NEXT: - Name: boz
@@ -91,6 +94,7 @@ Symbols:
# DYNSTR-NEXT: Class: ELFCLASS64
# DYNSTR-NEXT: Data: ELFDATA2LSB
# DYNSTR-NEXT: Type: ET_EXEC
+# DYNSTR-NEXT: Flags: [ ]
# DYNSTR-NEXT: SectionHeaderStringTable: .dynstr
# DYNSTR-NEXT: Sections:
# DYNSTR-NEXT: - Name: .dynsym
@@ -127,6 +131,7 @@ DynamicSymbols:
# DEFAULT-NEXT: Class: ELFCLASS64
# DEFAULT-NEXT: Data: ELFDATA2LSB
# DEFAULT-NEXT: Type: ET_EXEC
+# DEFAULT-NEXT: Flags: [ ]
# DEFAULT-NEXT: ...
--- !ELF
@@ -156,6 +161,7 @@ Sections:
# DEFXINDEX-NEXT: Class: ELFCLASS64
# DEFXINDEX-NEXT: Data: ELFDATA2LSB
# DEFXINDEX-NEXT: Type: ET_EXEC
+# DEFXINDEX-NEXT: Flags: [ ]
# DEFXINDEX-NEXT: Sections:
# DEFXINDEX-NEXT: - Type: SHT_NULL
# DEFXINDEX-NEXT: Link: .shstrtab
@@ -181,6 +187,7 @@ Sections:
# NOHDRS-NEXT: Class: ELFCLASS64
# NOHDRS-NEXT: Data: ELFDATA2LSB
# NOHDRS-NEXT: Type: ET_EXEC
+# NOHDRS-NEXT: Flags: [ ]
## FIXME: There should be a SectionHeaderTable key as per the input.
# NOHDRS-NEXT: ...
@@ -195,6 +202,7 @@ Sections:
# REORDER-NEXT: Class: ELFCLASS64
# REORDER-NEXT: Data: ELFDATA2LSB
# REORDER-NEXT: Type: ET_EXEC
+# REORDER-NEXT: Flags: [ ]
# REORDER-NEXT: SectionHeaderStringTable: .foo
# REORDER-NEXT: Sections:
# REORDER-NEXT: - Name: .baz
@@ -243,6 +251,7 @@ Sections:
# PLACED-NEXT: Class: ELFCLASS64
# PLACED-NEXT: Data: ELFDATA2LSB
# PLACED-NEXT: Type: ET_EXEC
+# PLACED-NEXT: Flags: [ ]
# PLACED-NEXT: SectionHeaderStringTable: .foo
# PLACED-NEXT: Sections:
# PLACED-NEXT: - Name: .baz
@@ -275,6 +284,7 @@ Sections:
# PROPS-NEXT: Class: ELFCLASS64
# PROPS-NEXT: Data: ELFDATA2LSB
# PROPS-NEXT: Type: ET_EXEC
+# PROPS-NEXT: Flags: [ ]
# PROPS-NEXT: SectionHeaderStringTable: .foo
# PROPS-NEXT: Sections:
# PROPS-NEXT: - Name: .foo
@@ -322,6 +332,7 @@ Sections:
# UNIQUIFY1-NEXT: Class: ELFCLASS64
# UNIQUIFY1-NEXT: Data: ELFDATA2LSB
# UNIQUIFY1-NEXT: Type: ET_EXEC
+# UNIQUIFY1-NEXT: Flags: [ ]
# UNIQUIFY1-NEXT: SectionHeaderStringTable: '.strings (1)'
# UNIQUIFY1-NEXT: Sections:
# UNIQUIFY1-NEXT: - Name: .strings
@@ -349,6 +360,7 @@ Sections:
# UNIQUIFY2-NEXT: Class: ELFCLASS64
# UNIQUIFY2-NEXT: Data: ELFDATA2LSB
# UNIQUIFY2-NEXT: Type: ET_EXEC
+# UNIQUIFY2-NEXT: Flags: [ ]
# UNIQUIFY2-NEXT: SectionHeaderStringTable: '[[NAME]] (1)'
# UNIQUIFY2-NEXT: Symbols:
# UNIQUIFY2-NEXT: - Name: foo
@@ -380,6 +392,7 @@ Symbols:
# UNIQUIFY3-NEXT: Class: ELFCLASS64
# UNIQUIFY3-NEXT: Data: ELFDATA2LSB
# UNIQUIFY3-NEXT: Type: ET_EXEC
+# UNIQUIFY3-NEXT: Flags: [ ]
# UNIQUIFY3-NEXT: SectionHeaderStringTable: '[[NAME]] (1)'
## FIXME: The .dynsym and .dynstr sections shouldn't need to be emitted, since
## their values are the default produced by yaml2obj.
@@ -428,6 +441,7 @@ DynamicSymbols:
# UNIQUIFY6-NEXT: Class: ELFCLASS64
# UNIQUIFY6-NEXT: Data: ELFDATA2LSB
# UNIQUIFY6-NEXT: Type: ET_EXEC
+# UNIQUIFY6-NEXT: Flags: [ ]
# UNIQUIFY6-NEXT: SectionHeaderStringTable: '.debug_str (1)'
# UNIQUIFY6-NEXT: DWARF:
# UNIQUIFY6-NEXT: debug_str:
diff --git a/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml b/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
index 6e995cce96f01..737448014d464 100644
--- a/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
@@ -10,6 +10,7 @@
# CASE1-NEXT: Class: ELFCLASS64
# CASE1-NEXT: Data: ELFDATA2LSB
# CASE1-NEXT: Type: ET_REL
+# CASE1-NEXT: Flags: [ ]
# CASE1-NEXT: Sections:
# CASE1-NEXT: - Name: bar
# CASE1-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml b/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
index 13d13a8d86a58..0114d56b0eba1 100644
--- a/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
@@ -11,6 +11,7 @@
# VALID-NEXT: Class: ELFCLASS64
# VALID-NEXT: Data: ELFDATA2LSB
# VALID-NEXT: Type: ET_EXEC
+# VALID-NEXT: Flags: [ ]
# VALID-NEXT: Sections:
# VALID-NEXT: - Name: .stack_sizes
# VALID-NEXT: Type: SHT_PROGBITS
@@ -41,6 +42,7 @@ Sections:
# INVALID-NEXT: Class: ELFCLASS64
# INVALID-NEXT: Data: ELFDATA2LSB
# INVALID-NEXT: Type: ET_EXEC
+# INVALID-NEXT: Flags: [ ]
# INVALID-NEXT: Sections:
# INVALID-NEXT: - Name: .stack_sizes
# INVALID-NEXT: Type: SHT_PROGBITS
@@ -66,6 +68,7 @@ Sections:
# EMPTY-NEXT: Class: ELFCLASS64
# EMPTY-NEXT: Data: ELFDATA2LSB
# EMPTY-NEXT: Type: ET_EXEC
+# EMPTY-NEXT: Flags: [ ]
# EMPTY-NEXT: Sections:
# EMPTY-NEXT: - Name: .stack_sizes
# EMPTY-NEXT: Type: SHT_PROGBITS
@@ -91,6 +94,7 @@ Sections:
# MULTI-NEXT: Class: ELFCLASS64
# MULTI-NEXT: Data: ELFDATA2LSB
# MULTI-NEXT: Type: ET_EXEC
+# MULTI-NEXT: Flags: [ ]
# MULTI-NEXT: Sections:
# MULTI-NEXT: - Name: .stack_sizes
# MULTI-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml b/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
index 0c6020062fab2..d91396153c110 100644
--- a/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
@@ -7,6 +7,7 @@
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_REL
+# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Symbols:
# CHECK-NEXT: - Name: default
# CHECK-NEXT: - Name: internal
diff --git a/llvm/test/tools/obj2yaml/ELF/symbol.yaml b/llvm/test/tools/obj2yaml/ELF/symbol.yaml
index 3afe2d13d162e..790d1db0e5198 100644
--- a/llvm/test/tools/obj2yaml/ELF/symbol.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/symbol.yaml
@@ -38,6 +38,7 @@ Symbols:
# SECTION-SYM-NEXT: Class: ELFCLASS64
# SECTION-SYM-NEXT: Data: ELFDATA2LSB
# SECTION-SYM-NEXT: Type: ET_REL
+# SECTION-SYM-NEXT: Flags: [ ]
# SECTION-SYM-NEXT: Sections:
# SECTION-SYM-NEXT: - Name: .section
# SECTION-SYM-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/versym-section.yaml b/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
index fcdb2aad6c64b..5796c55e71772 100644
--- a/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
@@ -8,6 +8,7 @@
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_EXEC
+# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Entry: 0x201000
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .gnu.version
>From 1052132d0203157c8bad0b720d766e030d769465 Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Thu, 12 Jun 2025 02:48:43 -0400
Subject: [PATCH 5/6] Allow "[[FLAGS=<none>]]" value in ELF Fileheader Flags
---
llvm/include/llvm/ObjectYAML/ELFYAML.h | 2 +-
llvm/lib/ObjectYAML/ELFEmitter.cpp | 2 +-
llvm/lib/ObjectYAML/ELFYAML.cpp | 2 +-
llvm/test/Object/obj2yaml.test | 1 -
.../tools/llvm-objcopy/ELF/cross-arch-headers.test | 13 +------------
.../obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml | 4 ----
llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml | 4 ----
.../obj2yaml/ELF/call-graph-profile-section.yaml | 1 -
.../ELF/duplicate-symbol-and-section-names.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/emachine.yaml | 2 --
llvm/test/tools/obj2yaml/ELF/eshnum.yaml | 3 ---
.../tools/obj2yaml/ELF/gnu-unique-symbols.yaml | 1 -
.../obj2yaml/ELF/implicit-sections-order.yaml | 2 --
.../tools/obj2yaml/ELF/invalid-section-name.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml | 3 +--
llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/no-symtab.yaml | 2 --
llvm/test/tools/obj2yaml/ELF/null-section.yaml | 4 ----
llvm/test/tools/obj2yaml/ELF/offset.yaml | 1 -
.../test/tools/obj2yaml/ELF/ppc64-relocations.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/relocation-type.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/shstrtab.yaml | 14 --------------
llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml | 4 ----
.../test/tools/obj2yaml/ELF/symbol-visibility.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/symbol.yaml | 1 -
llvm/test/tools/obj2yaml/ELF/versym-section.yaml | 1 -
llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 2 --
28 files changed, 5 insertions(+), 71 deletions(-)
diff --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
index 1ef1e9123d2f1..dfdfa055d65fa 100644
--- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
@@ -117,7 +117,7 @@ struct FileHeader {
llvm::yaml::Hex8 ABIVersion;
ELF_ET Type;
std::optional<ELF_EM> Machine;
- std::optional<ELF_EF> Flags;
+ ELF_EF Flags;
llvm::yaml::Hex64 Entry;
std::optional<StringRef> SectionHeaderStringTable;
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index 77f541efa9fb9..16b1378197e82 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -482,7 +482,7 @@ void ELFState<ELFT>::writeELFHeader(raw_ostream &OS) {
Header.e_version = EV_CURRENT;
Header.e_entry = Doc.Header.Entry;
if (Doc.Header.Flags)
- Header.e_flags = *Doc.Header.Flags;
+ Header.e_flags = Doc.Header.Flags;
else
Header.e_flags = 0;
Header.e_ehsize = sizeof(Elf_Ehdr);
diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index a953b10dbfeb8..520e956fdab9f 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -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);
+ IO.mapOptional("Flags", FileHdr.Flags, ELFYAML::ELF_EF(0));
IO.mapOptional("Entry", FileHdr.Entry, Hex64(0));
IO.mapOptional("SectionHeaderStringTable", FileHdr.SectionHeaderStringTable);
diff --git a/llvm/test/Object/obj2yaml.test b/llvm/test/Object/obj2yaml.test
index 61771f8182a40..dea9cf41eab54 100644
--- a/llvm/test/Object/obj2yaml.test
+++ b/llvm/test/Object/obj2yaml.test
@@ -556,7 +556,6 @@
# 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: [ ]
# ELF-X86-64-NEXT: Sections:
# ELF-X86-64-NEXT: - Name: .text
# ELF-X86-64-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index aff687986be7e..abc75f83b44fc 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -2,8 +2,7 @@
# and DWO output.
# Note that we don't actually need any DWARF to produce the DWO file.
-# 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
+# RUN: yaml2obj %s -o %t.o
# Without --output-format, the format should match the input.
# RUN: llvm-objcopy %t.o %t.default.o --split-dwo=%t.default.dwo
@@ -122,19 +121,12 @@
# 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
-
-# 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: [[MACHINE]]
- Flags: [[FLAGS=<none>]]
OSABI: ELFOSABI_STANDALONE
Sections:
- Name: .text
@@ -161,7 +153,6 @@ Symbols:
# I386-SAME: i386
# IAMCU-SAME: iamcu
# AARCH-SAME: aarch64
-# AMDGPU-SAME: amdgpu
# ARM-SAME: littlearm
# HEXAGON-SAME: hexagon
# LA32-SAME: loongarch{{$}}
@@ -179,7 +170,6 @@ 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
@@ -213,7 +203,6 @@ 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)
diff --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
index 1f14d50ec7c81..299bf463cf4bc 100644
--- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map-pgo-analysis-map.yaml
@@ -10,7 +10,6 @@
# 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
@@ -123,7 +122,6 @@ 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
@@ -196,7 +194,6 @@ 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
@@ -228,7 +225,6 @@ 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
diff --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
index 904af28bc1852..8dbf97ef2bc12 100644
--- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
@@ -10,7 +10,6 @@
# 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
@@ -90,7 +89,6 @@ 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
@@ -116,7 +114,6 @@ 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
@@ -181,7 +178,6 @@ 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
diff --git a/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml b/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
index c6db6c4f0c55d..a1ac4d9f58f5c 100644
--- a/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/call-graph-profile-section.yaml
@@ -45,7 +45,6 @@ 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
diff --git a/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml b/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
index 3c4f88b368bd6..97724f72fcd11 100644
--- a/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/duplicate-symbol-and-section-names.yaml
@@ -27,7 +27,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/emachine.yaml b/llvm/test/tools/obj2yaml/ELF/emachine.yaml
index fd1ef88b3299d..10d72bed87f4e 100644
--- a/llvm/test/tools/obj2yaml/ELF/emachine.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/emachine.yaml
@@ -11,7 +11,6 @@
# CHECK-NEXT: Data: ELFDATA2MSB
# CHECK-NEXT: Type: ET_REL
# CHECK-NEXT: Machine: [[MACHINE]]
-# CHECK-NEXT: Flags: [ ]
--- !ELF
FileHeader:
@@ -35,5 +34,4 @@ FileHeader:
# DEFAULT-NEXT: Class: ELFCLASS64
# DEFAULT-NEXT: Data: ELFDATA2MSB
# DEFAULT-NEXT: Type: ET_REL
-# DEFAULT-NEXT: Flags: [ ]
# DEFAULT-NEXT: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/eshnum.yaml b/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
index ec7779ba74bdf..35c7cfddf58c8 100644
--- a/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/eshnum.yaml
@@ -18,7 +18,6 @@
# 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
@@ -49,7 +48,6 @@ 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: ...
@@ -66,5 +64,4 @@ Sections:
# NO-HEADERS-NEXT: Class: ELFCLASS64
# NO-HEADERS-NEXT: Data: ELFDATA2LSB
# NO-HEADERS-NEXT: Type: ET_REL
-# NO-HEADERS-NEXT: Flags: [ ]
# NO-HEADERS-NEXT: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml b/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
index 98a220aef50e2..c34ab3e3fc0ad 100644
--- a/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/gnu-unique-symbols.yaml
@@ -9,7 +9,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml b/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
index a314cac83995a..11a0a2ad5e07c 100644
--- a/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/implicit-sections-order.yaml
@@ -37,7 +37,6 @@
# 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
@@ -126,7 +125,6 @@ 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
diff --git a/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml b/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
index 3d38061f1f692..ffb039fd6d069 100644
--- a/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/invalid-section-name.yaml
@@ -11,7 +11,6 @@
# 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: "{{.*}}"
diff --git a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
index 58265ebfce6db..0bd9e5f8fcaaf 100644
--- a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
@@ -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:
@@ -274,7 +274,6 @@ FileHeader:
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_MIPS
- Flags: [ ]
# RUN: yaml2obj --docnum=26 %s -o %t-arch-2
# RUN: obj2yaml %t-arch-2 | FileCheck %s -DARCH=EF_MIPS_ARCH_2 --check-prefix=ARCH
diff --git a/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml b/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
index e81ef2dc4e4ab..cee843503bc51 100644
--- a/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/no-symbol-reloc.yaml
@@ -10,7 +10,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml b/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
index 7ead3ab150208..da0fbbaa1dd77 100644
--- a/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/no-symtab.yaml
@@ -9,7 +9,6 @@
# NOSYMTAB-NEXT: Class: ELFCLASS64
# NOSYMTAB-NEXT: Data: ELFDATA2LSB
# NOSYMTAB-NEXT: Type: ET_DYN
-# NOSYMTAB-NEXT: Flags: [ ]
# NOSYMTAB-NEXT: ...
--- !ELF
@@ -29,7 +28,6 @@ FileHeader:
# SYMTAB-NEXT: Class: ELFCLASS64
# SYMTAB-NEXT: Data: ELFDATA2LSB
# SYMTAB-NEXT: Type: ET_DYN
-# SYMTAB-NEXT: Flags: [ ]
# SYMTAB-NEXT: Symbols: []
# SYMTAB-NEXT: ...
diff --git a/llvm/test/tools/obj2yaml/ELF/null-section.yaml b/llvm/test/tools/obj2yaml/ELF/null-section.yaml
index 723e1ad887dc1..9a755f4151ffd 100644
--- a/llvm/test/tools/obj2yaml/ELF/null-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/null-section.yaml
@@ -9,7 +9,6 @@
# 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 ]
@@ -51,7 +50,6 @@ 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
@@ -94,7 +92,6 @@ 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
@@ -121,7 +118,6 @@ 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
diff --git a/llvm/test/tools/obj2yaml/ELF/offset.yaml b/llvm/test/tools/obj2yaml/ELF/offset.yaml
index 55ade2f95182c..47970a07535c3 100644
--- a/llvm/test/tools/obj2yaml/ELF/offset.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/offset.yaml
@@ -10,7 +10,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml b/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
index f8820f56ffd23..e476242eb1c67 100644
--- a/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/ppc64-relocations.yaml
@@ -9,7 +9,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml b/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
index 9b601107c1835..22e859465a671 100644
--- a/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/relocation-type.yaml
@@ -10,7 +10,6 @@
# 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
diff --git a/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml b/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
index 3b81b404abf05..daea0dc8f7d58 100644
--- a/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/shstrtab.yaml
@@ -13,7 +13,6 @@
# CUSTOM-NEXT: Class: ELFCLASS64
# CUSTOM-NEXT: Data: ELFDATA2LSB
# CUSTOM-NEXT: Type: ET_EXEC
-# CUSTOM-NEXT: Flags: [ ]
# CUSTOM-NEXT: SectionHeaderStringTable: .foo
# CUSTOM-NEXT: ...
@@ -46,7 +45,6 @@ Sections:
# XINDEX-NEXT: Class: ELFCLASS64
# XINDEX-NEXT: Data: ELFDATA2LSB
# XINDEX-NEXT: Type: ET_EXEC
-# XINDEX-NEXT: Flags: [ ]
# XINDEX-NEXT: SectionHeaderStringTable: .foo
# XINDEX-NEXT: Sections:
# XINDEX-NEXT: - Type: SHT_NULL
@@ -65,7 +63,6 @@ Sections:
# STRTAB-NEXT: Class: ELFCLASS64
# STRTAB-NEXT: Data: ELFDATA2LSB
# STRTAB-NEXT: Type: ET_EXEC
-# STRTAB-NEXT: Flags: [ ]
# STRTAB-NEXT: SectionHeaderStringTable: .strtab
# STRTAB-NEXT: Symbols:
# STRTAB-NEXT: - Name: boz
@@ -94,7 +91,6 @@ Symbols:
# DYNSTR-NEXT: Class: ELFCLASS64
# DYNSTR-NEXT: Data: ELFDATA2LSB
# DYNSTR-NEXT: Type: ET_EXEC
-# DYNSTR-NEXT: Flags: [ ]
# DYNSTR-NEXT: SectionHeaderStringTable: .dynstr
# DYNSTR-NEXT: Sections:
# DYNSTR-NEXT: - Name: .dynsym
@@ -131,7 +127,6 @@ DynamicSymbols:
# DEFAULT-NEXT: Class: ELFCLASS64
# DEFAULT-NEXT: Data: ELFDATA2LSB
# DEFAULT-NEXT: Type: ET_EXEC
-# DEFAULT-NEXT: Flags: [ ]
# DEFAULT-NEXT: ...
--- !ELF
@@ -161,7 +156,6 @@ Sections:
# DEFXINDEX-NEXT: Class: ELFCLASS64
# DEFXINDEX-NEXT: Data: ELFDATA2LSB
# DEFXINDEX-NEXT: Type: ET_EXEC
-# DEFXINDEX-NEXT: Flags: [ ]
# DEFXINDEX-NEXT: Sections:
# DEFXINDEX-NEXT: - Type: SHT_NULL
# DEFXINDEX-NEXT: Link: .shstrtab
@@ -187,7 +181,6 @@ Sections:
# NOHDRS-NEXT: Class: ELFCLASS64
# NOHDRS-NEXT: Data: ELFDATA2LSB
# NOHDRS-NEXT: Type: ET_EXEC
-# NOHDRS-NEXT: Flags: [ ]
## FIXME: There should be a SectionHeaderTable key as per the input.
# NOHDRS-NEXT: ...
@@ -202,7 +195,6 @@ Sections:
# REORDER-NEXT: Class: ELFCLASS64
# REORDER-NEXT: Data: ELFDATA2LSB
# REORDER-NEXT: Type: ET_EXEC
-# REORDER-NEXT: Flags: [ ]
# REORDER-NEXT: SectionHeaderStringTable: .foo
# REORDER-NEXT: Sections:
# REORDER-NEXT: - Name: .baz
@@ -251,7 +243,6 @@ Sections:
# PLACED-NEXT: Class: ELFCLASS64
# PLACED-NEXT: Data: ELFDATA2LSB
# PLACED-NEXT: Type: ET_EXEC
-# PLACED-NEXT: Flags: [ ]
# PLACED-NEXT: SectionHeaderStringTable: .foo
# PLACED-NEXT: Sections:
# PLACED-NEXT: - Name: .baz
@@ -284,7 +275,6 @@ Sections:
# PROPS-NEXT: Class: ELFCLASS64
# PROPS-NEXT: Data: ELFDATA2LSB
# PROPS-NEXT: Type: ET_EXEC
-# PROPS-NEXT: Flags: [ ]
# PROPS-NEXT: SectionHeaderStringTable: .foo
# PROPS-NEXT: Sections:
# PROPS-NEXT: - Name: .foo
@@ -332,7 +322,6 @@ Sections:
# UNIQUIFY1-NEXT: Class: ELFCLASS64
# UNIQUIFY1-NEXT: Data: ELFDATA2LSB
# UNIQUIFY1-NEXT: Type: ET_EXEC
-# UNIQUIFY1-NEXT: Flags: [ ]
# UNIQUIFY1-NEXT: SectionHeaderStringTable: '.strings (1)'
# UNIQUIFY1-NEXT: Sections:
# UNIQUIFY1-NEXT: - Name: .strings
@@ -360,7 +349,6 @@ Sections:
# UNIQUIFY2-NEXT: Class: ELFCLASS64
# UNIQUIFY2-NEXT: Data: ELFDATA2LSB
# UNIQUIFY2-NEXT: Type: ET_EXEC
-# UNIQUIFY2-NEXT: Flags: [ ]
# UNIQUIFY2-NEXT: SectionHeaderStringTable: '[[NAME]] (1)'
# UNIQUIFY2-NEXT: Symbols:
# UNIQUIFY2-NEXT: - Name: foo
@@ -392,7 +380,6 @@ Symbols:
# UNIQUIFY3-NEXT: Class: ELFCLASS64
# UNIQUIFY3-NEXT: Data: ELFDATA2LSB
# UNIQUIFY3-NEXT: Type: ET_EXEC
-# UNIQUIFY3-NEXT: Flags: [ ]
# UNIQUIFY3-NEXT: SectionHeaderStringTable: '[[NAME]] (1)'
## FIXME: The .dynsym and .dynstr sections shouldn't need to be emitted, since
## their values are the default produced by yaml2obj.
@@ -441,7 +428,6 @@ DynamicSymbols:
# UNIQUIFY6-NEXT: Class: ELFCLASS64
# UNIQUIFY6-NEXT: Data: ELFDATA2LSB
# UNIQUIFY6-NEXT: Type: ET_EXEC
-# UNIQUIFY6-NEXT: Flags: [ ]
# UNIQUIFY6-NEXT: SectionHeaderStringTable: '.debug_str (1)'
# UNIQUIFY6-NEXT: DWARF:
# UNIQUIFY6-NEXT: debug_str:
diff --git a/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml b/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
index 737448014d464..6e995cce96f01 100644
--- a/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/sht-symtab-shndx.yaml
@@ -10,7 +10,6 @@
# CASE1-NEXT: Class: ELFCLASS64
# CASE1-NEXT: Data: ELFDATA2LSB
# CASE1-NEXT: Type: ET_REL
-# CASE1-NEXT: Flags: [ ]
# CASE1-NEXT: Sections:
# CASE1-NEXT: - Name: bar
# CASE1-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml b/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
index 0114d56b0eba1..13d13a8d86a58 100644
--- a/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/stack-sizes.yaml
@@ -11,7 +11,6 @@
# VALID-NEXT: Class: ELFCLASS64
# VALID-NEXT: Data: ELFDATA2LSB
# VALID-NEXT: Type: ET_EXEC
-# VALID-NEXT: Flags: [ ]
# VALID-NEXT: Sections:
# VALID-NEXT: - Name: .stack_sizes
# VALID-NEXT: Type: SHT_PROGBITS
@@ -42,7 +41,6 @@ Sections:
# INVALID-NEXT: Class: ELFCLASS64
# INVALID-NEXT: Data: ELFDATA2LSB
# INVALID-NEXT: Type: ET_EXEC
-# INVALID-NEXT: Flags: [ ]
# INVALID-NEXT: Sections:
# INVALID-NEXT: - Name: .stack_sizes
# INVALID-NEXT: Type: SHT_PROGBITS
@@ -68,7 +66,6 @@ Sections:
# EMPTY-NEXT: Class: ELFCLASS64
# EMPTY-NEXT: Data: ELFDATA2LSB
# EMPTY-NEXT: Type: ET_EXEC
-# EMPTY-NEXT: Flags: [ ]
# EMPTY-NEXT: Sections:
# EMPTY-NEXT: - Name: .stack_sizes
# EMPTY-NEXT: Type: SHT_PROGBITS
@@ -94,7 +91,6 @@ Sections:
# MULTI-NEXT: Class: ELFCLASS64
# MULTI-NEXT: Data: ELFDATA2LSB
# MULTI-NEXT: Type: ET_EXEC
-# MULTI-NEXT: Flags: [ ]
# MULTI-NEXT: Sections:
# MULTI-NEXT: - Name: .stack_sizes
# MULTI-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml b/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
index d91396153c110..0c6020062fab2 100644
--- a/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/symbol-visibility.yaml
@@ -7,7 +7,6 @@
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_REL
-# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Symbols:
# CHECK-NEXT: - Name: default
# CHECK-NEXT: - Name: internal
diff --git a/llvm/test/tools/obj2yaml/ELF/symbol.yaml b/llvm/test/tools/obj2yaml/ELF/symbol.yaml
index 790d1db0e5198..3afe2d13d162e 100644
--- a/llvm/test/tools/obj2yaml/ELF/symbol.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/symbol.yaml
@@ -38,7 +38,6 @@ Symbols:
# SECTION-SYM-NEXT: Class: ELFCLASS64
# SECTION-SYM-NEXT: Data: ELFDATA2LSB
# SECTION-SYM-NEXT: Type: ET_REL
-# SECTION-SYM-NEXT: Flags: [ ]
# SECTION-SYM-NEXT: Sections:
# SECTION-SYM-NEXT: - Name: .section
# SECTION-SYM-NEXT: Type: SHT_PROGBITS
diff --git a/llvm/test/tools/obj2yaml/ELF/versym-section.yaml b/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
index 5796c55e71772..fcdb2aad6c64b 100644
--- a/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/versym-section.yaml
@@ -8,7 +8,6 @@
# CHECK-NEXT: Class: ELFCLASS64
# CHECK-NEXT: Data: ELFDATA2LSB
# CHECK-NEXT: Type: ET_EXEC
-# CHECK-NEXT: Flags: [ ]
# CHECK-NEXT: Entry: 0x201000
# CHECK-NEXT: Sections:
# CHECK-NEXT: - Name: .gnu.version
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index 2c10102dcf468..0d209590655ef 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -331,8 +331,6 @@ static const StringMap<MachineInfo> TargetMap{
{"elf64-loongarch", {ELF::EM_LOONGARCH, true, true}},
// SystemZ
{"elf64-s390", {ELF::EM_S390, true, false}},
- // AMDGPU
- {"elf64-amdgpu", {ELF::EM_AMDGPU, true, true}},
};
static Expected<TargetInfo>
>From a2ec8d6e44b24d96566d157de0cf1f008dd33db2 Mon Sep 17 00:00:00 2001
From: Aakanksha Patil <paakan at amd.com>
Date: Thu, 12 Jun 2025 03:05:58 -0400
Subject: [PATCH 6/6] Update ELF FileHeder Flags field in a few tests
---
llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test | 1 +
llvm/test/tools/llvm-objcopy/MachO/remove-swift-symbols.test | 2 +-
llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml | 1 +
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index abc75f83b44fc..9a8128611792d 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -127,6 +127,7 @@ FileHeader:
Data: ELFDATA2LSB
Type: ET_EXEC
# Arbitrary values that do not match any value we convert to via --output-format.
+ Machine: EM_NONE
OSABI: ELFOSABI_STANDALONE
Sections:
- Name: .text
diff --git a/llvm/test/tools/llvm-objcopy/MachO/remove-swift-symbols.test b/llvm/test/tools/llvm-objcopy/MachO/remove-swift-symbols.test
index b2e977e7f4c35..24ceae4b2d9aa 100644
--- a/llvm/test/tools/llvm-objcopy/MachO/remove-swift-symbols.test
+++ b/llvm/test/tools/llvm-objcopy/MachO/remove-swift-symbols.test
@@ -112,7 +112,7 @@ FileHeader:
filetype: 0x00000002
ncmds: 4
sizeofcmds: 400
- flags: [[FLAGS]]
+ flags: [[FLAGS=<none>]]
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
diff --git a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
index 0bd9e5f8fcaaf..9306dbceefccd 100644
--- a/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
+++ b/llvm/test/tools/obj2yaml/ELF/mips-eflags.yaml
@@ -274,6 +274,7 @@ FileHeader:
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_MIPS
+ Flags: [ ]
# RUN: yaml2obj --docnum=26 %s -o %t-arch-2
# RUN: obj2yaml %t-arch-2 | FileCheck %s -DARCH=EF_MIPS_ARCH_2 --check-prefix=ARCH
More information about the llvm-commits
mailing list