summaryrefslogtreecommitdiff
path: root/binutils/testsuite/binutils-all/dw5.W
blob: 1fa0d5d07b683e1d18d0232ff513fb11646adb03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x160 \(32-bit\)
   Version:       5
   Abbrev Offset: 0x0
   Pointer Size:  8
 <0><c>: Abbrev Number: 6 \(DW_TAG_compile_unit\)
    <d>   DW_AT_producer    : \(indirect string, offset: 0x43\): GNU C11 7.0.1 20170218 \(experimental\) -mtune=generic -march=x86-64 -gdwarf-5 -O2
    <11>   DW_AT_language    : 29	\(C11\)
    <12>   DW_AT_name        : \(indirect line string, offset: 0x14\): main.c
    <16>   DW_AT_comp_dir    : \(indirect line string, offset: 0x0\): 
    <1a>   DW_AT_ranges      : 0xc
    <1e>   DW_AT_low_pc      : 0x0
    <26>   DW_AT_stmt_list   : 0x0
 <1><2a>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <2b>   DW_AT_byte_size   : 1
    <2c>   DW_AT_encoding    : 8	\(unsigned char\)
    <2d>   DW_AT_name        : \(indirect string, offset: 0x94\): unsigned char
 <1><31>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <32>   DW_AT_byte_size   : 2
    <33>   DW_AT_encoding    : 7	\(unsigned\)
    <34>   DW_AT_name        : \(indirect string, offset: 0xbc\): short unsigned int
 <1><38>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <39>   DW_AT_byte_size   : 4
    <3a>   DW_AT_encoding    : 7	\(unsigned\)
    <3b>   DW_AT_name        : \(indirect string, offset: 0x0\): unsigned int
 <1><3f>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <40>   DW_AT_byte_size   : 8
    <41>   DW_AT_encoding    : 7	\(unsigned\)
    <42>   DW_AT_name        : \(indirect string, offset: 0x2a\): long unsigned int
 <1><46>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <47>   DW_AT_byte_size   : 1
    <48>   DW_AT_encoding    : 6	\(signed char\)
    <49>   DW_AT_name        : \(indirect string, offset: 0x19\): signed char
 <1><4d>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <4e>   DW_AT_byte_size   : 2
    <4f>   DW_AT_encoding    : 5	\(signed\)
    <50>   DW_AT_name        : \(indirect string, offset: 0xef\): short int
 <1><54>: Abbrev Number: 7 \(DW_TAG_base_type\)
    <55>   DW_AT_byte_size   : 4
    <56>   DW_AT_encoding    : 5	\(signed\)
    <57>   DW_AT_name        : int
 <1><5b>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <5c>   DW_AT_byte_size   : 8
    <5d>   DW_AT_encoding    : 5	\(signed\)
    <5e>   DW_AT_name        : \(indirect string, offset: 0xae\): long int
 <1><62>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <63>   DW_AT_byte_size   : 8
    <64>   DW_AT_encoding    : 7	\(unsigned\)
    <65>   DW_AT_name        : \(indirect string, offset: 0xff\): sizetype
 <1><69>: Abbrev Number: 3 \(DW_TAG_pointer_type\)
    <6a>   DW_AT_byte_size   : 8
    <6a>   DW_AT_type        : <0x6e>
 <1><6e>: Abbrev Number: 1 \(DW_TAG_base_type\)
    <6f>   DW_AT_byte_size   : 1
    <70>   DW_AT_encoding    : 6	\(signed char\)
    <71>   DW_AT_name        : \(indirect string, offset: 0xa2\): char
 <1><75>: Abbrev Number: 8 \(DW_TAG_variable\)
    <76>   DW_AT_name        : \(indirect string, offset: 0xd9\): __environ
    <7a>   DW_AT_decl_file   : 2
    <7b>   DW_AT_decl_line   : 546
    <7d>   DW_AT_type        : <0x81>
    <81>   DW_AT_external    : 1
    <81>   DW_AT_declaration : 1
 <1><81>: Abbrev Number: 3 \(DW_TAG_pointer_type\)
    <82>   DW_AT_byte_size   : 8
    <82>   DW_AT_type        : <0x69>
 <1><86>: Abbrev Number: 2 \(DW_TAG_variable\)
    <87>   DW_AT_name        : \(indirect string, offset: 0xe8\): optarg
    <8b>   DW_AT_decl_file   : 3
    <8b>   DW_AT_decl_line   : 57
    <8c>   DW_AT_type        : <0x69>
    <90>   DW_AT_external    : 1
    <90>   DW_AT_declaration : 1
 <1><90>: Abbrev Number: 2 \(DW_TAG_variable\)
    <91>   DW_AT_name        : \(indirect string, offset: 0xa7\): optind
    <95>   DW_AT_decl_file   : 3
    <95>   DW_AT_decl_line   : 71
    <96>   DW_AT_type        : <0x54>
    <9a>   DW_AT_external    : 1
    <9a>   DW_AT_declaration : 1
 <1><9a>: Abbrev Number: 2 \(DW_TAG_variable\)
    <9b>   DW_AT_name        : \(indirect string, offset: 0x3c\): opterr
    <9f>   DW_AT_decl_file   : 3
    <9f>   DW_AT_decl_line   : 76
    <a0>   DW_AT_type        : <0x54>
    <a4>   DW_AT_external    : 1
    <a4>   DW_AT_declaration : 1
 <1><a4>: Abbrev Number: 2 \(DW_TAG_variable\)
    <a5>   DW_AT_name        : \(indirect string, offset: 0xd\): optopt
    <a9>   DW_AT_decl_file   : 3
    <a9>   DW_AT_decl_line   : 80
    <aa>   DW_AT_type        : <0x54>
    <ae>   DW_AT_external    : 1
    <ae>   DW_AT_declaration : 1
 <1><ae>: Abbrev Number: 4 \(DW_TAG_variable\)
    <af>   DW_AT_name        : \(indirect string, offset: 0x25\): xvar
    <b3>   DW_AT_decl_file   : 1
    <b3>   DW_AT_decl_line   : 2
    <b4>   DW_AT_type        : <0x54>
    <b8>   DW_AT_external    : 1
    <b8>   DW_AT_location    : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) 	\(DW_OP_addr: 1234\)
 <1><c2>: Abbrev Number: 4 \(DW_TAG_variable\)
    <c3>   DW_AT_name        : \(indirect string, offset: 0xcf\): yvar
    <c7>   DW_AT_decl_file   : 1
    <c7>   DW_AT_decl_line   : 3
    <c8>   DW_AT_type        : <0x54>
    <cc>   DW_AT_external    : 1
    <cc>   DW_AT_location    : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) 	\(DW_OP_addr: 1234\)
 <1><d6>: Abbrev Number: 4 \(DW_TAG_variable\)
    <d7>   DW_AT_name        : \(indirect string, offset: 0xd4\): pvar
    <db>   DW_AT_decl_file   : 1
    <db>   DW_AT_decl_line   : 4
    <dc>   DW_AT_type        : <0xea>
    <e0>   DW_AT_external    : 1
    <e0>   DW_AT_location    : 9 byte block: 3 (0|34) (0|12) 0 0 0 0 (0|12) (0|34) 	\(DW_OP_addr: 1234\)
 <1><ea>: Abbrev Number: 3 \(DW_TAG_pointer_type\)
    <eb>   DW_AT_byte_size   : 8
    <eb>   DW_AT_type        : <0x54>
 <1><ef>: Abbrev Number: 9 \(DW_TAG_subprogram\)
    <f0>   DW_AT_external    : 1
    <f0>   DW_AT_name        : \(indirect string, offset: 0x14\): main
    <f4>   DW_AT_decl_file   : 1
    <f5>   DW_AT_decl_line   : 6
    <f6>   DW_AT_prototyped  : 1
    <f6>   DW_AT_type        : <0x54>
    <fa>   DW_AT_low_pc      : 0x1234
    <102>   DW_AT_high_pc     : 0x5678
    <10a>   DW_AT_frame_base  : 1 byte block: 9c 	\(DW_OP_call_frame_cfa\)
    <10c>   DW_AT_call_all_calls: 1
    <10c>   DW_AT_sibling     : <0x13e>
 <2><110>: Abbrev Number: 5 \(DW_TAG_formal_parameter\)
    <111>   DW_AT_name        : \(indirect string, offset: 0xb7\): argc
    <115>   DW_AT_decl_file   : 1
    <115>   DW_AT_decl_line   : 6
    <115>   DW_AT_type        : <0x54>
    <119>   DW_AT_location    : 0xc \(location list\)
 <2><11d>: Abbrev Number: 5 \(DW_TAG_formal_parameter\)
    <11e>   DW_AT_name        : \(indirect string, offset: 0x108\): argv
    <122>   DW_AT_decl_file   : 1
    <122>   DW_AT_decl_line   : 6
    <122>   DW_AT_type        : <0x81>
    <126>   DW_AT_location    : 0x23 \(location list\)
 <2><12a>: Abbrev Number: 10 \(DW_TAG_call_site\)
    <12b>   DW_AT_call_return_pc: 0x12345
    <133>   DW_AT_call_origin : <0x157>
 <3><137>: Abbrev Number: 11 \(DW_TAG_call_site_parameter\)
    <138>   DW_AT_location    : 1 byte block: 55 	\(DW_OP_reg5 \([^()]*\)\)
    <13a>   DW_AT_call_value  : 1 byte block: 30 	\(DW_OP_lit0\)
 <3><13c>: Abbrev Number: 0
 <2><13d>: Abbrev Number: 0
 <1><13e>: Abbrev Number: 12 \(DW_TAG_subprogram\)
    <13f>   DW_AT_external    : 1
    <13f>   DW_AT_name        : \(indirect string, offset: 0xe3\): func
    <143>   DW_AT_decl_file   : 1
    <144>   DW_AT_decl_line   : 5
    <145>   DW_AT_prototyped  : 1
    <145>   DW_AT_low_pc      : 0x1234
    <14d>   DW_AT_high_pc     : 0x5678
    <155>   DW_AT_frame_base  : 1 byte block: 9c 	\(DW_OP_call_frame_cfa\)
    <157>   DW_AT_call_all_calls: 1
 <1><157>: Abbrev Number: 13 \(DW_TAG_subprogram\)
    <158>   DW_AT_external    : 1
    <158>   DW_AT_declaration : 1
    <158>   DW_AT_linkage_name: \(indirect string, offset: 0xf9\): alarm
    <15c>   DW_AT_name        : \(indirect string, offset: 0xf9\): alarm
    <160>   DW_AT_decl_file   : 2
    <161>   DW_AT_decl_line   : 435
 <1><163>: Abbrev Number: 0

Contents of the .debug_abbrev section:

  Number TAG \(0x0\)
   1      DW_TAG_base_type    \[no children\]
    DW_AT_byte_size    DW_FORM_data1
    DW_AT_encoding     DW_FORM_data1
    DW_AT_name         DW_FORM_strp
    DW_AT value: 0     DW_FORM value: 0
   2      DW_TAG_variable    \[no children\]
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_implicit_const: 3
    DW_AT_decl_line    DW_FORM_data1
    DW_AT_type         DW_FORM_ref4
    DW_AT_external     DW_FORM_flag_present
    DW_AT_declaration  DW_FORM_flag_present
    DW_AT value: 0     DW_FORM value: 0
   3      DW_TAG_pointer_type    \[no children\]
    DW_AT_byte_size    DW_FORM_implicit_const: 8
    DW_AT_type         DW_FORM_ref4
    DW_AT value: 0     DW_FORM value: 0
   4      DW_TAG_variable    \[no children\]
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_implicit_const: 1
    DW_AT_decl_line    DW_FORM_data1
    DW_AT_type         DW_FORM_ref4
    DW_AT_external     DW_FORM_flag_present
    DW_AT_location     DW_FORM_exprloc
    DW_AT value: 0     DW_FORM value: 0
   5      DW_TAG_formal_parameter    \[no children\]
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_implicit_const: 1
    DW_AT_decl_line    DW_FORM_implicit_const: 6
    DW_AT_type         DW_FORM_ref4
    DW_AT_location     DW_FORM_sec_offset
    DW_AT value: 0     DW_FORM value: 0
   6      DW_TAG_compile_unit    \[has children\]
    DW_AT_producer     DW_FORM_strp
    DW_AT_language     DW_FORM_data1
    DW_AT_name         DW_FORM_line_strp
    DW_AT_comp_dir     DW_FORM_line_strp
    DW_AT_ranges       DW_FORM_sec_offset
    DW_AT_low_pc       DW_FORM_addr
    DW_AT_stmt_list    DW_FORM_sec_offset
    DW_AT value: 0     DW_FORM value: 0
   7      DW_TAG_base_type    \[no children\]
    DW_AT_byte_size    DW_FORM_data1
    DW_AT_encoding     DW_FORM_data1
    DW_AT_name         DW_FORM_string
    DW_AT value: 0     DW_FORM value: 0
   8      DW_TAG_variable    \[no children\]
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_data1
    DW_AT_decl_line    DW_FORM_data2
    DW_AT_type         DW_FORM_ref4
    DW_AT_external     DW_FORM_flag_present
    DW_AT_declaration  DW_FORM_flag_present
    DW_AT value: 0     DW_FORM value: 0
   9      DW_TAG_subprogram    \[has children\]
    DW_AT_external     DW_FORM_flag_present
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_data1
    DW_AT_decl_line    DW_FORM_data1
    DW_AT_prototyped   DW_FORM_flag_present
    DW_AT_type         DW_FORM_ref4
    DW_AT_low_pc       DW_FORM_addr
    DW_AT_high_pc      DW_FORM_data8
    DW_AT_frame_base   DW_FORM_exprloc
    DW_AT_call_all_calls DW_FORM_flag_present
    DW_AT_sibling      DW_FORM_ref4
    DW_AT value: 0     DW_FORM value: 0
   10      DW_TAG_call_site    \[has children\]
    DW_AT_call_return_pc DW_FORM_addr
    DW_AT_call_origin  DW_FORM_ref4
    DW_AT value: 0     DW_FORM value: 0
   11      DW_TAG_call_site_parameter    \[no children\]
    DW_AT_location     DW_FORM_exprloc
    DW_AT_call_value   DW_FORM_exprloc
    DW_AT value: 0     DW_FORM value: 0
   12      DW_TAG_subprogram    \[no children\]
    DW_AT_external     DW_FORM_flag_present
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_data1
    DW_AT_decl_line    DW_FORM_data1
    DW_AT_prototyped   DW_FORM_flag_present
    DW_AT_low_pc       DW_FORM_addr
    DW_AT_high_pc      DW_FORM_data8
    DW_AT_frame_base   DW_FORM_exprloc
    DW_AT_call_all_calls DW_FORM_flag_present
    DW_AT value: 0     DW_FORM value: 0
   13      DW_TAG_subprogram    \[no children\]
    DW_AT_external     DW_FORM_flag_present
    DW_AT_declaration  DW_FORM_flag_present
    DW_AT_linkage_name DW_FORM_strp
    DW_AT_name         DW_FORM_strp
    DW_AT_decl_file    DW_FORM_data1
    DW_AT_decl_line    DW_FORM_data2
    DW_AT value: 0     DW_FORM value: 0
#...
Contents of the .debug_loclists section:
#...
    Offset   Begin            End              Expression
    0000000c 0000000000001234 \(base address\)
    00000015 0000000000001234 0000000000001236 \(DW_OP_reg5 \([^()]*\)\)
    0000001a 0000000000001236 0000000000001239 \(DW_OP_entry_value: \(DW_OP_reg5 \([^()]*\)\); DW_OP_stack_value\)
    00000022 <End of list>
    00000023 0000000000001234 \(base address\)
    0000002c 0000000000001234 0000000000001236 \(DW_OP_reg4 \([^()]*\)\)
    00000031 0000000000001236 0000000000001239 \(DW_OP_entry_value: \(DW_OP_reg4 \([^()]*\)\); DW_OP_stack_value\)
    00000039 <End of list>

Contents of the .debug_rnglists section:

    Offset   Begin    End
    0000000c 0000000000001234 0000000000001236 
    00000016 0000000000001234 0000000000001239 
    00000020 <End of list>

Raw dump of debug contents of section .debug_line:

  Offset:                      0x0
  Length:                      144
  DWARF Version:               5
  Prologue Length:             60
  Minimum Instruction Length:  1
  Maximum Ops per Instruction: 1
  Initial value of 'is_stmt':  1
  Line Base:                   -10
  Line Range:                  242
  Opcode Base:                 13

 Opcodes:
  Opcode 1 has 0 args
  Opcode 2 has 1 args
  Opcode 3 has 1 args
  Opcode 4 has 1 args
  Opcode 5 has 1 args
  Opcode 6 has 0 args
  Opcode 7 has 0 args
  Opcode 8 has 0 args
  Opcode 9 has 1 args
  Opcode 10 has 0 args
  Opcode 11 has 0 args
  Opcode 12 has 1 args

 The Directory Table \(offset 0x22\):
  Entry	Name
  0	\(indirect line string, offset: 0x0\): 
  1	\(indirect line string, offset: 0x1\): 
  2	\(indirect line string, offset: 0x22\): /usr/include

 The File name Table \(offset 0x34\):
  Entry	Dir	Name
  0	0	\(indirect line string, offset: 0x14\): main.c
  1	1	\(indirect line string, offset: 0x1b\): main.c
  2	2	\(indirect line string, offset: 0xb\): unistd.h
  3	2	\(indirect line string, offset: 0x2\): getopt.h

 Line Number Statements:
  \[0x00000048\]  Extended opcode 2: set Address to 0x1234
  \[0x00000053\]  Special opcode 15: advance Address by 0 to 0x1234 and Line by 5 to 6
  \[0x00000054\]  Extended opcode 2: set Address to 0x12346
  \[0x0000005f\]  Copy
  \[0x00000060\]  Extended opcode 2: set Address to 0x1234
  \[0x0000006b\]  Extended opcode 1: End of Sequence

  \[0x0000006e\]  Extended opcode 2: set Address to 0x1234
  \[0x00000079\]  Special opcode 14: advance Address by 0 to 0x1234 and Line by 4 to 5
  \[0x0000007a\]  Extended opcode 2: set Address to 0x1234
  \[0x00000085\]  Copy
  \[0x00000086\]  Extended opcode 2: set Address to 0x1234
  \[0x00000091\]  Extended opcode 1: End of Sequence


Decoded dump of debug contents of section .debug_line:

CU: ./main.c:
File name                            Line number    Starting address    View
main.c                                         6              0x1234
main.c                                         6             0x12346
main.c                                         6              0x1234

main.c                                         5              0x1234
main.c                                         5              0x1234
main.c                                         5              0x1234