xref: /llvm-project/llvm/test/tools/llvm-readobj/ELF/section-types.test (revision 1b704e889f09b5dfc0549786542bc6d2cd54e85b)
1# Show that all regular section types are properly printed for both LLVM and
2# GNU styles.
3
4# RUN: yaml2obj %s -o %t-basic.o
5# RUN: llvm-readobj --section-headers %t-basic.o | FileCheck %s --check-prefix=LLVM
6# RUN: llvm-readelf --section-headers %t-basic.o | FileCheck %s --check-prefix=GNU
7
8# LLVM: Name: (0)
9# LLVM: Type: SHT_NULL
10# LLVM: Name: progbits
11# LLVM: Type: SHT_PROGBITS
12# LLVM: Name: rela
13# LLVM: Type: SHT_RELA
14# LLVM: Name: hash
15# LLVM: Type: SHT_HASH
16# LLVM: Name: dynamic
17# LLVM: Type: SHT_DYNAMIC
18# LLVM: Name: note
19# LLVM: Type: SHT_NOTE
20# LLVM: Name: nobits
21# LLVM: Type: SHT_NOBITS
22# LLVM: Name: rel
23# LLVM: Type: SHT_REL
24# LLVM: Name: shlib
25# LLVM: Type: SHT_SHLIB
26# LLVM: Name: dynsym
27# LLVM: Type: SHT_DYNSYM
28# LLVM: Name: init_array
29# LLVM: Type: SHT_INIT_ARRAY
30# LLVM: Name: fini_array
31# LLVM: Type: SHT_FINI_ARRAY
32# LLVM: Name: preinit_array
33# LLVM: Type: SHT_PREINIT_ARRAY
34# LLVM: Name: group
35# LLVM: Type: SHT_GROUP
36# LLVM: Name: symtab_shndx
37# LLVM: Type: SHT_SYMTAB_SHNDX
38# LLVM: Name: relr
39# LLVM: Type: SHT_RELR
40# LLVM: Name: crel
41# LLVM: Type: SHT_CREL (0x40000014)
42# LLVM: Name: android_rel
43# LLVM: Type: SHT_ANDROID_REL
44# LLVM: Name: android_rela
45# LLVM: Type: SHT_ANDROID_RELA
46# LLVM: Name: android_relr
47# LLVM: Type: SHT_ANDROID_RELR
48# LLVM: Name: llvm_odrtab
49# LLVM: Type: SHT_LLVM_ODRTAB
50# LLVM: Name: linker_options
51# LLVM: Type: SHT_LLVM_LINKER_OPTIONS
52# LLVM: Name: llvm_call_graph_profile
53# LLVM: Type: SHT_LLVM_CALL_GRAPH_PROFILE
54# LLVM: Name: llvm_addrsig
55# LLVM: Type: SHT_LLVM_ADDRSIG
56# LLVM: Name: .deplibs
57# LLVM: Type: SHT_LLVM_DEPENDENT_LIBRARIES
58# LLVM: Name: .llvm_sympart.f
59# LLVM: Type: SHT_LLVM_SYMPART
60# LLVM: Name: part1
61# LLVM: Type: SHT_LLVM_PART_EHDR
62# LLVM: Name: .phdrs
63# LLVM: Type: SHT_LLVM_PART_PHDR
64# LLVM: Name: .llvm.lto
65# LLVM: Type: SHT_LLVM_LTO
66# LLVM: Name: gnu_attributes
67# LLVM: Type: SHT_GNU_ATTRIBUTES
68# LLVM: Name: gnu_hash
69# LLVM: Type: SHT_GNU_HASH
70# LLVM: Name: gnu_verdef
71# LLVM: Type: SHT_GNU_verdef
72# LLVM: Name: gnu_verneed
73# LLVM: Type: SHT_GNU_verneed
74# LLVM: Name: unknown
75# LLVM: Type: Unknown (0x1000)
76# LLVM: Name: loos
77# LLVM: Type: Unknown (0x60000000)
78# LLVM: Name: fooos
79# LLVM: Type: Unknown (0x60000F00)
80# LLVM: Name: hios
81# LLVM: Type: SHT_GNU_versym
82# LLVM: Name: loproc
83# LLVM: Type: Unknown (0x70000000)
84# LLVM: Name: fooproc
85# LLVM: Type: Unknown (0x70000F00)
86# LLVM: Name: hiproc
87# LLVM: Type: Unknown (0x7FFFFFFF)
88# LLVM: Name: louser
89# LLVM: Type: Unknown (0x80000000)
90# LLVM: Name: foouser
91# LLVM: Type: Unknown (0x80000F00)
92# LLVM: Name: hiuser
93# LLVM: Type: Unknown (0xFFFFFFFF)
94# LLVM: Name: .symtab
95# LLVM: Type: SHT_SYMTAB
96# LLVM: Name: .strtab
97# LLVM: Type: SHT_STRTAB
98
99# GNU: [ 0]                         NULL
100# GNU-NEXT: progbits                PROGBITS
101# GNU-NEXT: rela                    RELA
102# GNU-NEXT: hash                    HASH
103# GNU-NEXT: dynamic                 DYNAMIC
104# GNU-NEXT: note                    NOTE
105# GNU-NEXT: nobits                  NOBITS
106# GNU-NEXT: rel                     REL
107# GNU-NEXT: shlib                   SHLIB
108# GNU-NEXT: dynsym                  DYNSYM
109# GNU-NEXT: init_array              INIT_ARRAY
110# GNU-NEXT: fini_array              FINI_ARRAY
111# GNU-NEXT: preinit_array           PREINIT_ARRAY
112# GNU-NEXT: group                   GROUP
113# GNU-NEXT: symtab_shndx            SYMTAB SECTION INDICES
114# GNU-NEXT: relr                    RELR
115# GNU-NEXT: crel                    CREL
116# GNU-NEXT: android_rel             ANDROID_REL
117# GNU-NEXT: android_rela            ANDROID_RELA
118# GNU-NEXT: android_relr            ANDROID_RELR
119# GNU-NEXT: llvm_odrtab             LLVM_ODRTAB
120# GNU-NEXT: linker_options          LLVM_LINKER_OPTIONS
121# GNU-NEXT: llvm_call_graph_profile LLVM_CALL_GRAPH_PROFILE
122# GNU-NEXT: llvm_addrsig            LLVM_ADDRSIG
123# GNU-NEXT: .deplibs                LLVM_DEPENDENT_LIBRARIES
124# GNU-NEXT: .llvm_sympart.f         LLVM_SYMPART
125# GNU-NEXT: part1                   LLVM_PART_EHDR
126# GNU-NEXT: .phdrs                  LLVM_PART_PHDR
127# GNU-NEXT: .llvm.lto               LLVM_LTO
128# GNU-NEXT: gnu_attributes          ATTRIBUTES
129# GNU-NEXT: gnu_hash                GNU_HASH
130# GNU-NEXT: gnu_verdef              VERDEF
131# GNU-NEXT: gnu_verneed             VERNEED
132# GNU-NEXT: unknown                 0x1000: <unknown>
133# GNU-NEXT: loos                    LOOS+0x0
134# GNU-NEXT: fooos                   LOOS+0xF00
135# GNU-NEXT: hios                    VERSYM
136# GNU-NEXT: loproc                  LOPROC+0x0
137# GNU-NEXT: fooproc                 LOPROC+0xF00
138# GNU-NEXT: hiproc                  LOPROC+0xFFFFFFF
139# GNU-NEXT: louser                  LOUSER+0x0
140# GNU-NEXT: foouser                 LOUSER+0xF00
141# GNU-NEXT: hiuser                  LOUSER+0x7FFFFFFF
142# GNU-NEXT: .symtab                 SYMTAB
143# GNU-NEXT: .strtab                 STRTAB
144
145--- !ELF
146FileHeader:
147  Class: ELFCLASS64
148  Data:  ELFDATA2LSB
149  Type:  ET_REL
150Sections:
151  - Name: progbits
152    Type: SHT_PROGBITS
153  - Name: rela
154    Type: SHT_RELA
155    Info: progbits
156  - Name: hash
157    Type: SHT_HASH
158    Content: ''
159  - Name: dynamic
160    Type: SHT_DYNAMIC
161  - Name: note
162    Type: SHT_NOTE
163    Notes: []
164  - Name: nobits
165    Type: SHT_NOBITS
166  - Name: rel
167    Type: SHT_REL
168    Info: progbits
169  - Name: shlib
170    Type: SHT_SHLIB
171  - Name: dynsym
172    Type: SHT_DYNSYM
173    Link: .strtab
174  - Name: init_array
175    Type: SHT_INIT_ARRAY
176  - Name: fini_array
177    Type: SHT_FINI_ARRAY
178  - Name: preinit_array
179    Type: SHT_PREINIT_ARRAY
180  - Name: group
181    Type: SHT_GROUP
182    Info: foo
183    Members:
184        - SectionOrType: 0
185  - Name: symtab_shndx
186    Type: SHT_SYMTAB_SHNDX
187    Link: .symtab
188    Entries: [ 0, 1 ]
189  - Name: relr
190    Type: SHT_RELR
191  - Name: crel
192    Type: SHT_CREL
193  - Name: android_rel
194    Type: SHT_ANDROID_REL
195  - Name: android_rela
196    Type: SHT_ANDROID_RELA
197  - Name: android_relr
198    Type: SHT_ANDROID_RELR
199  - Name: llvm_odrtab
200    Type: SHT_LLVM_ODRTAB
201  - Name: linker_options
202    Type: SHT_LLVM_LINKER_OPTIONS
203  - Name: llvm_call_graph_profile
204    Type: SHT_LLVM_CALL_GRAPH_PROFILE
205  - Name: llvm_addrsig
206    Type: SHT_LLVM_ADDRSIG
207    Symbols:
208  - Name: .deplibs
209    Type: SHT_LLVM_DEPENDENT_LIBRARIES
210  - Name: .llvm_sympart.f
211    Type: SHT_LLVM_SYMPART
212  - Name: part1
213    Type: SHT_LLVM_PART_EHDR
214  - Name: .phdrs
215    Type: SHT_LLVM_PART_PHDR
216  - Name: .llvm.lto
217    Type: SHT_LLVM_LTO
218  - Name: gnu_attributes
219    Type: SHT_GNU_ATTRIBUTES
220  - Name: gnu_hash
221    Type: SHT_GNU_HASH
222    Content: ""
223  - Name: gnu_verdef
224    Type: SHT_GNU_verdef
225    Entries:
226  - Name: gnu_verneed
227    Type: SHT_GNU_verneed
228    Dependencies:
229  - Name: unknown
230    Type: 0x1000
231  - Name: loos
232    Type: 0x60000000
233  - Name: fooos
234    Type: 0x60000F00
235  - Name: hios
236    Type: 0x6fffffff
237    Entries: []
238  - Name: loproc
239    Type: 0x70000000
240  - Name: fooproc
241    Type: 0x70000F00
242  - Name: hiproc
243    Type: 0x7fffffff
244  - Name: louser
245    Type: 0x80000000
246  - Name: foouser
247    Type: 0x80000F00
248  - Name: hiuser
249    Type: 0xffffffff
250Symbols:
251  - Name:    foo
252    Binding: STB_GLOBAL
253