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