• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## Check we can use obj2yaml to yamalize the object containing .dynamic
2## section. Check that resulting section has the proper attributes and
3## dynamic tags and that we do not dump the default sh_entsize.
4
5# RUN: yaml2obj -DENTSIZE=0x10 %s -o %t1
6# RUN: obj2yaml %t1 | FileCheck %s
7
8# CHECK:       Sections:
9# CHECK-NEXT:  - Name:            .dynamic
10# CHECK-NEXT:    Type:            SHT_DYNAMIC
11# CHECK-NEXT:    Address:         0x1000
12# CHECK-NEXT:    AddressAlign:    0x2000
13# CHECK-NEXT:    Entries:
14# CHECK-NEXT:      - Tag:             DT_NULL
15# CHECK-NEXT:        Value:           0x0
16# CHECK-NEXT:      - Tag:             DT_NEEDED
17# CHECK-NEXT:        Value:           0x1
18# CHECK-NEXT:      - Tag:             DT_PLTRELSZ
19# CHECK-NEXT:        Value:           0x2
20# CHECK-NEXT:      - Tag:             DT_PLTGOT
21# CHECK-NEXT:        Value:           0x3
22# CHECK-NEXT:      - Tag:             DT_HASH
23# CHECK-NEXT:        Value:           0x4
24# CHECK-NEXT:      - Tag:             DT_STRTAB
25# CHECK-NEXT:        Value:           0x5
26# CHECK-NEXT:      - Tag:             DT_SYMTAB
27# CHECK-NEXT:        Value:           0x6
28# CHECK-NEXT:      - Tag:             DT_RELA
29# CHECK-NEXT:        Value:           0x7
30# CHECK-NEXT:      - Tag:             DT_RELASZ
31# CHECK-NEXT:        Value:           0x8
32# CHECK-NEXT:      - Tag:             DT_RELAENT
33# CHECK-NEXT:        Value:           0x9
34# CHECK-NEXT:      - Tag:             DT_STRSZ
35# CHECK-NEXT:        Value:           0xA
36# CHECK-NEXT:      - Tag:             DT_SYMENT
37# CHECK-NEXT:        Value:           0xB
38# CHECK-NEXT:      - Tag:             DT_INIT
39# CHECK-NEXT:        Value:           0xC
40# CHECK-NEXT:      - Tag:             DT_FINI
41# CHECK-NEXT:        Value:           0xD
42# CHECK-NEXT:      - Tag:             DT_SONAME
43# CHECK-NEXT:        Value:           0xE
44# CHECK-NEXT:      - Tag:             DT_RPATH
45# CHECK-NEXT:        Value:           0xF
46# CHECK-NEXT:      - Tag:             DT_SYMBOLIC
47# CHECK-NEXT:        Value:           0x10
48# CHECK-NEXT:      - Tag:             DT_REL
49# CHECK-NEXT:        Value:           0x11
50# CHECK-NEXT:      - Tag:             DT_RELSZ
51# CHECK-NEXT:        Value:           0x12
52# CHECK-NEXT:      - Tag:             DT_RELENT
53# CHECK-NEXT:        Value:           0x13
54# CHECK-NEXT:      - Tag:             DT_PLTREL
55# CHECK-NEXT:        Value:           0x14
56# CHECK-NEXT:      - Tag:             DT_DEBUG
57# CHECK-NEXT:        Value:           0x15
58# CHECK-NEXT:      - Tag:             DT_TEXTREL
59# CHECK-NEXT:        Value:           0x16
60# CHECK-NEXT:      - Tag:             DT_JMPREL
61# CHECK-NEXT:        Value:           0x17
62# CHECK-NEXT:      - Tag:             DT_BIND_NOW
63# CHECK-NEXT:        Value:           0x18
64# CHECK-NEXT:      - Tag:             DT_INIT_ARRAY
65# CHECK-NEXT:        Value:           0x19
66# CHECK-NEXT:      - Tag:             DT_FINI_ARRAY
67# CHECK-NEXT:        Value:           0x1A
68# CHECK-NEXT:      - Tag:             DT_INIT_ARRAYSZ
69# CHECK-NEXT:        Value:           0x1B
70# CHECK-NEXT:      - Tag:             DT_FINI_ARRAYSZ
71# CHECK-NEXT:        Value:           0x1C
72# CHECK-NEXT:      - Tag:             DT_RUNPATH
73# CHECK-NEXT:        Value:           0x1D
74# CHECK-NEXT:      - Tag:             DT_FLAGS
75# CHECK-NEXT:        Value:           0x1E
76# CHECK-NEXT:      - Tag:             DT_PREINIT_ARRAY
77# CHECK-NEXT:        Value:           0x1F
78# CHECK-NEXT:      - Tag:             DT_PREINIT_ARRAYSZ
79# CHECK-NEXT:        Value:           0x20
80# CHECK-NEXT:      - Tag:             DT_SYMTAB_SHNDX
81# CHECK-NEXT:        Value:           0x21
82# CHECK-NEXT:      - Tag:             DT_RELRSZ
83# CHECK-NEXT:        Value:           0x22
84# CHECK-NEXT:      - Tag:             DT_RELR
85# CHECK-NEXT:        Value:           0x23
86# CHECK-NEXT:      - Tag:             DT_RELRENT
87# CHECK-NEXT:        Value:           0x24
88# CHECK-NEXT:      - Tag:             DT_ANDROID_REL
89# CHECK-NEXT:        Value:           0x25
90# CHECK-NEXT:      - Tag:             DT_ANDROID_RELSZ
91# CHECK-NEXT:        Value:           0x26
92# CHECK-NEXT:      - Tag:             DT_ANDROID_RELA
93# CHECK-NEXT:        Value:           0x27
94# CHECK-NEXT:      - Tag:             DT_ANDROID_RELASZ
95# CHECK-NEXT:        Value:           0x28
96# CHECK-NEXT:      - Tag:             DT_ANDROID_RELR
97# CHECK-NEXT:        Value:           0x29
98# CHECK-NEXT:      - Tag:             DT_ANDROID_RELRSZ
99# CHECK-NEXT:        Value:           0x2A
100# CHECK-NEXT:      - Tag:             DT_ANDROID_RELRENT
101# CHECK-NEXT:        Value:           0x2B
102# CHECK-NEXT:      - Tag:             DT_GNU_HASH
103# CHECK-NEXT:        Value:           0x2C
104# CHECK-NEXT:      - Tag:             DT_TLSDESC_PLT
105# CHECK-NEXT:        Value:           0x2D
106# CHECK-NEXT:      - Tag:             DT_TLSDESC_GOT
107# CHECK-NEXT:        Value:           0x2E
108# CHECK-NEXT:      - Tag:             DT_RELACOUNT
109# CHECK-NEXT:        Value:           0x2F
110# CHECK-NEXT:      - Tag:             DT_RELCOUNT
111# CHECK-NEXT:        Value:           0x30
112# CHECK-NEXT:      - Tag:             DT_FLAGS_1
113# CHECK-NEXT:        Value:           0x31
114# CHECK-NEXT:      - Tag:             DT_VERSYM
115# CHECK-NEXT:        Value:           0x32
116# CHECK-NEXT:      - Tag:             DT_VERDEF
117# CHECK-NEXT:        Value:           0x33
118# CHECK-NEXT:      - Tag:             DT_VERDEFNUM
119# CHECK-NEXT:        Value:           0x34
120# CHECK-NEXT:      - Tag:             DT_VERNEED
121# CHECK-NEXT:        Value:           0x35
122# CHECK-NEXT:      - Tag:             DT_VERNEEDNUM
123# CHECK-NEXT:        Value:           0x36
124# CHECK-NEXT:      - Tag:             DT_USED
125# CHECK-NEXT:        Value:           0x1
126
127!ELF
128FileHeader:
129  Class: ELFCLASS64
130  Data:  ELFDATA2LSB
131  Type:  ET_DYN
132Sections:
133  - Name:            .dynamic
134    Type:            SHT_DYNAMIC
135    Address:         0x0000000000001000
136    AddressAlign:    0x0000000000002000
137    EntSize:         [[ENTSIZE]]
138    Entries:
139      - Tag:             DT_NULL
140        Value:           0x0000000000000000
141      - Tag:             DT_NEEDED
142        Value:           0x0000000000000001
143      - Tag:             DT_PLTRELSZ
144        Value:           0x0000000000000002
145      - Tag:             DT_PLTGOT
146        Value:           0x0000000000000003
147      - Tag:             DT_HASH
148        Value:           0x0000000000000004
149      - Tag:             DT_STRTAB
150        Value:           0x0000000000000005
151      - Tag:             DT_SYMTAB
152        Value:           0x0000000000000006
153      - Tag:             DT_RELA
154        Value:           0x0000000000000007
155      - Tag:             DT_RELASZ
156        Value:           0x0000000000000008
157      - Tag:             DT_RELAENT
158        Value:           0x0000000000000009
159      - Tag:             DT_STRSZ
160        Value:           0x000000000000000A
161      - Tag:             DT_SYMENT
162        Value:           0x000000000000000B
163      - Tag:             DT_INIT
164        Value:           0x000000000000000C
165      - Tag:             DT_FINI
166        Value:           0x000000000000000D
167      - Tag:             DT_SONAME
168        Value:           0x000000000000000E
169      - Tag:             DT_RPATH
170        Value:           0x000000000000000F
171      - Tag:             DT_SYMBOLIC
172        Value:           0x0000000000000010
173      - Tag:             DT_REL
174        Value:           0x0000000000000011
175      - Tag:             DT_RELSZ
176        Value:           0x0000000000000012
177      - Tag:             DT_RELENT
178        Value:           0x0000000000000013
179      - Tag:             DT_PLTREL
180        Value:           0x0000000000000014
181      - Tag:             DT_DEBUG
182        Value:           0x0000000000000015
183      - Tag:             DT_TEXTREL
184        Value:           0x0000000000000016
185      - Tag:             DT_JMPREL
186        Value:           0x0000000000000017
187      - Tag:             DT_BIND_NOW
188        Value:           0x0000000000000018
189      - Tag:             DT_INIT_ARRAY
190        Value:           0x0000000000000019
191      - Tag:             DT_FINI_ARRAY
192        Value:           0x000000000000001A
193      - Tag:             DT_INIT_ARRAYSZ
194        Value:           0x000000000000001B
195      - Tag:             DT_FINI_ARRAYSZ
196        Value:           0x000000000000001C
197      - Tag:             DT_RUNPATH
198        Value:           0x000000000000001D
199      - Tag:             DT_FLAGS
200        Value:           0x000000000000001E
201      - Tag:             DT_PREINIT_ARRAY
202        Value:           0x000000000000001F
203      - Tag:             DT_PREINIT_ARRAYSZ
204        Value:           0x0000000000000020
205      - Tag:             DT_SYMTAB_SHNDX
206        Value:           0x0000000000000021
207      - Tag:             DT_RELRSZ
208        Value:           0x0000000000000022
209      - Tag:             DT_RELR
210        Value:           0x0000000000000023
211      - Tag:             DT_RELRENT
212        Value:           0x0000000000000024
213      - Tag:             DT_ANDROID_REL
214        Value:           0x0000000000000025
215      - Tag:             DT_ANDROID_RELSZ
216        Value:           0x0000000000000026
217      - Tag:             DT_ANDROID_RELA
218        Value:           0x0000000000000027
219      - Tag:             DT_ANDROID_RELASZ
220        Value:           0x0000000000000028
221      - Tag:             DT_ANDROID_RELR
222        Value:           0x0000000000000029
223      - Tag:             DT_ANDROID_RELRSZ
224        Value:           0x000000000000002A
225      - Tag:             DT_ANDROID_RELRENT
226        Value:           0x000000000000002B
227      - Tag:             DT_GNU_HASH
228        Value:           0x000000000000002C
229      - Tag:             DT_TLSDESC_PLT
230        Value:           0x000000000000002D
231      - Tag:             DT_TLSDESC_GOT
232        Value:           0x000000000000002E
233      - Tag:             DT_RELACOUNT
234        Value:           0x000000000000002F
235      - Tag:             DT_RELCOUNT
236        Value:           0x0000000000000030
237      - Tag:             DT_FLAGS_1
238        Value:           0x0000000000000031
239      - Tag:             DT_VERSYM
240        Value:           0x0000000000000032
241      - Tag:             DT_VERDEF
242        Value:           0x0000000000000033
243      - Tag:             DT_VERDEFNUM
244        Value:           0x0000000000000034
245      - Tag:             DT_VERNEED
246        Value:           0x0000000000000035
247      - Tag:             DT_VERNEEDNUM
248        Value:           0x0000000000000036
249      - Tag:             DT_USED
250        Value:           0x0000000000000001
251
252## Test the behavior when sh_entsize is invalid.
253## Here we use 0xFE as an arbitrary broken value instead of expected 0x16.
254
255# RUN: yaml2obj -DENTSIZE=0xff %s -o %t2
256# RUN: not obj2yaml %t2 2>&1 | FileCheck %s --check-prefix=ENTSIZE
257
258# ENTSIZE: section [index 1] has an invalid sh_entsize: 255
259