1RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \
2RUN:              %p/Inputs/shared-object-test.elf-i386 \
3RUN:         | FileCheck %s -check-prefix ELF
4RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \
5RUN:              %p/Inputs/shared-object-test.elf-i386 \
6RUN:         | FileCheck %s -check-prefix ELF32
7
8RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \
9RUN:            %p/Inputs/shared-object-test.elf-x86-64 \
10RUN:         | FileCheck %s -check-prefix ELF
11RUN: llvm-readobj -s -t -dt -dynamic-table -needed-libs \
12RUN:            %p/Inputs/shared-object-test.elf-x86-64 \
13RUN:         | FileCheck %s -check-prefix ELF64
14
15ELF64: Format:      ELF64-x86-64
16ELF64: Arch:        x86_64
17ELF64: AddressSize: 64bit
18ELF64: LoadName:    libfoo.so
19
20ELF32: Format:      ELF32-i386
21ELF32: Arch:        i386
22ELF32: AddressSize: 32bit
23ELF32: LoadName:    libfoo.so
24
25ELF: Sections [
26ELF:   Section {
27ELF:     Name:  (0)
28ELF:     Type: SHT_NULL
29ELF:     Flags [ (0x0)
30ELF:     ]
31ELF:   }
32ELF:   Section {
33ELF:     Name: .hash
34ELF:     Type: SHT_HASH
35ELF:     Flags [ (0x2)
36ELF:       SHF_ALLOC
37ELF:     ]
38ELF:   }
39ELF:   Section {
40ELF:     Name: .dynsym
41ELF:     Type: SHT_DYNSYM
42ELF:     Flags [ (0x2)
43ELF:       SHF_ALLOC
44ELF:     ]
45ELF:   }
46ELF:   Section {
47ELF:     Name: .dynstr
48ELF:     Type: SHT_STRTAB
49ELF:     Flags [ (0x2)
50ELF:       SHF_ALLOC
51ELF:     ]
52ELF:   }
53ELF:   Section {
54ELF:     Name: .text
55ELF:     Type: SHT_PROGBITS
56ELF:     Flags [ (0x6)
57ELF:       SHF_ALLOC
58ELF:       SHF_EXECINSTR
59ELF:     ]
60ELF:   }
61ELF:   Section {
62ELF:     Name: .eh_frame
63ELF:     Type: SHT_PROGBITS
64ELF:     Flags [ (0x2)
65ELF:       SHF_ALLOC
66ELF:     ]
67ELF:   }
68ELF:   Section {
69ELF:     Name: .tdata
70ELF:     Type: SHT_PROGBITS
71ELF:     Flags [ (0x403)
72ELF:       SHF_ALLOC
73ELF:       SHF_TLS
74ELF:       SHF_WRITE
75ELF:     ]
76ELF:   }
77ELF:   Section {
78ELF:     Name: .dynamic
79ELF:     Type: SHT_DYNAMIC
80ELF:     Flags [ (0x3)
81ELF:       SHF_ALLOC
82ELF:       SHF_WRITE
83ELF:     ]
84ELF:   }
85ELF:   Section {
86ELF:     Name: .got.plt
87ELF:     Type: SHT_PROGBITS
88ELF:     Flags [ (0x3)
89ELF:       SHF_ALLOC
90ELF:       SHF_WRITE
91ELF:     ]
92ELF:   }
93ELF:   Section {
94ELF:     Name: .data
95ELF:     Type: SHT_PROGBITS
96ELF:     Flags [ (0x3)
97ELF:       SHF_ALLOC
98ELF:       SHF_WRITE
99ELF:     ]
100ELF:   }
101ELF:   Section {
102ELF:     Name: .bss
103ELF:     Type: SHT_NOBITS
104ELF:     Flags [ (0x3)
105ELF:       SHF_ALLOC
106ELF:       SHF_WRITE
107ELF:     ]
108ELF:   }
109ELF:   Section {
110ELF:     Name: .shstrtab
111ELF:     Type: SHT_STRTAB
112ELF:     Flags [ (0x0)
113ELF:     ]
114ELF:   }
115ELF:   Section {
116ELF:     Name: .symtab
117ELF:     Type: SHT_SYMTAB
118ELF:     Flags [ (0x0)
119ELF:     ]
120ELF:   }
121ELF:   Section {
122ELF:     Name: .strtab
123ELF:     Type: SHT_STRTAB
124ELF:     Flags [ (0x0)
125ELF:     ]
126ELF:   }
127ELF: ]
128
129ELF: Symbols [
130ELF:   Symbol {
131ELF:     Name: .hash
132ELF:     Binding: Local
133ELF:     Type: Section
134ELF:     Section: .hash
135ELF:   }
136ELF:   Symbol {
137ELF:     Name: .dynsym
138ELF:     Binding: Local
139ELF:     Type: Section
140ELF:     Section: .dynsym
141ELF:   }
142ELF:   Symbol {
143ELF:     Name: .dynstr
144ELF:     Binding: Local
145ELF:     Type: Section
146ELF:     Section: .dynstr
147ELF:   }
148ELF:   Symbol {
149ELF:     Name: .text
150ELF:     Binding: Local
151ELF:     Type: Section
152ELF:     Section: .text
153ELF:   }
154ELF:   Symbol {
155ELF:     Name: .eh_frame
156ELF:     Binding: Local
157ELF:     Type: Section
158ELF:     Section: .eh_frame
159ELF:   }
160ELF:   Symbol {
161ELF:     Name: .tdata
162ELF:     Binding: Local
163ELF:     Type: Section
164ELF:     Section: .tdata
165ELF:   }
166ELF:   Symbol {
167ELF:     Name: .dynamic
168ELF:     Binding: Local
169ELF:     Type: Section
170ELF:     Section: .dynamic
171ELF:   }
172ELF:   Symbol {
173ELF:     Name: .got.plt
174ELF:     Binding: Local
175ELF:     Type: Section
176ELF:     Section: .got.plt
177ELF:   }
178ELF:   Symbol {
179ELF:     Name: .data
180ELF:     Binding: Local
181ELF:     Type: Section
182ELF:     Section: .data
183ELF:   }
184ELF:   Symbol {
185ELF:     Name: .bss
186ELF:     Binding: Local
187ELF:     Type: Section
188ELF:     Section: .bss
189ELF:   }
190ELF:   Symbol {
191ELF:     Name: shared.ll
192ELF:     Binding: Local
193ELF:     Type: File
194ELF:     Section: (0xFFF1)
195ELF:   }
196ELF:   Symbol {
197ELF:     Name: local_func
198ELF:     Binding: Local
199ELF:     Type: Function
200ELF:     Section: .text
201ELF:   }
202ELF:   Symbol {
203ELF:     Name: _GLOBAL_OFFSET_TABLE_
204ELF:     Binding: Local
205ELF:     Type: Object
206ELF:     Section: (0xFFF1)
207ELF:   }
208ELF:   Symbol {
209ELF:     Name: _DYNAMIC
210ELF:     Binding: Local
211ELF:     Type: Object
212ELF:     Section: (0xFFF1)
213ELF:   }
214ELF:   Symbol {
215ELF:     Name: common_sym
216ELF:     Binding: Global
217ELF:     Type: Object
218ELF:     Section: .bss
219ELF:   }
220ELF:   Symbol {
221ELF:     Name: tls_sym
222ELF:     Binding: Global
223ELF:     Type: TLS
224ELF:     Section: .tdata
225ELF:   }
226ELF:   Symbol {
227ELF:     Name: defined_sym
228ELF:     Binding: Global
229ELF:     Type: Object
230ELF:     Section: .data
231ELF:   }
232ELF:   Symbol {
233ELF:     Name: __bss_start
234ELF:     Binding: Global
235ELF:     Type: None
236ELF:     Section: (0xFFF1)
237ELF:   }
238ELF:   Symbol {
239ELF:     Name: _end
240ELF:     Binding: Global
241ELF:     Type: None
242ELF:     Section: (0xFFF1)
243ELF:   }
244ELF:   Symbol {
245ELF:     Name: global_func
246ELF:     Binding: Global
247ELF:     Type: Function
248ELF:     Section: .text
249ELF:   }
250ELF:   Symbol {
251ELF:     Name: _edata
252ELF:     Binding: Global
253ELF:     Type: None
254ELF:     Section: (0xFFF1)
255ELF:   }
256ELF: ]
257
258ELF: DynamicSymbols [
259ELF:   Symbol {
260ELF:     Name: common_sym
261ELF:     Binding: Global
262ELF:     Type: Object
263ELF:     Section: .bss
264ELF:   }
265ELF:   Symbol {
266ELF:     Name: tls_sym
267ELF:     Binding: Global
268ELF:     Type: TLS
269ELF:     Section: .tdata
270ELF:   }
271ELF:   Symbol {
272ELF:     Name: defined_sym
273ELF:     Binding: Global
274ELF:     Type: Object
275ELF:     Section: .data
276ELF:   }
277ELF:   Symbol {
278ELF:     Name: __bss_start
279ELF:     Binding: Global
280ELF:     Type: None
281ELF:     Section: (0xFFF1)
282ELF:   }
283ELF:   Symbol {
284ELF:     Name: _end
285ELF:     Binding: Global
286ELF:     Type: None
287ELF:     Section: (0xFFF1)
288ELF:   }
289ELF:   Symbol {
290ELF:     Name: global_func
291ELF:     Binding: Global
292ELF:     Type: Function
293ELF:     Section: .text
294ELF:   }
295ELF:   Symbol {
296ELF:     Name: _edata
297ELF:     Binding: Global
298ELF:     Type: None
299ELF:     Section: (0xFFF1)
300ELF:   }
301ELF: ]
302
303ELF: DynamicSection [ (9 entries)
304ELF:   Tag        Type                 Name/Value
305ELF:   00000001 NEEDED               SharedLibrary (libc.so.6)
306ELF:   00000001 NEEDED               SharedLibrary (libm.so.6)
307ELF:   0000000E SONAME               LibrarySoname (libfoo.so)
308ELF:   00000004 HASH                 {{[0-9a-f]+}}
309ELF:   00000005 STRTAB               {{[0-9a-f]+}}
310ELF:   00000006 SYMTAB               {{[0-9a-f]+}}
311ELF:   0000000A STRSZ                {{[0-9]+}} (bytes)
312ELF:   0000000B SYMENT               {{[0-9]+}} (bytes)
313ELF:   00000000 NULL                 0x0
314ELF: ]
315
316ELF:      NeededLibraries [
317ELF-NEXT:  libc.so.6
318ELF-NEXT:  libm.so.6
319ELF-NEXT: ]
320