Skip to content

Commit d4a8a01

Browse files
authored

File tree

8 files changed

+82
-55
lines changed

8 files changed

+82
-55
lines changed

llvm/include/llvm/BinaryFormat/ELF.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,7 @@ enum : unsigned {
11621162
// Android's experimental support for SHT_RELR sections.
11631163
// https://android.googlesource.com/platform/bionic/+/b7feec74547f84559a1467aca02708ff61346d2a/libc/include/elf.h#512
11641164
SHT_ANDROID_RELR = 0x6fffff00, // Relocation entries; only offsets.
1165+
SHT_GNU_SFRAME = 0x6ffffff4, // GNU SFrame stack trace format.
11651166
SHT_GNU_ATTRIBUTES = 0x6ffffff5, // Object attributes.
11661167
SHT_GNU_HASH = 0x6ffffff6, // GNU-style hash table.
11671168
SHT_GNU_verdef = 0x6ffffffd, // GNU version definitions.
@@ -1546,6 +1547,7 @@ enum {
15461547
PT_GNU_STACK = 0x6474e551, // Indicates stack executability.
15471548
PT_GNU_RELRO = 0x6474e552, // Read-only after relocation.
15481549
PT_GNU_PROPERTY = 0x6474e553, // .note.gnu.property notes sections.
1550+
PT_GNU_SFRAME = 0x6474e554, // GNU SFrame stack trace format.
15491551

15501552
PT_OPENBSD_MUTABLE = 0x65a3dbe5, // Like bss, but not immutable.
15511553
PT_OPENBSD_RANDOMIZE = 0x65a3dbe6, // Fill with random data.

llvm/lib/Object/ELF.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ StringRef llvm::object::getELFSectionTypeName(uint32_t Machine, unsigned Type) {
321321
STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_OFFLOADING);
322322
STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_LTO);
323323
STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_JT_SIZES)
324+
STRINGIFY_ENUM_CASE(ELF, SHT_GNU_SFRAME);
324325
STRINGIFY_ENUM_CASE(ELF, SHT_GNU_ATTRIBUTES);
325326
STRINGIFY_ENUM_CASE(ELF, SHT_GNU_HASH);
326327
STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verdef);

llvm/lib/ObjectYAML/ELFYAML.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_PT>::enumeration(
7070
ECase(PT_GNU_STACK);
7171
ECase(PT_GNU_RELRO);
7272
ECase(PT_GNU_PROPERTY);
73+
ECase(PT_GNU_SFRAME);
7374
#undef ECase
7475
IO.enumFallback<Hex32>(Value);
7576
}
@@ -723,6 +724,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_SHT>::enumeration(
723724
ECase(SHT_LLVM_BB_ADDR_MAP);
724725
ECase(SHT_LLVM_OFFLOADING);
725726
ECase(SHT_LLVM_LTO);
727+
ECase(SHT_GNU_SFRAME);
726728
ECase(SHT_GNU_ATTRIBUTES);
727729
ECase(SHT_GNU_HASH);
728730
ECase(SHT_GNU_verdef);

llvm/test/tools/llvm-objdump/ELF/program-headers.test

Lines changed: 64 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,107 @@
44
# RUN: llvm-objdump --private-headers %t32.elf | FileCheck %s --check-prefixes=ELF32
55

66
# ELF32: Program Header:
7-
# ELF32-NEXT: PHDR off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
7+
# ELF32-NEXT: PHDR off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
88
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags -w-
9-
# ELF32-NEXT: PHDR off 0x00000317 vaddr 0x00002000 paddr 0x00002000 align 2**0
9+
# ELF32-NEXT: PHDR off 0x00000337 vaddr 0x00002000 paddr 0x00002000 align 2**0
1010
# ELF32-NEXT: filesz 0x00000007 memsz 0x00000007 flags --x
11-
# ELF32-NEXT: UNKNOWN off 0x00000317 vaddr 0x00002000 paddr 0x00002000 align 2**0
11+
# ELF32-NEXT: UNKNOWN off 0x00000337 vaddr 0x00002000 paddr 0x00002000 align 2**0
1212
# ELF32-NEXT: filesz 0x00000007 memsz 0x00000007 flags --x
13-
# ELF32-NEXT: DYNAMIC off 0x00000324 vaddr 0x00006000 paddr 0x00006000 align 2**0
13+
# ELF32-NEXT: DYNAMIC off 0x00000344 vaddr 0x00006000 paddr 0x00006000 align 2**0
1414
# ELF32-NEXT: filesz 0x00000010 memsz 0x00000010 flags rwx
15-
# ELF32-NEXT: INTERP off 0x0000031e vaddr 0x00003000 paddr 0x00003000 align 2**0
15+
# ELF32-NEXT: INTERP off 0x0000033e vaddr 0x00003000 paddr 0x00003000 align 2**0
1616
# ELF32-NEXT: filesz 0x00000004 memsz 0x00000004 flags rw-
17-
# ELF32-NEXT: NOTE off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
17+
# ELF32-NEXT: NOTE off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
1818
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
19-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
19+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
2020
# ELF32-NEXT: filesz 0x00000001 memsz 0x00000001 flags ---
21-
# ELF32-NEXT: TLS off 0x00000322 vaddr 0x00004000 paddr 0x00004000 align 2**0
21+
# ELF32-NEXT: TLS off 0x00000342 vaddr 0x00004000 paddr 0x00004000 align 2**0
2222
# ELF32-NEXT: filesz 0x00000001 memsz 0x00000001 flags ---
23-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
23+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
2424
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
25-
# ELF32-NEXT:EH_FRAME off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
25+
# ELF32-NEXT:EH_FRAME off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
2626
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
27-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
27+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
2828
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
29-
# ELF32-NEXT: STACK off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
29+
# ELF32-NEXT: STACK off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
3030
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
31-
# ELF32-NEXT: RELRO off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
31+
# ELF32-NEXT: RELRO off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
3232
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
33-
# ELF32-NEXT:PROPERTY off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
33+
# ELF32-NEXT:PROPERTY off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
3434
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
35-
# ELF32-NEXT: OPENBSD_RANDOMIZE off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
35+
# ELF32-NEXT: SFRAME off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
3636
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
37-
# ELF32-NEXT: OPENBSD_WXNEEDED off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
37+
# ELF32-NEXT: OPENBSD_RANDOMIZE off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
3838
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
39-
# ELF32-NEXT: OPENBSD_BOOTDATA off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
39+
# ELF32-NEXT: OPENBSD_WXNEEDED off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
4040
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
41-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
41+
# ELF32-NEXT: OPENBSD_BOOTDATA off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
4242
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
43-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
43+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
4444
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
45-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
45+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
4646
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
47-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
47+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
4848
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
49-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
49+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
5050
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
51-
# ELF32-NEXT: UNKNOWN off 0x00000314 vaddr 0x00001000 paddr 0x00001000 align 2**0
51+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
52+
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
53+
# ELF32-NEXT: UNKNOWN off 0x00000334 vaddr 0x00001000 paddr 0x00001000 align 2**0
5254
# ELF32-NEXT: filesz 0x00000003 memsz 0x00000003 flags ---
5355
# ELF32-EMPTY:
5456

5557
# RUN: yaml2obj --docnum=1 -DBITS=64 -DMACHINE=EM_X86_64 %s -o %t64.elf
5658
# RUN: llvm-objdump --private-headers %t64.elf | FileCheck %s --check-prefixes=ELF64
5759

5860
# ELF64: Program Header:
59-
# ELF64-NEXT: PHDR off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
61+
# ELF64-NEXT: PHDR off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
6062
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags -w-
61-
# ELF64-NEXT: PHDR off 0x000000000000054b vaddr 0x0000000000002000 paddr 0x0000000000002000 align 2**0
63+
# ELF64-NEXT: PHDR off 0x0000000000000583 vaddr 0x0000000000002000 paddr 0x0000000000002000 align 2**0
6264
# ELF64-NEXT: filesz 0x0000000000000007 memsz 0x0000000000000007 flags --x
63-
# ELF64-NEXT: UNKNOWN off 0x000000000000054b vaddr 0x0000000000002000 paddr 0x0000000000002000 align 2**0
65+
# ELF64-NEXT: UNKNOWN off 0x0000000000000583 vaddr 0x0000000000002000 paddr 0x0000000000002000 align 2**0
6466
# ELF64-NEXT: filesz 0x0000000000000007 memsz 0x0000000000000007 flags --x
65-
# ELF64-NEXT: DYNAMIC off 0x0000000000000558 vaddr 0x0000000000006000 paddr 0x0000000000006000 align 2**0
67+
# ELF64-NEXT: DYNAMIC off 0x0000000000000590 vaddr 0x0000000000006000 paddr 0x0000000000006000 align 2**0
6668
# ELF64-NEXT: filesz 0x0000000000000020 memsz 0x0000000000000020 flags rwx
67-
# ELF64-NEXT: INTERP off 0x0000000000000552 vaddr 0x0000000000003000 paddr 0x0000000000003000 align 2**0
69+
# ELF64-NEXT: INTERP off 0x000000000000058a vaddr 0x0000000000003000 paddr 0x0000000000003000 align 2**0
6870
# ELF64-NEXT: filesz 0x0000000000000004 memsz 0x0000000000000004 flags rw-
69-
# ELF64-NEXT: NOTE off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
71+
# ELF64-NEXT: NOTE off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
7072
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
71-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
73+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
7274
# ELF64-NEXT: filesz 0x0000000000000001 memsz 0x0000000000000001 flags ---
73-
# ELF64-NEXT: TLS off 0x0000000000000556 vaddr 0x0000000000004000 paddr 0x0000000000004000 align 2**0
75+
# ELF64-NEXT: TLS off 0x000000000000058e vaddr 0x0000000000004000 paddr 0x0000000000004000 align 2**0
7476
# ELF64-NEXT: filesz 0x0000000000000001 memsz 0x0000000000000001 flags ---
75-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
77+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
78+
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
79+
# ELF64-NEXT:EH_FRAME off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
7680
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
77-
# ELF64-NEXT:EH_FRAME off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
81+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
7882
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
79-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
83+
# ELF64-NEXT: STACK off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
8084
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
81-
# ELF64-NEXT: STACK off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
85+
# ELF64-NEXT: RELRO off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
8286
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
83-
# ELF64-NEXT: RELRO off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
87+
# ELF64-NEXT: PROPERTY off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
8488
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
85-
# ELF64-NEXT: PROPERTY off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
89+
# ELF64-NEXT: SFRAME off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
8690
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
87-
# ELF64-NEXT: OPENBSD_RANDOMIZE off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
91+
# ELF64-NEXT: OPENBSD_RANDOMIZE off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
8892
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
89-
# ELF64-NEXT: OPENBSD_WXNEEDED off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
93+
# ELF64-NEXT: OPENBSD_WXNEEDED off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
9094
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
91-
# ELF64-NEXT: OPENBSD_BOOTDATA off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
95+
# ELF64-NEXT: OPENBSD_BOOTDATA off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
9296
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
93-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
97+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
9498
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
95-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
99+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
96100
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
97-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
101+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
98102
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
99-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
103+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
100104
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
101-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
105+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
102106
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
103-
# ELF64-NEXT: UNKNOWN off 0x0000000000000548 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
107+
# ELF64-NEXT: UNKNOWN off 0x0000000000000580 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**0
104108
# ELF64-NEXT: filesz 0x0000000000000003 memsz 0x0000000000000003 flags ---
105109
# ELF64-EMPTY:
106110

@@ -229,47 +233,52 @@ ProgramHeaders:
229233
VAddr: 0x1000
230234
FirstSec: .foo.begin
231235
LastSec: .foo.end
232-
## Case 15: the PT_OPENBSD_RANDOMIZE segment.
236+
## Case 15: the PT_GNU_SFRAME segment.
237+
- Type: 0x6474e554 ## PT_GNU_SFRAME
238+
VAddr: 0x1000
239+
FirstSec: .foo.begin
240+
LastSec: .foo.end
241+
## Case 16: the PT_OPENBSD_RANDOMIZE segment.
233242
- Type: 0x65a3dbe6 ## PT_OPENBSD_RANDOMIZE
234243
VAddr: 0x1000
235244
FirstSec: .foo.begin
236245
LastSec: .foo.end
237-
## Case 16: the PT_OPENBSD_WXNEEDED segment.
246+
## Case 17: the PT_OPENBSD_WXNEEDED segment.
238247
- Type: 0x65a3dbe7 ## PT_OPENBSD_WXNEEDED
239248
VAddr: 0x1000
240249
FirstSec: .foo.begin
241250
LastSec: .foo.end
242-
## Case 17: the PT_OPENBSD_BOOTDATA segment.
251+
## Case 18: the PT_OPENBSD_BOOTDATA segment.
243252
- Type: 0x65a41be6 ## PT_OPENBSD_BOOTDATA
244253
VAddr: 0x1000
245254
FirstSec: .foo.begin
246255
LastSec: .foo.end
247-
## Case 18: the PT_HIOS segment.
256+
## Case 19: the PT_HIOS segment.
248257
- Type: 0x6fffffff ## PT_HIOS
249258
VAddr: 0x1000
250259
FirstSec: .foo.begin
251260
LastSec: .foo.end
252-
## Case 19: the PT_LOPROC/PT_ARM_ARCHEXT/PT_MIPS_REGINFO segment.
261+
## Case 20: the PT_LOPROC/PT_ARM_ARCHEXT/PT_MIPS_REGINFO segment.
253262
- Type: 0x70000000 ## PT_LOPROC/PT_ARM_ARCHEXT/PT_MIPS_REGINFO
254263
VAddr: 0x1000
255264
FirstSec: .foo.begin
256265
LastSec: .foo.end
257-
## Case 20: the PT_ARM_EXIDX/PT_MIPS_RTPROC segment.
266+
## Case 21: the PT_ARM_EXIDX/PT_MIPS_RTPROC segment.
258267
- Type: 0x70000001 ## PT_ARM_EXIDX, PT_MIPS_RTPROC
259268
VAddr: 0x1000
260269
FirstSec: .foo.begin
261270
LastSec: .foo.end
262-
## Case 20: the PT_MIPS_OPTIONS segment.
271+
## Case 22: the PT_MIPS_OPTIONS segment.
263272
- Type: 0x70000002 ## PT_MIPS_OPTIONS
264273
VAddr: 0x1000
265274
FirstSec: .foo.begin
266275
LastSec: .foo.end
267-
## Case 21: the PT_MIPS_ABIFLAGS segment.
276+
## Case 23: the PT_MIPS_ABIFLAGS segment.
268277
- Type: 0x70000003 ## PT_MIPS_ABIFLAGS
269278
VAddr: 0x1000
270279
FirstSec: .foo.begin
271280
LastSec: .foo.end
272-
## Case 22: the PT_HIPROC segment.
281+
## Case 24: the PT_HIPROC segment.
273282
- Type: 0x7fffffff ## PT_HIPROC
274283
VAddr: 0x1000
275284
FirstSec: .foo.begin

llvm/test/tools/llvm-readobj/ELF/section-types.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363
# LLVM: Type: SHT_LLVM_PART_PHDR
6464
# LLVM: Name: .llvm.lto
6565
# LLVM: Type: SHT_LLVM_LTO
66+
# LLVM: Name: gnu_sframe
67+
# LLVM: Type: SHT_GNU_SFRAME
6668
# LLVM: Name: gnu_attributes
6769
# LLVM: Type: SHT_GNU_ATTRIBUTES
6870
# LLVM: Name: gnu_hash
@@ -125,6 +127,7 @@
125127
# GNU-NEXT: part1 LLVM_PART_EHDR
126128
# GNU-NEXT: .phdrs LLVM_PART_PHDR
127129
# GNU-NEXT: .llvm.lto LLVM_LTO
130+
# GNU-NEXT: gnu_sframe SFRAME
128131
# GNU-NEXT: gnu_attributes ATTRIBUTES
129132
# GNU-NEXT: gnu_hash GNU_HASH
130133
# GNU-NEXT: gnu_verdef VERDEF
@@ -215,6 +218,8 @@ Sections:
215218
Type: SHT_LLVM_PART_PHDR
216219
- Name: .llvm.lto
217220
Type: SHT_LLVM_LTO
221+
- Name: gnu_sframe
222+
Type: SHT_GNU_SFRAME
218223
- Name: gnu_attributes
219224
Type: SHT_GNU_ATTRIBUTES
220225
- Name: gnu_hash

llvm/test/tools/yaml2obj/ELF/program-header.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ ProgramHeaders:
3939
- Type: PT_GNU_STACK
4040
- Type: PT_GNU_RELRO
4141
- Type: PT_GNU_PROPERTY
42+
- Type: PT_GNU_SFRAME
4243

4344
#CHECK: ProgramHeaders [
4445
#CHECK-NEXT: ProgramHeader {
@@ -78,6 +79,9 @@ ProgramHeaders:
7879
#CHECK-NEXT: ProgramHeader {
7980
#CHECK-NEXT: Type: PT_GNU_PROPERTY (0x6474E553)
8081
#CHECK: }
82+
#CHECK-NEXT: ProgramHeader {
83+
#CHECK-NEXT: Type: PT_GNU_SFRAME (0x6474E554)
84+
#CHECK: }
8185
#CHECK-NEXT:]
8286

8387
## Check we do not allow referencing sections that do not exist.

llvm/tools/llvm-objdump/ELFDump.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,9 @@ template <class ELFT> void ELFDumper<ELFT>::printProgramHeaders() {
291291
case ELF::PT_GNU_STACK:
292292
outs() << " STACK ";
293293
break;
294+
case ELF::PT_GNU_SFRAME:
295+
outs() << " SFRAME ";
296+
break;
294297
case ELF::PT_INTERP:
295298
outs() << " INTERP ";
296299
break;

llvm/tools/llvm-readobj/ELFDumper.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,6 +1490,7 @@ static StringRef segmentTypeToString(unsigned Arch, unsigned Type) {
14901490
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_STACK);
14911491
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_RELRO);
14921492
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_PROPERTY);
1493+
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_SFRAME);
14931494

14941495
LLVM_READOBJ_ENUM_CASE(ELF, PT_OPENBSD_MUTABLE);
14951496
LLVM_READOBJ_ENUM_CASE(ELF, PT_OPENBSD_RANDOMIZE);

0 commit comments

Comments
 (0)