[ARM] Cortex-M4 schedule additions
[llvm-complete.git] / test / tools / llvm-readobj / elf-dynamic-malformed.test
blobafdcbe6b6b5ec151ec0fb25d9462cec8bb3f1364
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 ProgramHeaders:
38   - Type: PT_LOAD
39     VAddr: 0x1000
40     Sections:
41       - Section: .dynamic
42   - Type: PT_DYNAMIC
43     VAddr: 0x1000
44     Sections:
45       - Section: .dynamic
47 ## Test handling of a .dynamic section with an invalid entsize (i.e. not 2 * sizeof(Elf_Dyn)).
48 # RUN: yaml2obj %s --docnum=2 -o %t.bad-entsize
49 # RUN: llvm-readobj --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE-LLVM
50 # RUN: llvm-readelf --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE-GNU
52 # BAD-ENTSIZE-LLVM:      DynamicSection [ (2 entries)
53 # BAD-ENTSIZE-LLVM-NEXT:   Tag                Type                 Name/Value
54 # BAD-ENTSIZE-LLVM-NEXT:   0x0000000000000015 DEBUG                0x0
55 # BAD-ENTSIZE-LLVM-NEXT:   0x0000000000000000 NULL                 0x0
56 # BAD-ENTSIZE-LLVM-NEXT: ]
58 # BAD-ENTSIZE-GNU:      Dynamic section at offset 0x{{.*}} contains 2 entries:
59 # BAD-ENTSIZE-GNU-NEXT:   Tag                Type                 Name/Value
60 # BAD-ENTSIZE-GNU-NEXT:   0x0000000000000015 (DEBUG)              0x0
61 # BAD-ENTSIZE-GNU-NEXT:   0x0000000000000000 (NULL)               0x0
63 --- !ELF
64 FileHeader:
65   Class:   ELFCLASS64
66   Data:    ELFDATA2LSB
67   Type:    ET_EXEC
68   Machine: EM_X86_64
69 Sections:
70   - Name:    .dynamic
71     Type:    SHT_DYNAMIC
72     Address: 0x1000
73     EntSize: 0x2
74     Entries:
75       - Tag:   DT_DEBUG
76         Value: 0
77       - Tag:   DT_NULL
78         Value: 0
79 ProgramHeaders:
80   - Type: PT_LOAD
81     VAddr: 0x1000
82     Sections:
83       - Section: .dynamic
84   - Type: PT_DYNAMIC
85     VAddr: 0x1000
86     Sections:
87       - Section: .dynamic
89 ## Test handling of string references pointing past the end of the dynamic string table.
90 # RUN: yaml2obj %s --docnum=3 -o %t.bad-string
91 # RUN: llvm-readobj --dynamic-table %t.bad-string | FileCheck %s --check-prefix BAD-STRING-LLVM
92 # RUN: llvm-readelf --dynamic-table %t.bad-string | FileCheck %s --check-prefix BAD-STRING-GNU
94 # BAD-STRING-LLVM: 0x000000000000000A STRSZ         1 (bytes)
95 # BAD-STRING-LLVM: 0x0000000000000001 NEEDED        Shared library: [<Invalid offset 0x1>]
96 # BAD-STRING-LLVM: 0x000000007FFFFFFF FILTER        Filter library: [<Invalid offset 0x1>]
97 # BAD-STRING-LLVM: 0x000000007FFFFFFD AUXILIARY     Auxiliary library: [<Invalid offset 0x1>]
98 # BAD-STRING-LLVM: 0x000000007FFFFFFE USED          Not needed object: [<Invalid offset 0x1>]
99 # BAD-STRING-LLVM: 0x000000000000000E SONAME        Library soname: [<Invalid offset 0x1>]
100 # BAD-STRING-LLVM: 0x000000000000000F RPATH         Library rpath: [<Invalid offset 0x1>]
101 # BAD-STRING-LLVM: 0x000000000000001D RUNPATH       Library runpath: [<Invalid offset 0x1>]
103 # BAD-STRING-GNU:  0x000000000000000a (STRSZ)       1 (bytes)
104 # BAD-STRING-GNU:  0x0000000000000001 (NEEDED)      Shared library: [<Invalid offset 0x1>]
105 # BAD-STRING-GNU:  0x000000007fffffff (FILTER)      Filter library: [<Invalid offset 0x1>]
106 # BAD-STRING-GNU:  0x000000007ffffffd (AUXILIARY)   Auxiliary library: [<Invalid offset 0x1>]
107 # BAD-STRING-GNU:  0x000000007ffffffe (USED)        Not needed object: [<Invalid offset 0x1>]
108 # BAD-STRING-GNU:  0x000000000000000e (SONAME)      Library soname: [<Invalid offset 0x1>]
109 # BAD-STRING-GNU:  0x000000000000000f (RPATH)       Library rpath: [<Invalid offset 0x1>]
110 # BAD-STRING-GNU:  0x000000000000001d (RUNPATH)     Library runpath: [<Invalid offset 0x1>]
112 --- !ELF
113 FileHeader:
114   Class:   ELFCLASS64
115   Data:    ELFDATA2LSB
116   Type:    ET_EXEC
117   Machine: EM_X86_64
118 Sections:
119   - Name:    .dynstr
120     Type:    SHT_STRTAB
121     Address: 0x1000
122   - Name:    .dynamic
123     Type:    SHT_DYNAMIC
124     Address: 0x1010
125     Entries:
126       - Tag:   DT_STRTAB
127         Value: 0x1000
128       - Tag:   DT_STRSZ
129         Value: 1
130       - Tag:   DT_NEEDED
131         Value: 1
132       - Tag:   DT_FILTER
133         Value: 1
134       - Tag:   DT_AUXILIARY
135         Value: 1
136       - Tag:   DT_USED
137         Value: 1
138       - Tag:   DT_SONAME
139         Value: 1
140       - Tag:   DT_RPATH
141         Value: 1
142       - Tag:   DT_RUNPATH
143         Value: 1
144       - Tag:   DT_NULL
145         Value: 0
146 ProgramHeaders:
147   - Type: PT_LOAD
148     VAddr: 0x1000
149     Sections:
150       - Section: .dynstr
151       - Section: .dynamic
152   - Type: PT_DYNAMIC
153     VAddr: 0x1010
154     Sections:
155       - Section: .dynamic
157 ## Test handling of DT_STRTAB pointing outside the file's address space.
158 # RUN: yaml2obj %s --docnum=4 -o %t.bad-strtab
160 # RUN: llvm-readobj --dynamic-table %t.bad-strtab 2>&1 >/dev/null | FileCheck -DFILE=%t.bad-strtab %s --check-prefix BAD-STRTAB-ERR
161 # RUN: llvm-readelf --dynamic-table %t.bad-strtab 2>&1 >/dev/null | FileCheck -DFILE=%t.bad-strtab %s --check-prefix BAD-STRTAB-ERR
162 # BAD-STRTAB-ERR: warning: '[[FILE]]': Unable to parse DT_STRTAB: virtual address is not in any segment: 0x2000000
164 # RUN: llvm-readobj --dynamic-table --needed-libs %t.bad-strtab | FileCheck %s --check-prefixes=BAD-STRTAB,BAD-STRTAB-LLVM
165 # RUN: llvm-readelf --dynamic-table --needed-libs %t.bad-strtab | FileCheck %s --check-prefixes=BAD-STRTAB,BAD-STRTAB-GNU
166 # BAD-STRTAB-LLVM: LoadName: <String table is empty or was not found>
167 # BAD-STRTAB-LLVM: 0x0000000000000001  NEEDED   Shared library: [<String table is empty or was not found>]
168 # BAD-STRTAB-GNU:  0x0000000000000001 (NEEDED)  Shared library: [<String table is empty or was not found>]
169 # BAD-STRTAB:      NeededLibraries [
170 # BAD-STRTAB:        <String table is empty or was not found>
171 # BAD-STRTAB:      ]
173 --- !ELF
174 FileHeader:
175   Class:   ELFCLASS64
176   Data:    ELFDATA2LSB
177   Type:    ET_EXEC
178   Machine: EM_X86_64
179 Sections:
180   - Name:    .dynamic
181     Type:    SHT_DYNAMIC
182     Address: 0x1000
183     Entries:
184       - Tag:   DT_STRTAB
185         Value: 0x2000000
186       - Tag:   DT_STRSZ
187         Value: 10
188       - Tag:   DT_NEEDED
189         Value: 1
190       - Tag:   DT_NULL
191         Value: 0x0
192 ProgramHeaders:
193   - Type: PT_LOAD
194     VAddr: 0x1000
195     Sections:
196       - Section: .dynamic
197   - Type: PT_DYNAMIC
198     VAddr: 0x1000
199     Sections:
200       - Section: .dynamic
202 ## Test handling of other d_ptr tags pointing outside the file's address space.
203 # RUN: yaml2obj %s --docnum=5 -o %t.bad-rela
204 # RUN: llvm-readobj --dynamic-table %t.bad-rela 2>&1 | FileCheck -DFILE=%t.bad-rela %s --check-prefixes=CHECK,BAD-RELA
205 # RUN: llvm-readelf --dynamic-table %t.bad-rela 2>&1 | FileCheck -DFILE=%t.bad-rela %s --check-prefixes=CHECK,BAD-RELA-GNU
207 # CHECK: warning: '[[FILE]]': Unable to parse DT_RELA: virtual address is not in any segment: 0x1000000
209 # BAD-RELA:      DynamicSection [ (2 entries)
210 # BAD-RELA-NEXT:   Tag                Type Name/Value
211 # BAD-RELA-NEXT:   0x0000000000000007 RELA 0x1000000
212 # BAD-RELA-NEXT:   0x0000000000000000 NULL 0x0
213 # BAD-RELA-NEXT: ]
214 # BAD-RELA-GNU:      Dynamic section at offset 0xb0 contains 2 entries:
215 # BAD-RELA-GNU-NEXT: Tag                Type   Name/Value
216 # BAD-RELA-GNU-NEXT: 0x0000000000000007 (RELA) 0x1000000
217 # BAD-RELA-GNU-NEXT: 0x0000000000000000 (NULL) 0x0
219 --- !ELF
220 FileHeader:
221   Class:   ELFCLASS64
222   Data:    ELFDATA2LSB
223   Type:    ET_EXEC
224   Machine: EM_X86_64
225 Sections:
226   - Name:    .dynamic
227     Type:    SHT_DYNAMIC
228     Address: 0x1000
229     Entries:
230       - Tag:   DT_RELA
231         Value: 0x1000000
232       - Tag:   DT_NULL
233         Value: 0x0
234 ProgramHeaders:
235   - Type: PT_LOAD
236     VAddr: 0x1000
237     Sections:
238       - Section: .dynamic
239   - Type: PT_DYNAMIC
240     VAddr: 0x1000
241     Sections:
242       - Section: .dynamic