]>
Commit | Line | Data |
---|---|---|
5a03b7c3 MT |
1 | http://sourceware.org/ml/gdb-patches/2011-07/msg00645.html |
2 | Subject: [patch] workaround gcc46: prologue skip skips too far (PR 12435) #2 | |
3 | ||
4 | Hi, | |
5 | ||
6 | this is an improved patch of a former: | |
7 | [patch] workaround gcc46: prologue skip skips too far (PR 12435) | |
8 | http://sourceware.org/ml/gdb-patches/2011-03/msg01108.html | |
9 | cancel/FYI: Re: [patch] workaround gcc46: prologue skip skips too far (PR 12435) | |
10 | http://sourceware.org/ml/gdb-patches/2011-03/msg01123.html | |
11 | ||
12 | For example `break error' does not work for debugging GDB with gcc-4.6.x. | |
13 | ||
14 | As gcc-4.6.0 and now even 4.6.1 still has this bug and I have seen a user(s?) | |
15 | on non-Fedora platform asking about this bug and as there may be enough | |
16 | binaries out there (although it affects only -O0 -g compilation) coded it | |
17 | properly I have coded the workaround properly this time. | |
18 | ||
19 | It does not solve overlays well, but the code just does not work for overlays, | |
20 | it has no other negative effect. | |
21 | ||
22 | I will update the code after FSF gcc gets fixed to minimize the workaround. | |
23 | ||
24 | No regressions on {x86_64,x86_64-m32,i686}-fedora16pre-linux-gnu. | |
25 | ||
26 | I would welcome a comment whether it is suitable for FSF GDB. | |
27 | ||
28 | ||
29 | Thanks, | |
30 | Jan | |
31 | ||
32 | ||
33 | gdb/ | |
34 | 2011-07-22 Jan Kratochvil <jan.kratochvil@redhat.com> | |
35 | ||
36 | PR breakpoints/12435 | |
37 | * amd64-tdep.c (amd64_skip_prologue): New variables start_pc_sal, | |
38 | next_sal, buf, offset and xmmreg. Advance PC if it sees the PR. | |
39 | * dwarf2read.c (process_full_comp_unit): Initialize | |
40 | amd64_prologue_line_bug. | |
41 | * symtab.h (struct symtab): New field amd64_prologue_line_bug. | |
42 | ||
43 | gdb/testsuite/ | |
44 | 2011-07-22 Jan Kratochvil <jan.kratochvil@redhat.com> | |
45 | ||
46 | PR breakpoints/12435 | |
47 | * gdb.arch/amd64-prologue-xmm.c: New file. | |
48 | * gdb.arch/amd64-prologue-xmm.exp: New file. | |
49 | * gdb.arch/amd64-prologue-xmm.s: New file. | |
50 | ||
51 | --- a/gdb/amd64-tdep.c | |
52 | +++ b/gdb/amd64-tdep.c | |
53 | @@ -1902,6 +1902,9 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) | |
54 | { | |
55 | struct amd64_frame_cache cache; | |
56 | CORE_ADDR pc; | |
57 | + struct symtab_and_line start_pc_sal, next_sal; | |
58 | + gdb_byte buf[4 + 8 * 7]; | |
59 | + int offset, xmmreg; | |
60 | ||
61 | amd64_init_frame_cache (&cache); | |
62 | pc = amd64_analyze_prologue (gdbarch, start_pc, 0xffffffffffffffffLL, | |
63 | @@ -1909,7 +1912,71 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) | |
64 | if (cache.frameless_p) | |
65 | return start_pc; | |
66 | ||
67 | - return pc; | |
68 | + /* GCC PR debug/48827 produced false prologue end: | |
69 | + 84 c0 test %al,%al | |
70 | + 74 23 je after | |
71 | + <-- here is 0 lines advance - the false prologue end marker. | |
72 | + 0f 29 85 70 ff ff ff movaps %xmm0,-0x90(%rbp) | |
73 | + 0f 29 4d 80 movaps %xmm1,-0x80(%rbp) | |
74 | + 0f 29 55 90 movaps %xmm2,-0x70(%rbp) | |
75 | + 0f 29 5d a0 movaps %xmm3,-0x60(%rbp) | |
76 | + 0f 29 65 b0 movaps %xmm4,-0x50(%rbp) | |
77 | + 0f 29 6d c0 movaps %xmm5,-0x40(%rbp) | |
78 | + 0f 29 75 d0 movaps %xmm6,-0x30(%rbp) | |
79 | + 0f 29 7d e0 movaps %xmm7,-0x20(%rbp) | |
80 | + after: */ | |
81 | + | |
82 | + if (pc == start_pc) | |
83 | + return pc; | |
84 | + | |
85 | + start_pc_sal = find_pc_sect_line (start_pc, NULL, 0); | |
86 | + if (start_pc_sal.symtab == NULL | |
87 | + || !start_pc_sal.symtab->amd64_prologue_line_bug | |
88 | + || start_pc_sal.pc != start_pc || pc >= start_pc_sal.end) | |
89 | + return pc; | |
90 | + | |
91 | + next_sal = find_pc_sect_line (start_pc_sal.end, NULL, 0); | |
92 | + if (next_sal.line != start_pc_sal.line) | |
93 | + return pc; | |
94 | + | |
95 | + /* START_PC can be from overlayed memory, ignored here. */ | |
96 | + if (target_read_memory (next_sal.pc - 4, buf, sizeof (buf)) != 0) | |
97 | + return pc; | |
98 | + | |
99 | + /* test %al,%al */ | |
100 | + if (buf[0] != 0x84 || buf[1] != 0xc0) | |
101 | + return pc; | |
102 | + /* je AFTER */ | |
103 | + if (buf[2] != 0x74) | |
104 | + return pc; | |
105 | + | |
106 | + offset = 4; | |
107 | + for (xmmreg = 0; xmmreg < 8; xmmreg++) | |
108 | + { | |
109 | + /* movaps %xmmreg?,-0x??(%rbp) */ | |
110 | + if (buf[offset] != 0x0f || buf[offset + 1] != 0x29 | |
111 | + || (buf[offset + 2] & 0b00111111) != (xmmreg << 3 | 0b101)) | |
112 | + return pc; | |
113 | + | |
114 | + if ((buf[offset + 2] & 0b11000000) == 0b01000000) | |
115 | + { | |
116 | + /* 8-bit displacement. */ | |
117 | + offset += 4; | |
118 | + } | |
119 | + else if ((buf[offset + 2] & 0b11000000) == 0b10000000) | |
120 | + { | |
121 | + /* 32-bit displacement. */ | |
122 | + offset += 7; | |
123 | + } | |
124 | + else | |
125 | + return pc; | |
126 | + } | |
127 | + | |
128 | + /* je AFTER */ | |
129 | + if (offset - 4 != buf[3]) | |
130 | + return pc; | |
131 | + | |
132 | + return next_sal.end; | |
133 | } | |
134 | \f | |
135 | ||
136 | --- a/gdb/dwarf2read.c | |
137 | +++ b/gdb/dwarf2read.c | |
138 | @@ -4818,6 +4818,9 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu) | |
139 | ||
140 | if (gcc_4_minor >= 5) | |
141 | symtab->epilogue_unwind_valid = 1; | |
142 | + | |
143 | + if (gcc_4_minor >= 6) | |
144 | + symtab->amd64_prologue_line_bug = 1; | |
145 | } | |
146 | ||
147 | if (dwarf2_per_objfile->using_index) | |
148 | --- a/gdb/symtab.h | |
149 | +++ b/gdb/symtab.h | |
150 | @@ -784,6 +784,11 @@ struct symtab | |
151 | ||
152 | unsigned int epilogue_unwind_valid : 1; | |
153 | ||
154 | + /* At least GCC 4.6.0 and 4.6.1 can produce invalid false prologue and marker | |
155 | + on amd64. This flag is set independently of the symtab arch. */ | |
156 | + | |
157 | + unsigned amd64_prologue_line_bug : 1; | |
158 | + | |
159 | /* The macro table for this symtab. Like the blockvector, this | |
160 | may be shared between different symtabs --- and normally is for | |
161 | all the symtabs in a given compilation unit. */ | |
162 | --- /dev/null | |
163 | +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c | |
164 | @@ -0,0 +1,38 @@ | |
165 | +/* This testcase is part of GDB, the GNU debugger. | |
166 | + | |
167 | + Copyright 2011 Free Software Foundation, Inc. | |
168 | + | |
169 | + This program is free software; you can redistribute it and/or modify | |
170 | + it under the terms of the GNU General Public License as published by | |
171 | + the Free Software Foundation; either version 3 of the License, or | |
172 | + (at your option) any later version. | |
173 | + | |
174 | + This program is distributed in the hope that it will be useful, | |
175 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
176 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
177 | + GNU General Public License for more details. | |
178 | + | |
179 | + You should have received a copy of the GNU General Public License | |
180 | + along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
181 | + | |
182 | +static volatile int v, fail; | |
183 | + | |
184 | +static void | |
185 | +func (int i, ...) | |
186 | +{ | |
187 | + v = i; | |
188 | +} | |
189 | + | |
190 | +static void | |
191 | +marker (void) | |
192 | +{ | |
193 | +} | |
194 | + | |
195 | +int | |
196 | +main (void) | |
197 | +{ | |
198 | + func (1); | |
199 | + fail = 1; | |
200 | + marker (); | |
201 | + return 0; | |
202 | +} | |
203 | --- /dev/null | |
204 | +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp | |
205 | @@ -0,0 +1,46 @@ | |
206 | +# Copyright 2011 Free Software Foundation, Inc. | |
207 | +# | |
208 | +# This program is free software; you can redistribute it and/or modify | |
209 | +# it under the terms of the GNU General Public License as published by | |
210 | +# the Free Software Foundation; either version 3 of the License, or | |
211 | +# (at your option) any later version. | |
212 | +# | |
213 | +# This program is distributed in the hope that it will be useful, | |
214 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
215 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
216 | +# GNU General Public License for more details. | |
217 | +# | |
218 | +# You should have received a copy of the GNU General Public License | |
219 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
220 | + | |
221 | +# Test GCC PR debug/48827 workaround in GDB. | |
222 | + | |
223 | +set testfile "amd64-prologue-xmm" | |
224 | +set srcfile ${testfile}.s | |
225 | +set csrcfile ${testfile}.c | |
226 | +set binfile ${objdir}/${subdir}/${testfile}.x | |
227 | +set opts {} | |
228 | + | |
229 | +if [info exists COMPILE] { | |
230 | + # make check RUNTESTFLAGS='gdb.arch/amd64-prologue-xmm.exp COMPILE=1' | |
231 | + set srcfile ${csrcfile} | |
232 | + lappend opts debug optimize=-O0 | |
233 | +} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } { | |
234 | + verbose "Skipping amd64-prologue-xmm test." | |
235 | + return 0 | |
236 | +} | |
237 | + | |
238 | +if {[prepare_for_testing ${testfile}.exp ${testfile} $srcfile $opts]} { | |
239 | + return -1 | |
240 | +} | |
241 | + | |
242 | +if ![runto_main] { | |
243 | + return -1 | |
244 | +} | |
245 | + | |
246 | +gdb_breakpoint "func" | |
247 | +gdb_breakpoint "marker" | |
248 | + | |
249 | +gdb_continue_to_breakpoint "func" | |
250 | + | |
251 | +gdb_test "p fail" " = 0" "stopped at func" | |
252 | --- /dev/null | |
253 | +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s | |
254 | @@ -0,0 +1,400 @@ | |
255 | +/* This testcase is part of GDB, the GNU debugger. | |
256 | + | |
257 | + Copyright 2011 Free Software Foundation, Inc. | |
258 | + | |
259 | + This program is free software; you can redistribute it and/or modify | |
260 | + it under the terms of the GNU General Public License as published by | |
261 | + the Free Software Foundation; either version 3 of the License, or | |
262 | + (at your option) any later version. | |
263 | + | |
264 | + This program is distributed in the hope that it will be useful, | |
265 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
266 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
267 | + GNU General Public License for more details. | |
268 | + | |
269 | + You should have received a copy of the GNU General Public License | |
270 | + along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
271 | + | |
272 | +/* This file is compiled from gdb.arch/amd64-prologue-xmm.c | |
273 | + using -g -dA -S. */ | |
274 | + | |
275 | + .file "amd64-prologue-xmm.c" | |
276 | + .text | |
277 | +.Ltext0: | |
278 | + .local v | |
279 | + .comm v,4,4 | |
280 | + .local fail | |
281 | + .comm fail,4,4 | |
282 | + .type func, @function | |
283 | +func: | |
284 | +.LFB0: | |
285 | + .file 1 "gdb.arch/amd64-prologue-xmm.c" | |
286 | + # gdb.arch/amd64-prologue-xmm.c:22 | |
287 | + .loc 1 22 0 | |
288 | + .cfi_startproc | |
289 | + # basic block 2 | |
290 | + pushq %rbp | |
291 | + .cfi_def_cfa_offset 16 | |
292 | + .cfi_offset 6, -16 | |
293 | + movq %rsp, %rbp | |
294 | + .cfi_def_cfa_register 6 | |
295 | + subq $72, %rsp | |
296 | + movq %rsi, -168(%rbp) | |
297 | + movq %rdx, -160(%rbp) | |
298 | + movq %rcx, -152(%rbp) | |
299 | + movq %r8, -144(%rbp) | |
300 | + movq %r9, -136(%rbp) | |
301 | + testb %al, %al | |
302 | + je .L2 | |
303 | + # basic block 3 | |
304 | + # gdb.arch/amd64-prologue-xmm.c:22 | |
305 | + .loc 1 22 0 | |
306 | + movaps %xmm0, -128(%rbp) | |
307 | + movaps %xmm1, -112(%rbp) | |
308 | + movaps %xmm2, -96(%rbp) | |
309 | + movaps %xmm3, -80(%rbp) | |
310 | + movaps %xmm4, -64(%rbp) | |
311 | + movaps %xmm5, -48(%rbp) | |
312 | + movaps %xmm6, -32(%rbp) | |
313 | + movaps %xmm7, -16(%rbp) | |
314 | +.L2: | |
315 | + # basic block 4 | |
316 | + movl %edi, -180(%rbp) | |
317 | + # gdb.arch/amd64-prologue-xmm.c:23 | |
318 | + .loc 1 23 0 | |
319 | + movl -180(%rbp), %eax | |
320 | + movl %eax, v(%rip) | |
321 | + # gdb.arch/amd64-prologue-xmm.c:24 | |
322 | + .loc 1 24 0 | |
323 | + leave | |
324 | + .cfi_def_cfa 7, 8 | |
325 | + ret | |
326 | + .cfi_endproc | |
327 | +.LFE0: | |
328 | + .size func, .-func | |
329 | + .type marker, @function | |
330 | +marker: | |
331 | +.LFB1: | |
332 | + # gdb.arch/amd64-prologue-xmm.c:28 | |
333 | + .loc 1 28 0 | |
334 | + .cfi_startproc | |
335 | + # basic block 2 | |
336 | + pushq %rbp | |
337 | + .cfi_def_cfa_offset 16 | |
338 | + .cfi_offset 6, -16 | |
339 | + movq %rsp, %rbp | |
340 | + .cfi_def_cfa_register 6 | |
341 | + # gdb.arch/amd64-prologue-xmm.c:29 | |
342 | + .loc 1 29 0 | |
343 | + popq %rbp | |
344 | + .cfi_def_cfa 7, 8 | |
345 | + ret | |
346 | + .cfi_endproc | |
347 | +.LFE1: | |
348 | + .size marker, .-marker | |
349 | + .globl main | |
350 | + .type main, @function | |
351 | +main: | |
352 | +.LFB2: | |
353 | + # gdb.arch/amd64-prologue-xmm.c:33 | |
354 | + .loc 1 33 0 | |
355 | + .cfi_startproc | |
356 | + # basic block 2 | |
357 | + pushq %rbp | |
358 | + .cfi_def_cfa_offset 16 | |
359 | + .cfi_offset 6, -16 | |
360 | + movq %rsp, %rbp | |
361 | + .cfi_def_cfa_register 6 | |
362 | + # gdb.arch/amd64-prologue-xmm.c:34 | |
363 | + .loc 1 34 0 | |
364 | + movl $1, %edi | |
365 | + movl $0, %eax | |
366 | + call func | |
367 | + # gdb.arch/amd64-prologue-xmm.c:35 | |
368 | + .loc 1 35 0 | |
369 | + movl $1, fail(%rip) | |
370 | + # gdb.arch/amd64-prologue-xmm.c:36 | |
371 | + .loc 1 36 0 | |
372 | + call marker | |
373 | + # gdb.arch/amd64-prologue-xmm.c:37 | |
374 | + .loc 1 37 0 | |
375 | + movl $0, %eax | |
376 | + # gdb.arch/amd64-prologue-xmm.c:38 | |
377 | + .loc 1 38 0 | |
378 | + popq %rbp | |
379 | + .cfi_def_cfa 7, 8 | |
380 | + ret | |
381 | + .cfi_endproc | |
382 | +.LFE2: | |
383 | + .size main, .-main | |
384 | +.Letext0: | |
385 | + .section .debug_info,"",@progbits | |
386 | +.Ldebug_info0: | |
387 | + .long 0xc0 # Length of Compilation Unit Info | |
388 | + .value 0x4 # DWARF version number | |
389 | + .long .Ldebug_abbrev0 # Offset Into Abbrev. Section | |
390 | + .byte 0x8 # Pointer Size (in bytes) | |
391 | + .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit) | |
392 | + .long .LASF1 # DW_AT_producer: "GNU C 4.6.1 20110715 (Red Hat 4.6.1-3)" | |
393 | + .byte 0x1 # DW_AT_language | |
394 | + .long .LASF2 # DW_AT_name: "gdb.arch/amd64-prologue-xmm.c" | |
395 | + .long .LASF3 # DW_AT_comp_dir: "" | |
396 | + .quad .Ltext0 # DW_AT_low_pc | |
397 | + .quad .Letext0 # DW_AT_high_pc | |
398 | + .long .Ldebug_line0 # DW_AT_stmt_list | |
399 | + .uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram) | |
400 | + .long .LASF4 # DW_AT_name: "func" | |
401 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
402 | + .byte 0x15 # DW_AT_decl_line | |
403 | + # DW_AT_prototyped | |
404 | + .quad .LFB0 # DW_AT_low_pc | |
405 | + .quad .LFE0 # DW_AT_high_pc | |
406 | + .uleb128 0x1 # DW_AT_frame_base | |
407 | + .byte 0x9c # DW_OP_call_frame_cfa | |
408 | + # DW_AT_GNU_all_call_sites | |
409 | + .long 0x59 # DW_AT_sibling | |
410 | + .uleb128 0x3 # (DIE (0x4a) DW_TAG_formal_parameter) | |
411 | + .ascii "i\0" # DW_AT_name | |
412 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
413 | + .byte 0x15 # DW_AT_decl_line | |
414 | + .long 0x59 # DW_AT_type | |
415 | + .uleb128 0x3 # DW_AT_location | |
416 | + .byte 0x91 # DW_OP_fbreg | |
417 | + .sleb128 -196 | |
418 | + .uleb128 0x4 # (DIE (0x57) DW_TAG_unspecified_parameters) | |
419 | + .byte 0 # end of children of DIE 0x2d | |
420 | + .uleb128 0x5 # (DIE (0x59) DW_TAG_base_type) | |
421 | + .byte 0x4 # DW_AT_byte_size | |
422 | + .byte 0x5 # DW_AT_encoding | |
423 | + .ascii "int\0" # DW_AT_name | |
424 | + .uleb128 0x6 # (DIE (0x60) DW_TAG_subprogram) | |
425 | + .long .LASF5 # DW_AT_name: "marker" | |
426 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
427 | + .byte 0x1b # DW_AT_decl_line | |
428 | + # DW_AT_prototyped | |
429 | + .quad .LFB1 # DW_AT_low_pc | |
430 | + .quad .LFE1 # DW_AT_high_pc | |
431 | + .uleb128 0x1 # DW_AT_frame_base | |
432 | + .byte 0x9c # DW_OP_call_frame_cfa | |
433 | + # DW_AT_GNU_all_call_sites | |
434 | + .uleb128 0x7 # (DIE (0x79) DW_TAG_subprogram) | |
435 | + # DW_AT_external | |
436 | + .long .LASF6 # DW_AT_name: "main" | |
437 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
438 | + .byte 0x20 # DW_AT_decl_line | |
439 | + # DW_AT_prototyped | |
440 | + .long 0x59 # DW_AT_type | |
441 | + .quad .LFB2 # DW_AT_low_pc | |
442 | + .quad .LFE2 # DW_AT_high_pc | |
443 | + .uleb128 0x1 # DW_AT_frame_base | |
444 | + .byte 0x9c # DW_OP_call_frame_cfa | |
445 | + # DW_AT_GNU_all_tail_call_sites | |
446 | + .uleb128 0x8 # (DIE (0x96) DW_TAG_variable) | |
447 | + .ascii "v\0" # DW_AT_name | |
448 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
449 | + .byte 0x12 # DW_AT_decl_line | |
450 | + .long 0xa9 # DW_AT_type | |
451 | + .uleb128 0x9 # DW_AT_location | |
452 | + .byte 0x3 # DW_OP_addr | |
453 | + .quad v | |
454 | + .uleb128 0x9 # (DIE (0xa9) DW_TAG_volatile_type) | |
455 | + .long 0x59 # DW_AT_type | |
456 | + .uleb128 0xa # (DIE (0xae) DW_TAG_variable) | |
457 | + .long .LASF0 # DW_AT_name: "fail" | |
458 | + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c) | |
459 | + .byte 0x12 # DW_AT_decl_line | |
460 | + .long 0xa9 # DW_AT_type | |
461 | + .uleb128 0x9 # DW_AT_location | |
462 | + .byte 0x3 # DW_OP_addr | |
463 | + .quad fail | |
464 | + .byte 0 # end of children of DIE 0xb | |
465 | + .section .debug_abbrev,"",@progbits | |
466 | +.Ldebug_abbrev0: | |
467 | + .uleb128 0x1 # (abbrev code) | |
468 | + .uleb128 0x11 # (TAG: DW_TAG_compile_unit) | |
469 | + .byte 0x1 # DW_children_yes | |
470 | + .uleb128 0x25 # (DW_AT_producer) | |
471 | + .uleb128 0xe # (DW_FORM_strp) | |
472 | + .uleb128 0x13 # (DW_AT_language) | |
473 | + .uleb128 0xb # (DW_FORM_data1) | |
474 | + .uleb128 0x3 # (DW_AT_name) | |
475 | + .uleb128 0xe # (DW_FORM_strp) | |
476 | + .uleb128 0x1b # (DW_AT_comp_dir) | |
477 | + .uleb128 0xe # (DW_FORM_strp) | |
478 | + .uleb128 0x11 # (DW_AT_low_pc) | |
479 | + .uleb128 0x1 # (DW_FORM_addr) | |
480 | + .uleb128 0x12 # (DW_AT_high_pc) | |
481 | + .uleb128 0x1 # (DW_FORM_addr) | |
482 | + .uleb128 0x10 # (DW_AT_stmt_list) | |
483 | + .uleb128 0x17 # (DW_FORM_sec_offset) | |
484 | + .byte 0 | |
485 | + .byte 0 | |
486 | + .uleb128 0x2 # (abbrev code) | |
487 | + .uleb128 0x2e # (TAG: DW_TAG_subprogram) | |
488 | + .byte 0x1 # DW_children_yes | |
489 | + .uleb128 0x3 # (DW_AT_name) | |
490 | + .uleb128 0xe # (DW_FORM_strp) | |
491 | + .uleb128 0x3a # (DW_AT_decl_file) | |
492 | + .uleb128 0xb # (DW_FORM_data1) | |
493 | + .uleb128 0x3b # (DW_AT_decl_line) | |
494 | + .uleb128 0xb # (DW_FORM_data1) | |
495 | + .uleb128 0x27 # (DW_AT_prototyped) | |
496 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
497 | + .uleb128 0x11 # (DW_AT_low_pc) | |
498 | + .uleb128 0x1 # (DW_FORM_addr) | |
499 | + .uleb128 0x12 # (DW_AT_high_pc) | |
500 | + .uleb128 0x1 # (DW_FORM_addr) | |
501 | + .uleb128 0x40 # (DW_AT_frame_base) | |
502 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
503 | + .uleb128 0x2117 # (DW_AT_GNU_all_call_sites) | |
504 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
505 | + .uleb128 0x1 # (DW_AT_sibling) | |
506 | + .uleb128 0x13 # (DW_FORM_ref4) | |
507 | + .byte 0 | |
508 | + .byte 0 | |
509 | + .uleb128 0x3 # (abbrev code) | |
510 | + .uleb128 0x5 # (TAG: DW_TAG_formal_parameter) | |
511 | + .byte 0 # DW_children_no | |
512 | + .uleb128 0x3 # (DW_AT_name) | |
513 | + .uleb128 0x8 # (DW_FORM_string) | |
514 | + .uleb128 0x3a # (DW_AT_decl_file) | |
515 | + .uleb128 0xb # (DW_FORM_data1) | |
516 | + .uleb128 0x3b # (DW_AT_decl_line) | |
517 | + .uleb128 0xb # (DW_FORM_data1) | |
518 | + .uleb128 0x49 # (DW_AT_type) | |
519 | + .uleb128 0x13 # (DW_FORM_ref4) | |
520 | + .uleb128 0x2 # (DW_AT_location) | |
521 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
522 | + .byte 0 | |
523 | + .byte 0 | |
524 | + .uleb128 0x4 # (abbrev code) | |
525 | + .uleb128 0x18 # (TAG: DW_TAG_unspecified_parameters) | |
526 | + .byte 0 # DW_children_no | |
527 | + .byte 0 | |
528 | + .byte 0 | |
529 | + .uleb128 0x5 # (abbrev code) | |
530 | + .uleb128 0x24 # (TAG: DW_TAG_base_type) | |
531 | + .byte 0 # DW_children_no | |
532 | + .uleb128 0xb # (DW_AT_byte_size) | |
533 | + .uleb128 0xb # (DW_FORM_data1) | |
534 | + .uleb128 0x3e # (DW_AT_encoding) | |
535 | + .uleb128 0xb # (DW_FORM_data1) | |
536 | + .uleb128 0x3 # (DW_AT_name) | |
537 | + .uleb128 0x8 # (DW_FORM_string) | |
538 | + .byte 0 | |
539 | + .byte 0 | |
540 | + .uleb128 0x6 # (abbrev code) | |
541 | + .uleb128 0x2e # (TAG: DW_TAG_subprogram) | |
542 | + .byte 0 # DW_children_no | |
543 | + .uleb128 0x3 # (DW_AT_name) | |
544 | + .uleb128 0xe # (DW_FORM_strp) | |
545 | + .uleb128 0x3a # (DW_AT_decl_file) | |
546 | + .uleb128 0xb # (DW_FORM_data1) | |
547 | + .uleb128 0x3b # (DW_AT_decl_line) | |
548 | + .uleb128 0xb # (DW_FORM_data1) | |
549 | + .uleb128 0x27 # (DW_AT_prototyped) | |
550 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
551 | + .uleb128 0x11 # (DW_AT_low_pc) | |
552 | + .uleb128 0x1 # (DW_FORM_addr) | |
553 | + .uleb128 0x12 # (DW_AT_high_pc) | |
554 | + .uleb128 0x1 # (DW_FORM_addr) | |
555 | + .uleb128 0x40 # (DW_AT_frame_base) | |
556 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
557 | + .uleb128 0x2117 # (DW_AT_GNU_all_call_sites) | |
558 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
559 | + .byte 0 | |
560 | + .byte 0 | |
561 | + .uleb128 0x7 # (abbrev code) | |
562 | + .uleb128 0x2e # (TAG: DW_TAG_subprogram) | |
563 | + .byte 0 # DW_children_no | |
564 | + .uleb128 0x3f # (DW_AT_external) | |
565 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
566 | + .uleb128 0x3 # (DW_AT_name) | |
567 | + .uleb128 0xe # (DW_FORM_strp) | |
568 | + .uleb128 0x3a # (DW_AT_decl_file) | |
569 | + .uleb128 0xb # (DW_FORM_data1) | |
570 | + .uleb128 0x3b # (DW_AT_decl_line) | |
571 | + .uleb128 0xb # (DW_FORM_data1) | |
572 | + .uleb128 0x27 # (DW_AT_prototyped) | |
573 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
574 | + .uleb128 0x49 # (DW_AT_type) | |
575 | + .uleb128 0x13 # (DW_FORM_ref4) | |
576 | + .uleb128 0x11 # (DW_AT_low_pc) | |
577 | + .uleb128 0x1 # (DW_FORM_addr) | |
578 | + .uleb128 0x12 # (DW_AT_high_pc) | |
579 | + .uleb128 0x1 # (DW_FORM_addr) | |
580 | + .uleb128 0x40 # (DW_AT_frame_base) | |
581 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
582 | + .uleb128 0x2116 # (DW_AT_GNU_all_tail_call_sites) | |
583 | + .uleb128 0x19 # (DW_FORM_flag_present) | |
584 | + .byte 0 | |
585 | + .byte 0 | |
586 | + .uleb128 0x8 # (abbrev code) | |
587 | + .uleb128 0x34 # (TAG: DW_TAG_variable) | |
588 | + .byte 0 # DW_children_no | |
589 | + .uleb128 0x3 # (DW_AT_name) | |
590 | + .uleb128 0x8 # (DW_FORM_string) | |
591 | + .uleb128 0x3a # (DW_AT_decl_file) | |
592 | + .uleb128 0xb # (DW_FORM_data1) | |
593 | + .uleb128 0x3b # (DW_AT_decl_line) | |
594 | + .uleb128 0xb # (DW_FORM_data1) | |
595 | + .uleb128 0x49 # (DW_AT_type) | |
596 | + .uleb128 0x13 # (DW_FORM_ref4) | |
597 | + .uleb128 0x2 # (DW_AT_location) | |
598 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
599 | + .byte 0 | |
600 | + .byte 0 | |
601 | + .uleb128 0x9 # (abbrev code) | |
602 | + .uleb128 0x35 # (TAG: DW_TAG_volatile_type) | |
603 | + .byte 0 # DW_children_no | |
604 | + .uleb128 0x49 # (DW_AT_type) | |
605 | + .uleb128 0x13 # (DW_FORM_ref4) | |
606 | + .byte 0 | |
607 | + .byte 0 | |
608 | + .uleb128 0xa # (abbrev code) | |
609 | + .uleb128 0x34 # (TAG: DW_TAG_variable) | |
610 | + .byte 0 # DW_children_no | |
611 | + .uleb128 0x3 # (DW_AT_name) | |
612 | + .uleb128 0xe # (DW_FORM_strp) | |
613 | + .uleb128 0x3a # (DW_AT_decl_file) | |
614 | + .uleb128 0xb # (DW_FORM_data1) | |
615 | + .uleb128 0x3b # (DW_AT_decl_line) | |
616 | + .uleb128 0xb # (DW_FORM_data1) | |
617 | + .uleb128 0x49 # (DW_AT_type) | |
618 | + .uleb128 0x13 # (DW_FORM_ref4) | |
619 | + .uleb128 0x2 # (DW_AT_location) | |
620 | + .uleb128 0x18 # (DW_FORM_exprloc) | |
621 | + .byte 0 | |
622 | + .byte 0 | |
623 | + .byte 0 | |
624 | + .section .debug_aranges,"",@progbits | |
625 | + .long 0x2c # Length of Address Ranges Info | |
626 | + .value 0x2 # DWARF Version | |
627 | + .long .Ldebug_info0 # Offset of Compilation Unit Info | |
628 | + .byte 0x8 # Size of Address | |
629 | + .byte 0 # Size of Segment Descriptor | |
630 | + .value 0 # Pad to 16 byte boundary | |
631 | + .value 0 | |
632 | + .quad .Ltext0 # Address | |
633 | + .quad .Letext0-.Ltext0 # Length | |
634 | + .quad 0 | |
635 | + .quad 0 | |
636 | + .section .debug_line,"",@progbits | |
637 | +.Ldebug_line0: | |
638 | + .section .debug_str,"MS",@progbits,1 | |
639 | +.LASF3: | |
640 | + .string "" | |
641 | +.LASF0: | |
642 | + .string "fail" | |
643 | +.LASF4: | |
644 | + .string "func" | |
645 | +.LASF1: | |
646 | + .string "GNU C 4.6.1 20110715 (Red Hat 4.6.1-3)" | |
647 | +.LASF2: | |
648 | + .string "gdb.arch/amd64-prologue-xmm.c" | |
649 | +.LASF5: | |
650 | + .string "marker" | |
651 | +.LASF6: | |
652 | + .string "main" | |
653 | + .ident "GCC: (GNU) 4.6.1 20110715 (Red Hat 4.6.1-3)" | |
654 | + .section .note.GNU-stack,"",@progbits | |
655 |