[yaml2obj][obj2yaml] - Do not create a symbol table by default.
[llvm-complete.git] / test / tools / llvm-readobj / elf-dynamic-malformed.test
blob1a31fa39e9f9d9e440a37464b5bd6790daccd562
1 ## Test handling of a dynamic section size which is not a multiple of its entry size.
2 ## Test the full output to demonstrate how we print the warnings.
4 # RUN: yaml2obj %s --docnum=1 -o %t.bad-size
5 # RUN: llvm-readobj --all %t.bad-size 2>&1 \
6 # RUN:   | FileCheck %s -DFILE=%t.bad-size --implicit-check-not=warning --check-prefix WARN
7 # RUN: llvm-readelf --all %t.bad-size 2>&1 \
8 # RUN:   | FileCheck %s -DFILE=%t.bad-size --implicit-check-not=warning --check-prefix WARN-GNU
10 # WARN: warning: '[[FILE]]': invalid section size (4) or entity size (16)
11 # WARN: warning: '[[FILE]]': invalid section size (4) or entity size (16)
12 # WARN: warning: '[[FILE]]': no valid dynamic table was found
13 # WARN-EMPTY:
14 # WARN: File:
15 # WARN: Symbols [
16 # WARN: ]
17 # WARN: ProgramHeaders [
19 # WARN-GNU: warning: '[[FILE]]': invalid section size (4) or entity size (16)
20 # WARN-GNU: warning: '[[FILE]]': invalid section size (4) or entity size (16)
21 # WARN-GNU: warning: '[[FILE]]': no valid dynamic table was found
22 # WARN-GNU-NEXT: ELF Header:
23 # WARN-GNU:      Symbol table '.symtab' contains 1 entries:
24 # WARN-GNU:        0:
26 --- !ELF
27 FileHeader:
28   Class:   ELFCLASS64
29   Data:    ELFDATA2LSB
30   Type:    ET_EXEC
31   Machine: EM_X86_64
32 Sections:
33   - Name:    .dynamic
34     Type:    SHT_DYNAMIC
35     Address: 0x1000
36     Content: "01234567"
37 Symbols: []
38 ProgramHeaders:
39   - Type: PT_LOAD
40     VAddr: 0x1000
41     Sections:
42       - Section: .dynamic
43   - Type: PT_DYNAMIC
44     VAddr: 0x1000
45     Sections:
46       - Section: .dynamic
48 ## Test handling of a .dynamic section with an invalid entsize (i.e. not 2 * sizeof(Elf_Dyn)).
49 # RUN: yaml2obj %s --docnum=2 -o %t.bad-entsize
50 # RUN: llvm-readobj --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE-LLVM
51 # RUN: llvm-readelf --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE-GNU
53 # BAD-ENTSIZE-LLVM:      DynamicSection [ (2 entries)
54 # BAD-ENTSIZE-LLVM-NEXT:   Tag                Type                 Name/Value
55 # BAD-ENTSIZE-LLVM-NEXT:   0x0000000000000015 DEBUG                0x0
56 # BAD-ENTSIZE-LLVM-NEXT:   0x0000000000000000 NULL                 0x0
57 # BAD-ENTSIZE-LLVM-NEXT: ]
59 # BAD-ENTSIZE-GNU:      Dynamic section at offset 0x{{.*}} contains 2 entries:
60 # BAD-ENTSIZE-GNU-NEXT:   Tag                Type                 Name/Value
61 # BAD-ENTSIZE-GNU-NEXT:   0x0000000000000015 (DEBUG)              0x0
62 # BAD-ENTSIZE-GNU-NEXT:   0x0000000000000000 (NULL)               0x0
64 --- !ELF
65 FileHeader:
66   Class:   ELFCLASS64
67   Data:    ELFDATA2LSB
68   Type:    ET_EXEC
69   Machine: EM_X86_64
70 Sections:
71   - Name:    .dynamic
72     Type:    SHT_DYNAMIC
73     Address: 0x1000
74     EntSize: 0x2
75     Entries:
76       - Tag:   DT_DEBUG
77         Value: 0
78       - Tag:   DT_NULL
79         Value: 0
80 Symbols: []
81 ProgramHeaders:
82   - Type: PT_LOAD
83     VAddr: 0x1000
84     Sections:
85       - Section: .dynamic
86   - Type: PT_DYNAMIC
87     VAddr: 0x1000
88     Sections:
89       - Section: .dynamic
91 ## Test handling of string references pointing past the end of the dynamic string table.
92 # RUN: yaml2obj %s --docnum=3 -o %t.bad-string
93 # RUN: llvm-readobj --dynamic-table %t.bad-string | FileCheck %s --check-prefix BAD-STRING-LLVM
94 # RUN: llvm-readelf --dynamic-table %t.bad-string | FileCheck %s --check-prefix BAD-STRING-GNU
96 # BAD-STRING-LLVM: 0x000000000000000A STRSZ         1 (bytes)
97 # BAD-STRING-LLVM: 0x0000000000000001 NEEDED        Shared library: [<Invalid offset 0x1>]
98 # BAD-STRING-LLVM: 0x000000007FFFFFFF FILTER        Filter library: [<Invalid offset 0x1>]
99 # BAD-STRING-LLVM: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: [<Invalid offset 0x1>]
100 # BAD-STRING-LLVM: 0x000000007FFFFFFE USED          Not needed object: [<Invalid offset 0x1>]
101 # BAD-STRING-LLVM: 0x000000000000000E SONAME        Library soname: [<Invalid offset 0x1>]
102 # BAD-STRING-LLVM: 0x000000000000000F RPATH         Library rpath: [<Invalid offset 0x1>]
103 # BAD-STRING-LLVM: 0x000000000000001D RUNPATH       Library runpath: [<Invalid offset 0x1>]
105 # BAD-STRING-GNU:  0x000000000000000a (STRSZ)       1 (bytes)
106 # BAD-STRING-GNU:  0x0000000000000001 (NEEDED)      Shared library: [<Invalid offset 0x1>]
107 # BAD-STRING-GNU:  0x000000007fffffff (FILTER)      Filter library: [<Invalid offset 0x1>]
108 # BAD-STRING-GNU:  0x000000007ffffffd (AUXILIARY)   Auxiliary library: [<Invalid offset 0x1>]
109 # BAD-STRING-GNU:  0x000000007ffffffe (USED)        Not needed object: [<Invalid offset 0x1>]
110 # BAD-STRING-GNU:  0x000000000000000e (SONAME)      Library soname: [<Invalid offset 0x1>]
111 # BAD-STRING-GNU:  0x000000000000000f (RPATH)       Library rpath: [<Invalid offset 0x1>]
112 # BAD-STRING-GNU:  0x000000000000001d (RUNPATH)     Library runpath: [<Invalid offset 0x1>]
114 --- !ELF
115 FileHeader:
116   Class:   ELFCLASS64
117   Data:    ELFDATA2LSB
118   Type:    ET_EXEC
119   Machine: EM_X86_64
120 Sections:
121   - Name:    .dynstr
122     Type:    SHT_STRTAB
123     Address: 0x1000
124   - Name:    .dynamic
125     Type:    SHT_DYNAMIC
126     Address: 0x1010
127     Entries:
128       - Tag:   DT_STRTAB
129         Value: 0x1000
130       - Tag:   DT_STRSZ
131         Value: 1
132       - Tag:   DT_NEEDED
133         Value: 1
134       - Tag:   DT_FILTER
135         Value: 1
136       - Tag:   DT_AUXILIARY
137         Value: 1
138       - Tag:   DT_USED
139         Value: 1
140       - Tag:   DT_SONAME
141         Value: 1
142       - Tag:   DT_RPATH
143         Value: 1
144       - Tag:   DT_RUNPATH
145         Value: 1
146       - Tag:   DT_NULL
147         Value: 0
148 Symbols: []
149 ProgramHeaders:
150   - Type: PT_LOAD
151     VAddr: 0x1000
152     Sections:
153       - Section: .dynstr
154       - Section: .dynamic
155   - Type: PT_DYNAMIC
156     VAddr: 0x1010
157     Sections:
158       - Section: .dynamic
160 ## Test handling of DT_STRTAB pointing outside the file's address space.
161 # RUN: yaml2obj %s --docnum=4 -o %t.bad-strtab
163 # RUN: llvm-readobj --dynamic-table %t.bad-strtab 2>&1 >/dev/null | FileCheck -DFILE=%t.bad-strtab %s --check-prefix BAD-STRTAB-ERR
164 # RUN: llvm-readelf --dynamic-table %t.bad-strtab 2>&1 >/dev/null | FileCheck -DFILE=%t.bad-strtab %s --check-prefix BAD-STRTAB-ERR
165 # BAD-STRTAB-ERR: warning: '[[FILE]]': Unable to parse DT_STRTAB: virtual address is not in any segment: 0x2000000
167 # RUN: llvm-readobj --dynamic-table --needed-libs %t.bad-strtab | FileCheck %s --check-prefixes=BAD-STRTAB,BAD-STRTAB-LLVM
168 # RUN: llvm-readelf --dynamic-table --needed-libs %t.bad-strtab | FileCheck %s --check-prefixes=BAD-STRTAB,BAD-STRTAB-GNU
169 # BAD-STRTAB-LLVM: LoadName: <String table is empty or was not found>
170 # BAD-STRTAB-LLVM: 0x0000000000000001  NEEDED   Shared library: [<String table is empty or was not found>]
171 # BAD-STRTAB-GNU:  0x0000000000000001 (NEEDED)  Shared library: [<String table is empty or was not found>]
172 # BAD-STRTAB:      NeededLibraries [
173 # BAD-STRTAB:        <String table is empty or was not found>
174 # BAD-STRTAB:      ]
176 --- !ELF
177 FileHeader:
178   Class:   ELFCLASS64
179   Data:    ELFDATA2LSB
180   Type:    ET_EXEC
181   Machine: EM_X86_64
182 Sections:
183   - Name:    .dynamic
184     Type:    SHT_DYNAMIC
185     Address: 0x1000
186     Entries:
187       - Tag:   DT_STRTAB
188         Value: 0x2000000
189       - Tag:   DT_STRSZ
190         Value: 10
191       - Tag:   DT_NEEDED
192         Value: 1
193       - Tag:   DT_NULL
194         Value: 0x0
195 Symbols: []
196 ProgramHeaders:
197   - Type: PT_LOAD
198     VAddr: 0x1000
199     Sections:
200       - Section: .dynamic
201   - Type: PT_DYNAMIC
202     VAddr: 0x1000
203     Sections:
204       - Section: .dynamic
206 ## Test handling of other d_ptr tags pointing outside the file's address space.
207 # RUN: yaml2obj %s --docnum=5 -o %t.bad-rela
208 # RUN: llvm-readobj --dynamic-table %t.bad-rela 2>&1 | FileCheck -DFILE=%t.bad-rela %s --check-prefixes=CHECK,BAD-RELA
209 # RUN: llvm-readelf --dynamic-table %t.bad-rela 2>&1 | FileCheck -DFILE=%t.bad-rela %s --check-prefixes=CHECK,BAD-RELA-GNU
211 # CHECK: warning: '[[FILE]]': Unable to parse DT_RELA: virtual address is not in any segment: 0x1000000
213 # BAD-RELA:      DynamicSection [ (2 entries)
214 # BAD-RELA-NEXT:   Tag                Type Name/Value
215 # BAD-RELA-NEXT:   0x0000000000000007 RELA 0x1000000
216 # BAD-RELA-NEXT:   0x0000000000000000 NULL 0x0
217 # BAD-RELA-NEXT: ]
218 # BAD-RELA-GNU:      Dynamic section at offset 0xb0 contains 2 entries:
219 # BAD-RELA-GNU-NEXT: Tag                Type   Name/Value
220 # BAD-RELA-GNU-NEXT: 0x0000000000000007 (RELA) 0x1000000
221 # BAD-RELA-GNU-NEXT: 0x0000000000000000 (NULL) 0x0
223 --- !ELF
224 FileHeader:
225   Class:   ELFCLASS64
226   Data:    ELFDATA2LSB
227   Type:    ET_EXEC
228   Machine: EM_X86_64
229 Sections:
230   - Name:    .dynamic
231     Type:    SHT_DYNAMIC
232     Address: 0x1000
233     Entries:
234       - Tag:   DT_RELA
235         Value: 0x1000000
236       - Tag:   DT_NULL
237         Value: 0x0
238 Symbols: []
239 ProgramHeaders:
240   - Type: PT_LOAD
241     VAddr: 0x1000
242     Sections:
243       - Section: .dynamic
244   - Type: PT_DYNAMIC
245     VAddr: 0x1000
246     Sections:
247       - Section: .dynamic