1*11efff7fSkettenis/* This testcase is part of GDB, the GNU debugger.
2*11efff7fSkettenis
3*11efff7fSkettenis   Copyright 2004 Free Software Foundation, Inc.
4*11efff7fSkettenis
5*11efff7fSkettenis   This program is free software; you can redistribute it and/or modify
6*11efff7fSkettenis   it under the terms of the GNU General Public License as published by
7*11efff7fSkettenis   the Free Software Foundation; either version 2 of the License, or
8*11efff7fSkettenis   (at your option) any later version.
9*11efff7fSkettenis
10*11efff7fSkettenis   This program is distributed in the hope that it will be useful,
11*11efff7fSkettenis   but WITHOUT ANY WARRANTY; without even the implied warranty of
12*11efff7fSkettenis   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*11efff7fSkettenis   GNU General Public License for more details.
14*11efff7fSkettenis
15*11efff7fSkettenis   You should have received a copy of the GNU General Public License
16*11efff7fSkettenis   along with this program; if not, write to the Free Software
17*11efff7fSkettenis   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
18*11efff7fSkettenis   USA.  */
19*11efff7fSkettenis
20*11efff7fSkettenis/* Test a minimal file containing DWARF-2 information.  This test also
21*11efff7fSkettenis   serves as a skeleton for other DWARF-2 tests.  Most other tests will
22*11efff7fSkettenis   not be this extensively itemized and commented...  */
23*11efff7fSkettenis
24*11efff7fSkettenis/* Dummy function to provide debug information for.  */
25*11efff7fSkettenis
26*11efff7fSkettenis	.text
27*11efff7fSkettenis.Lbegin_text1:
28*11efff7fSkettenis	.globl func_cu1
29*11efff7fSkettenis	.type func_cu1, %function
30*11efff7fSkettenisfunc_cu1:
31*11efff7fSkettenis.Lbegin_func_cu1:
32*11efff7fSkettenis	.int 0
33*11efff7fSkettenis.Lend_func_cu1:
34*11efff7fSkettenis	.size func_cu1, .-func_cu1
35*11efff7fSkettenis.Lend_text1:
36*11efff7fSkettenis
37*11efff7fSkettenis/* Debug information */
38*11efff7fSkettenis
39*11efff7fSkettenis	.section .debug_info
40*11efff7fSkettenis.Lcu1_begin:
41*11efff7fSkettenis	/* CU header */
42*11efff7fSkettenis	.int	.Lcu1_end - .Lcu1_start		/* Length of Compilation Unit */
43*11efff7fSkettenis.Lcu1_start:
44*11efff7fSkettenis	.short	2				/* DWARF Version */
45*11efff7fSkettenis	.int	.Labbrev1_begin			/* Offset into abbrev section */
46*11efff7fSkettenis	.byte	4				/* Pointer size */
47*11efff7fSkettenis
48*11efff7fSkettenis	/* CU die */
49*11efff7fSkettenis	.uleb128 1				/* Abbrev: DW_TAG_compile_unit */
50*11efff7fSkettenis	.int	.Lline1_begin			/* DW_AT_stmt_list */
51*11efff7fSkettenis	.int	.Lend_text1			/* DW_AT_high_pc */
52*11efff7fSkettenis	.int	.Lbegin_text1			/* DW_AT_low_pc */
53*11efff7fSkettenis	.ascii	"file1.txt\0"			/* DW_AT_name */
54*11efff7fSkettenis	.ascii	"GNU C 3.3.3\0"			/* DW_AT_producer */
55*11efff7fSkettenis	.byte	1				/* DW_AT_language (C) */
56*11efff7fSkettenis
57*11efff7fSkettenis	/* func_cu1 */
58*11efff7fSkettenis	.uleb128	2			/* Abbrev: DW_TAG_subprogram */
59*11efff7fSkettenis	.byte		1			/* DW_AT_external */
60*11efff7fSkettenis	.byte		1			/* DW_AT_decl_file */
61*11efff7fSkettenis	.byte		2			/* DW_AT_decl_line */
62*11efff7fSkettenis	.ascii		"func_cu1\0"		/* DW_AT_name */
63*11efff7fSkettenis	.int		.Ltype_int		/* DW_AT_type */
64*11efff7fSkettenis	.int		.Lbegin_func_cu1	/* DW_AT_low_pc */
65*11efff7fSkettenis	.int		.Lend_func_cu1		/* DW_AT_high_pc */
66*11efff7fSkettenis	.byte		1			/* DW_AT_frame_base: length */
67*11efff7fSkettenis	.byte		0x55			/* DW_AT_frame_base: DW_OP_reg5 */
68*11efff7fSkettenis
69*11efff7fSkettenis	.byte		0			/* End of children of CU */
70*11efff7fSkettenis
71*11efff7fSkettenis.Lcu1_end:
72*11efff7fSkettenis
73*11efff7fSkettenis	/* Second compilation unit.  */
74*11efff7fSkettenis.Lcu2_begin:
75*11efff7fSkettenis	/* CU header */
76*11efff7fSkettenis	.int	.Lcu2_end - .Lcu2_start		/* Length of Compilation Unit */
77*11efff7fSkettenis.Lcu2_start:
78*11efff7fSkettenis	.short	2				/* DWARF Version */
79*11efff7fSkettenis	.int	.Labbrev2_begin			/* Offset into abbrev section */
80*11efff7fSkettenis	.byte	4				/* Pointer size */
81*11efff7fSkettenis
82*11efff7fSkettenis	/* CU die */
83*11efff7fSkettenis	.uleb128 1				/* Abbrev: DW_TAG_compile_unit */
84*11efff7fSkettenis	.ascii	"file1.txt\0"			/* DW_AT_name */
85*11efff7fSkettenis	.ascii	"GNU C 3.3.3\0"			/* DW_AT_producer */
86*11efff7fSkettenis	.byte	1				/* DW_AT_language (C) */
87*11efff7fSkettenis
88*11efff7fSkettenis.Ltype_int:
89*11efff7fSkettenis	.uleb128	2			/* Abbrev: DW_TAG_base_type */
90*11efff7fSkettenis	.ascii		"int\0"			/* DW_AT_name */
91*11efff7fSkettenis	.byte		4			/* DW_AT_byte_size */
92*11efff7fSkettenis	.byte		5			/* DW_AT_encoding */
93*11efff7fSkettenis
94*11efff7fSkettenis	.byte		0			/* End of children of CU */
95*11efff7fSkettenis
96*11efff7fSkettenis.Lcu2_end:
97*11efff7fSkettenis
98*11efff7fSkettenis/* Abbrev table */
99*11efff7fSkettenis	.section .debug_abbrev
100*11efff7fSkettenis.Labbrev1_begin:
101*11efff7fSkettenis	.uleb128	1			/* Abbrev code */
102*11efff7fSkettenis	.uleb128	0x11			/* DW_TAG_compile_unit */
103*11efff7fSkettenis	.byte		1			/* has_children */
104*11efff7fSkettenis	.uleb128	0x10			/* DW_AT_stmt_list */
105*11efff7fSkettenis	.uleb128	0x6			/* DW_FORM_data4 */
106*11efff7fSkettenis	.uleb128	0x12			/* DW_AT_high_pc */
107*11efff7fSkettenis	.uleb128	0x1			/* DW_FORM_addr */
108*11efff7fSkettenis	.uleb128	0x11			/* DW_AT_low_pc */
109*11efff7fSkettenis	.uleb128	0x1			/* DW_FORM_addr */
110*11efff7fSkettenis	.uleb128	0x3			/* DW_AT_name */
111*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
112*11efff7fSkettenis	.uleb128	0x25			/* DW_AT_producer */
113*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
114*11efff7fSkettenis	.uleb128	0x13			/* DW_AT_language */
115*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
116*11efff7fSkettenis	.byte		0x0			/* Terminator */
117*11efff7fSkettenis	.byte		0x0			/* Terminator */
118*11efff7fSkettenis
119*11efff7fSkettenis	.uleb128	2			/* Abbrev code */
120*11efff7fSkettenis	.uleb128	0x2e			/* DW_TAG_subprogram */
121*11efff7fSkettenis	.byte		0			/* has_children */
122*11efff7fSkettenis	.uleb128	0x3f			/* DW_AT_external */
123*11efff7fSkettenis	.uleb128	0xc			/* DW_FORM_flag */
124*11efff7fSkettenis	.uleb128	0x3a			/* DW_AT_decl_file */
125*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
126*11efff7fSkettenis	.uleb128	0x3b			/* DW_AT_decl_line */
127*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
128*11efff7fSkettenis	.uleb128	0x3			/* DW_AT_name */
129*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
130*11efff7fSkettenis	.uleb128	0x49			/* DW_AT_type */
131*11efff7fSkettenis	.uleb128	0x10			/* DW_FORM_ref_addr */
132*11efff7fSkettenis	.uleb128	0x11			/* DW_AT_low_pc */
133*11efff7fSkettenis	.uleb128	0x1			/* DW_FORM_addr */
134*11efff7fSkettenis	.uleb128	0x12			/* DW_AT_high_pc */
135*11efff7fSkettenis	.uleb128	0x1			/* DW_FORM_addr */
136*11efff7fSkettenis	.uleb128	0x40			/* DW_AT_frame_base */
137*11efff7fSkettenis	.uleb128	0xa			/* DW_FORM_block1 */
138*11efff7fSkettenis	.byte		0x0			/* Terminator */
139*11efff7fSkettenis	.byte		0x0			/* Terminator */
140*11efff7fSkettenis
141*11efff7fSkettenis	.byte		0x0			/* Terminator */
142*11efff7fSkettenis	.byte		0x0			/* Terminator */
143*11efff7fSkettenis
144*11efff7fSkettenis.Labbrev2_begin:
145*11efff7fSkettenis	.uleb128	1			/* Abbrev code */
146*11efff7fSkettenis	.uleb128	0x11			/* DW_TAG_compile_unit */
147*11efff7fSkettenis	.byte		1			/* has_children */
148*11efff7fSkettenis	.uleb128	0x3			/* DW_AT_name */
149*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
150*11efff7fSkettenis	.uleb128	0x25			/* DW_AT_producer */
151*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
152*11efff7fSkettenis	.uleb128	0x13			/* DW_AT_language */
153*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
154*11efff7fSkettenis	.byte		0x0			/* Terminator */
155*11efff7fSkettenis	.byte		0x0			/* Terminator */
156*11efff7fSkettenis
157*11efff7fSkettenis	.uleb128	2			/* Abbrev code */
158*11efff7fSkettenis	.uleb128	0x24			/* DW_TAG_base_type */
159*11efff7fSkettenis	.byte		0			/* has_children */
160*11efff7fSkettenis	.uleb128	0x3			/* DW_AT_name */
161*11efff7fSkettenis	.uleb128	0x8			/* DW_FORM_string */
162*11efff7fSkettenis	.uleb128	0xb			/* DW_AT_byte_size */
163*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
164*11efff7fSkettenis	.uleb128	0x3e			/* DW_AT_encoding */
165*11efff7fSkettenis	.uleb128	0xb			/* DW_FORM_data1 */
166*11efff7fSkettenis	.byte		0x0			/* Terminator */
167*11efff7fSkettenis	.byte		0x0			/* Terminator */
168*11efff7fSkettenis
169*11efff7fSkettenis	.byte		0x0			/* Terminator */
170*11efff7fSkettenis	.byte		0x0			/* Terminator */
171*11efff7fSkettenis
172*11efff7fSkettenis/* Line table */
173*11efff7fSkettenis	.section .debug_line
174*11efff7fSkettenis.Lline1_begin:
175*11efff7fSkettenis	.int		.Lline1_end - .Lline1_start	/* Initial length */
176*11efff7fSkettenis.Lline1_start:
177*11efff7fSkettenis	.short		2			/* Version */
178*11efff7fSkettenis	.int		.Lline1_lines - .Lline1_hdr	/* header_length */
179*11efff7fSkettenis.Lline1_hdr:
180*11efff7fSkettenis	.byte		1			/* Minimum insn length */
181*11efff7fSkettenis	.byte		1			/* default_is_stmt */
182*11efff7fSkettenis	.byte		1			/* line_base */
183*11efff7fSkettenis 	.byte		1			/* line_range */
184*11efff7fSkettenis	.byte		0x10			/* opcode_base */
185*11efff7fSkettenis
186*11efff7fSkettenis	/* Standard lengths */
187*11efff7fSkettenis	.byte		0
188*11efff7fSkettenis	.byte		1
189*11efff7fSkettenis	.byte		1
190*11efff7fSkettenis	.byte		1
191*11efff7fSkettenis	.byte		1
192*11efff7fSkettenis	.byte		0
193*11efff7fSkettenis	.byte		0
194*11efff7fSkettenis	.byte		0
195*11efff7fSkettenis	.byte		1
196*11efff7fSkettenis	.byte		0
197*11efff7fSkettenis	.byte		0
198*11efff7fSkettenis	.byte		1
199*11efff7fSkettenis	.byte		0
200*11efff7fSkettenis	.byte		0
201*11efff7fSkettenis	.byte		0
202*11efff7fSkettenis
203*11efff7fSkettenis	/* Include directories */
204*11efff7fSkettenis	.byte		0
205*11efff7fSkettenis
206*11efff7fSkettenis	/* File names */
207*11efff7fSkettenis	.ascii		"file1.txt\0"
208*11efff7fSkettenis	.uleb128	0
209*11efff7fSkettenis	.uleb128	0
210*11efff7fSkettenis	.uleb128	0
211*11efff7fSkettenis
212*11efff7fSkettenis	.byte		0
213*11efff7fSkettenis
214*11efff7fSkettenis.Lline1_lines:
215*11efff7fSkettenis	.byte		0	/* DW_LNE_set_address */
216*11efff7fSkettenis	.uleb128	5
217*11efff7fSkettenis	.byte		2
218*11efff7fSkettenis	.int		.Lbegin_func_cu1
219*11efff7fSkettenis
220*11efff7fSkettenis	.byte		3	/* DW_LNS_advance_line */
221*11efff7fSkettenis	.sleb128	3	/* ... to 4 */
222*11efff7fSkettenis
223*11efff7fSkettenis	.byte		1	/* DW_LNS_copy */
224*11efff7fSkettenis
225*11efff7fSkettenis	.byte		1	/* DW_LNS_copy (second time as an end-of-prologue marker) */
226*11efff7fSkettenis
227*11efff7fSkettenis	.byte		0	/* DW_LNE_set_address */
228*11efff7fSkettenis	.uleb128	5
229*11efff7fSkettenis	.byte		2
230*11efff7fSkettenis	.int		.Lend_func_cu1
231*11efff7fSkettenis
232*11efff7fSkettenis	.byte		0	/* DW_LNE_end_of_sequence */
233*11efff7fSkettenis	.uleb128	1
234*11efff7fSkettenis	.byte		1
235*11efff7fSkettenis
236*11efff7fSkettenis.Lline1_end:
237