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