09dd45ef5947b641c0dac01194976f0801e26fe7
[external/binutils.git] / gdb / testsuite / gdb.dwarf2 / implptr-64bit.S
1 /* Copyright 2010-2016 Free Software Foundation, Inc.
2
3    This program is free software; you can redistribute it and/or modify
4    it under the terms of the GNU General Public License as published by
5    the Free Software Foundation; either version 3 of the License, or
6    (at your option) any later version.
7
8    This program is distributed in the hope that it will be useful,
9    but WITHOUT ANY WARRANTY; without even the implied warranty of
10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11    GNU General Public License for more details.
12
13    You should have received a copy of the GNU General Public License
14    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
15
16         .section        .debug_info
17 d:
18         /* Length of Compilation Unit Info */
19 #if OFFSET_SIZE == 4
20 # define OFFSET .4byte
21 # define HEADER_LINE1
22 # define HEADER_LINE2(END) .4byte       END - 1f
23 #elif OFFSET_SIZE == 8
24 # define OFFSET .8byte
25 # define HEADER_LINE1 .4byte    0xffffffff
26 # define HEADER_LINE2(END) .8byte       END - 1f
27 #else
28 # error
29 #endif
30 #if ADDR_SIZE == 4
31 # define ADDR .4byte
32 #elif ADDR_SIZE == 8
33 # define ADDR .8byte
34 #else
35 # error
36 #endif
37 #if REF_ADDR_SIZE == 4
38 # define REF_ADDR .4byte
39 #elif REF_ADDR_SIZE == 8
40 # define REF_ADDR .8byte
41 #else
42 # error
43 #endif
44         
45 #if TWO_CU
46 # define END1 .Lcu_end_1
47 #else
48 # define END1 debug_end
49 #endif
50
51         HEADER_LINE1
52         HEADER_LINE2(END1)
53
54 1:
55         .2byte  DWARF_VERSION   /* DWARF version number */
56         OFFSET  .Ldebug_abbrev0 /* Offset Into Abbrev. Section */
57         .byte   ADDR_SIZE       /* Pointer Size (in bytes) */
58
59         .uleb128 0x1    /* (DIE (0xb) DW_TAG_compile_unit) */
60         .ascii "GNU C 4.4.3\0"  /* DW_AT_producer */
61         .byte   0x1     /* DW_AT_language */
62         .ascii "1.c\0"  /* DW_AT_name */
63
64 .Ltype_int:
65         .uleb128 0x7    /* DW_TAG_base_type */
66         .byte   0x4     /* DW_AT_byte_size */
67         .byte   0x5     /* DW_AT_encoding */
68         .ascii "int\0"  /* DW_AT_name */
69
70 .Ltype_struct:
71         .uleb128 0x2    /* DW_TAG_structure_type */
72         .ascii "s\0"    /* DW_AT_name */
73         .byte   4       /* DW_AT_byte_size */
74
75         .uleb128 0x3    /* DW_TAG_member */
76         .ascii "f\0"    /* DW_AT_name */
77         .4byte  .Ltype_int - d  /* DW_AT_type */
78         .byte   0       /* DW_AT_data_member_location */
79
80         .byte   0x0     /* end of children of DW_TAG_structure_type */
81
82 .Ltype_structptr:
83         .uleb128 0x5    /* DW_TAG_pointer_type */
84         .byte   ADDR_SIZE       /* DW_AT_byte_size */
85         .4byte  .Ltype_struct - d       /* DW_AT_type */
86
87 .Lvar_out:
88         .uleb128 0x4    /* (DW_TAG_variable) */
89         .ascii "v\0"    /* DW_AT_name */
90         .byte   2f - 1f /* DW_AT_location: DW_FORM_block1 */
91 1:
92         .byte   0x9e    /* DW_OP_implicit_value */
93         .uleb128  2f - 3f
94 3:
95         .byte   1, 1, 1, 1
96 2:
97         REF_ADDR        .Ltype_struct - d       /* DW_AT_type */
98
99 #if TWO_CU
100         .byte   0x0     /* end of children of CU */
101 .Lcu_end_1:
102
103         HEADER_LINE1
104         HEADER_LINE2 (debug_end)
105
106 1:
107         .2byte  DWARF_VERSION   /* DWARF version number */
108         OFFSET  .Ldebug_abbrev0 /* Offset Into Abbrev. Section */
109         .byte   ADDR_SIZE       /* Pointer Size (in bytes) */
110
111         .uleb128 0x1    /* (DIE (0xb) DW_TAG_compile_unit) */
112         .ascii "GNU C 4.4.3\0"  /* DW_AT_producer */
113         .byte   0x1     /* DW_AT_language */
114         .ascii "1.c\0"  /* DW_AT_name */
115 #endif
116
117         .uleb128        6                       /* Abbrev: DW_TAG_subprogram */
118         .ascii          "main\0"                /* DW_AT_name */
119         ADDR            main                    /* DW_AT_low_pc */
120         ADDR            main + 0x100            /* DW_AT_high_pc */
121         REF_ADDR        .Ltype_int - d          /* DW_AT_type */
122         .byte           1                       /* DW_AT_external */
123
124         .uleb128 0x4    /* (DW_TAG_variable) */
125         .ascii "p\0"    /* DW_AT_name */
126         .byte   2f - 1f /* DW_AT_location: DW_FORM_block1 */
127 1:
128         .byte   0xf2    /* DW_OP_GNU_implicit_pointer */
129         REF_ADDR        .Lvar_out - d   /* referenced DIE */
130         .sleb128        0       /* offset */
131 2:
132         REF_ADDR        .Ltype_structptr - d    /* DW_AT_type */
133
134         .byte   0x0     /* end of children of main */
135
136         .byte   0x0     /* end of children of CU */
137 debug_end:
138
139         .section        .debug_abbrev
140 .Ldebug_abbrev0:
141
142         .uleb128 0x1    /* (abbrev code) */
143         .uleb128 0x11   /* (TAG: DW_TAG_compile_unit) */
144         .byte   0x1     /* DW_children_yes */
145         .uleb128 0x25   /* (DW_AT_producer) */
146         .uleb128 0x8    /* (DW_FORM_string) */
147         .uleb128 0x13   /* (DW_AT_language) */
148         .uleb128 0xb    /* (DW_FORM_data1) */
149         .uleb128 0x3    /* (DW_AT_name) */
150         .uleb128 0x8    /* (DW_FORM_string) */
151         .byte   0x0
152         .byte   0x0
153
154         .uleb128 0x2    /* (abbrev code) */
155         .uleb128 0x13   /* (TAG: DW_TAG_structure_type) */
156         .byte   0x1     /* DW_children_yes */
157         .uleb128 0x3    /* (DW_AT_name) */
158         .uleb128 0x8    /* (DW_FORM_string) */
159         .uleb128 0xb    /* (DW_AT_byte_size) */
160         .uleb128 0xb    /* (DW_FORM_data1) */
161         .byte   0
162         .byte   0
163
164         .uleb128 0x3    /* (abbrev code) */
165         .uleb128 0xd    /* (TAG: DW_TAG_member) */
166         .byte   0       /* DW_children_no */
167         .uleb128 0x3    /* (DW_AT_name) */
168         .uleb128 0x8    /* (DW_FORM_string) */
169         .uleb128 0x49   /* (DW_AT_type) */
170         .uleb128 0x13   /* (DW_FORM_ref4) */
171         .uleb128 0x38   /* (DW_AT_data_member_location) */
172         .uleb128 0xb    /* (DW_FORM_data1) */
173         .byte   0
174         .byte   0
175
176         .uleb128 0x4    /* (abbrev code) */
177         .uleb128 0x34   /* (TAG: DW_TAG_variable) */
178         .byte   0x0     /* DW_children_yes */
179         .uleb128 0x3    /* (DW_AT_name) */
180         .uleb128 0x8    /* (DW_FORM_string) */
181         .uleb128 0x02   /* (DW_AT_location) */
182         .uleb128 0xa    /* (DW_FORM_block1) */
183         .uleb128 0x49   /* (DW_AT_type) */
184         .uleb128 0x10   /* (DW_FORM_ref_addr) */
185         .byte   0x0
186         .byte   0x0
187
188         .uleb128 0x5    /* (abbrev code) */
189         .uleb128 0xf    /* (TAG: DW_TAG_pointer_type) */
190         .byte   0x0     /* DW_children_no */
191         .uleb128 0xb    /* (DW_AT_byte_size) */
192         .uleb128 0xb    /* (DW_FORM_data1) */
193         .uleb128 0x49   /* (DW_AT_type) */
194         .uleb128 0x13   /* (DW_FORM_ref4) */
195         .byte   0x0
196         .byte   0x0
197
198         .uleb128        6                       /* Abbrev code */
199         .uleb128        0x2e                    /* DW_TAG_subprogram */
200         .byte           1                       /* has_children */
201         .uleb128        0x3                     /* DW_AT_name */
202         .uleb128        0x8                     /* DW_FORM_string */
203         .uleb128        0x11                    /* DW_AT_low_pc */
204         .uleb128        0x1                     /* DW_FORM_addr */
205         .uleb128        0x12                    /* DW_AT_high_pc */
206         .uleb128        0x1                     /* DW_FORM_addr */
207         .uleb128        0x49                    /* DW_AT_type */
208         .uleb128        0x10                    /* DW_FORM_ref_addr */
209         .uleb128        0x3f                    /* DW_AT_external */
210         .uleb128        0xc                     /* DW_FORM_flag */
211         .byte           0x0                     /* Terminator */
212         .byte           0x0                     /* Terminator */
213
214         .uleb128 0x7    /* (abbrev code) */
215         .uleb128 0x24   /* (TAG: DW_TAG_base_type) */
216         .byte   0       /* DW_children_no */
217         .uleb128 0xb    /* (DW_AT_byte_size) */
218         .uleb128 0xb    /* (DW_FORM_data1) */
219         .uleb128 0x3e   /* (DW_AT_encoding) */
220         .uleb128 0xb    /* (DW_FORM_data1) */
221         .uleb128 0x3    /* (DW_AT_name) */
222         .uleb128 0x8    /* (DW_FORM_string) */
223         .byte   0
224         .byte   0
225
226         .byte   0x0