1 http://sourceware.org/ml/gdb-patches/2011-07/msg00645.html
2 Subject: [patch] workaround gcc46: prologue skip skips too far (PR 12435) #2
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
12 For example `break error' does not work for debugging GDB with gcc-4.6.x.
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.
19 It does not solve overlays well, but the code just does not work for overlays,
20 it has no other negative effect.
22 I will update the code after FSF gcc gets fixed to minimize the workaround.
24 No regressions on {x86_64,x86_64-m32,i686}-fedora16pre-linux-gnu.
26 I would welcome a comment whether it is suitable for FSF GDB.
34 2011-07-22 Jan Kratochvil <jan.kratochvil@redhat.com>
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.
44 2011-07-22 Jan Kratochvil <jan.kratochvil@redhat.com>
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.
51 Index: gdb-7.3/gdb/amd64-tdep.c
52 ===================================================================
53 --- gdb-7.3.orig/gdb/amd64-tdep.c 2011-03-18 19:52:29.000000000 +0100
54 +++ gdb-7.3/gdb/amd64-tdep.c 2011-07-26 22:09:15.000000000 +0200
55 @@ -1902,6 +1902,9 @@ amd64_skip_prologue (struct gdbarch *gdb
57 struct amd64_frame_cache cache;
59 + struct symtab_and_line start_pc_sal, next_sal;
60 + gdb_byte buf[4 + 8 * 7];
63 amd64_init_frame_cache (&cache);
64 pc = amd64_analyze_prologue (gdbarch, start_pc, 0xffffffffffffffffLL,
65 @@ -1909,7 +1912,71 @@ amd64_skip_prologue (struct gdbarch *gdb
66 if (cache.frameless_p)
70 + /* GCC PR debug/48827 produced false prologue end:
73 + <-- here is 0 lines advance - the false prologue end marker.
74 + 0f 29 85 70 ff ff ff movaps %xmm0,-0x90(%rbp)
75 + 0f 29 4d 80 movaps %xmm1,-0x80(%rbp)
76 + 0f 29 55 90 movaps %xmm2,-0x70(%rbp)
77 + 0f 29 5d a0 movaps %xmm3,-0x60(%rbp)
78 + 0f 29 65 b0 movaps %xmm4,-0x50(%rbp)
79 + 0f 29 6d c0 movaps %xmm5,-0x40(%rbp)
80 + 0f 29 75 d0 movaps %xmm6,-0x30(%rbp)
81 + 0f 29 7d e0 movaps %xmm7,-0x20(%rbp)
87 + start_pc_sal = find_pc_sect_line (start_pc, NULL, 0);
88 + if (start_pc_sal.symtab == NULL
89 + || !start_pc_sal.symtab->amd64_prologue_line_bug
90 + || start_pc_sal.pc != start_pc || pc >= start_pc_sal.end)
93 + next_sal = find_pc_sect_line (start_pc_sal.end, NULL, 0);
94 + if (next_sal.line != start_pc_sal.line)
97 + /* START_PC can be from overlayed memory, ignored here. */
98 + if (target_read_memory (next_sal.pc - 4, buf, sizeof (buf)) != 0)
102 + if (buf[0] != 0x84 || buf[1] != 0xc0)
105 + if (buf[2] != 0x74)
109 + for (xmmreg = 0; xmmreg < 8; xmmreg++)
111 + /* movaps %xmmreg?,-0x??(%rbp) */
112 + if (buf[offset] != 0x0f || buf[offset + 1] != 0x29
113 + || (buf[offset + 2] & 0b00111111) != (xmmreg << 3 | 0b101))
116 + if ((buf[offset + 2] & 0b11000000) == 0b01000000)
118 + /* 8-bit displacement. */
121 + else if ((buf[offset + 2] & 0b11000000) == 0b10000000)
123 + /* 32-bit displacement. */
131 + if (offset - 4 != buf[3])
134 + return next_sal.end;
138 Index: gdb-7.3/gdb/dwarf2read.c
139 ===================================================================
140 --- gdb-7.3.orig/gdb/dwarf2read.c 2011-07-26 22:08:59.000000000 +0200
141 +++ gdb-7.3/gdb/dwarf2read.c 2011-07-26 22:11:07.000000000 +0200
142 @@ -4647,6 +4647,42 @@ producer_is_gcc_ge_4_0 (struct dwarf2_cu
147 +producer_is_gcc_ge_4_6 (struct dwarf2_cu *cu)
152 + if (cu->producer == NULL)
154 + /* For unknown compilers expect their behavior is not compliant. For GCC
155 + this case can also happen for -gdwarf-4 type units supported since
161 + /* Skip any identifier after "GNU " - such as "C++" or "Java". */
163 + if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) != 0)
165 + /* For non-GCC compilers expect their behavior is not compliant. */
169 + cs = &cu->producer[strlen ("GNU ")];
170 + while (*cs && !isdigit (*cs))
172 + if (sscanf (cs, "%d.%d", &major, &minor) != 2)
174 + /* Not recognized as GCC. */
179 + return major >= 4 && minor >= 6;
182 /* Generate full symbol information for PST and CU, whose DIEs have
183 already been loaded into memory. */
185 @@ -4706,6 +4742,9 @@ process_full_comp_unit (struct dwarf2_pe
187 if (cu->has_loclist && producer_is_gcc_ge_4_0 (cu))
188 symtab->locations_valid = 1;
190 + if (producer_is_gcc_ge_4_6 (cu))
191 + symtab->amd64_prologue_line_bug = 1;
194 if (dwarf2_per_objfile->using_index)
195 Index: gdb-7.3/gdb/symtab.h
196 ===================================================================
197 --- gdb-7.3.orig/gdb/symtab.h 2011-07-26 22:08:57.000000000 +0200
198 +++ gdb-7.3/gdb/symtab.h 2011-07-26 22:09:39.000000000 +0200
199 @@ -779,6 +779,11 @@ struct symtab
201 unsigned int locations_valid : 1;
203 + /* At least GCC 4.6.0 and 4.6.1 can produce invalid false prologue and marker
204 + on amd64. This flag is set independently of the symtab arch. */
206 + unsigned amd64_prologue_line_bug : 1;
208 /* The macro table for this symtab. Like the blockvector, this
209 may be shared between different symtabs --- and normally is for
210 all the symtabs in a given compilation unit. */
211 Index: gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c
212 ===================================================================
213 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
214 +++ gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c 2011-07-26 22:09:15.000000000 +0200
216 +/* This testcase is part of GDB, the GNU debugger.
218 + Copyright 2011 Free Software Foundation, Inc.
220 + This program is free software; you can redistribute it and/or modify
221 + it under the terms of the GNU General Public License as published by
222 + the Free Software Foundation; either version 3 of the License, or
223 + (at your option) any later version.
225 + This program is distributed in the hope that it will be useful,
226 + but WITHOUT ANY WARRANTY; without even the implied warranty of
227 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
228 + GNU General Public License for more details.
230 + You should have received a copy of the GNU General Public License
231 + along with this program. If not, see <http://www.gnu.org/licenses/>. */
233 +static volatile int v, fail;
254 Index: gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
255 ===================================================================
256 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
257 +++ gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp 2011-07-26 22:09:15.000000000 +0200
259 +# Copyright 2011 Free Software Foundation, Inc.
261 +# This program is free software; you can redistribute it and/or modify
262 +# it under the terms of the GNU General Public License as published by
263 +# the Free Software Foundation; either version 3 of the License, or
264 +# (at your option) any later version.
266 +# This program is distributed in the hope that it will be useful,
267 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
268 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
269 +# GNU General Public License for more details.
271 +# You should have received a copy of the GNU General Public License
272 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
274 +# Test GCC PR debug/48827 workaround in GDB.
276 +set testfile "amd64-prologue-xmm"
277 +set srcfile ${testfile}.s
278 +set csrcfile ${testfile}.c
279 +set binfile ${objdir}/${subdir}/${testfile}.x
282 +if [info exists COMPILE] {
283 + # make check RUNTESTFLAGS='gdb.arch/amd64-prologue-xmm.exp COMPILE=1'
284 + set srcfile ${csrcfile}
285 + lappend opts debug optimize=-O0
286 +} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
287 + verbose "Skipping amd64-prologue-xmm test."
291 +if {[prepare_for_testing ${testfile}.exp ${testfile} $srcfile $opts]} {
299 +gdb_breakpoint "func"
300 +gdb_breakpoint "marker"
302 +gdb_continue_to_breakpoint "func"
304 +gdb_test "p fail" " = 0" "stopped at func"
305 Index: gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s
306 ===================================================================
307 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
308 +++ gdb-7.3/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s 2011-07-26 22:09:15.000000000 +0200
310 +/* This testcase is part of GDB, the GNU debugger.
312 + Copyright 2011 Free Software Foundation, Inc.
314 + This program is free software; you can redistribute it and/or modify
315 + it under the terms of the GNU General Public License as published by
316 + the Free Software Foundation; either version 3 of the License, or
317 + (at your option) any later version.
319 + This program is distributed in the hope that it will be useful,
320 + but WITHOUT ANY WARRANTY; without even the implied warranty of
321 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
322 + GNU General Public License for more details.
324 + You should have received a copy of the GNU General Public License
325 + along with this program. If not, see <http://www.gnu.org/licenses/>. */
327 +/* This file is compiled from gdb.arch/amd64-prologue-xmm.c
328 + using -g -dA -S. */
330 + .file "amd64-prologue-xmm.c"
337 + .type func, @function
340 + .file 1 "gdb.arch/amd64-prologue-xmm.c"
341 + # gdb.arch/amd64-prologue-xmm.c:22
346 + .cfi_def_cfa_offset 16
349 + .cfi_def_cfa_register 6
351 + movq %rsi, -168(%rbp)
352 + movq %rdx, -160(%rbp)
353 + movq %rcx, -152(%rbp)
354 + movq %r8, -144(%rbp)
355 + movq %r9, -136(%rbp)
359 + # gdb.arch/amd64-prologue-xmm.c:22
361 + movaps %xmm0, -128(%rbp)
362 + movaps %xmm1, -112(%rbp)
363 + movaps %xmm2, -96(%rbp)
364 + movaps %xmm3, -80(%rbp)
365 + movaps %xmm4, -64(%rbp)
366 + movaps %xmm5, -48(%rbp)
367 + movaps %xmm6, -32(%rbp)
368 + movaps %xmm7, -16(%rbp)
371 + movl %edi, -180(%rbp)
372 + # gdb.arch/amd64-prologue-xmm.c:23
374 + movl -180(%rbp), %eax
376 + # gdb.arch/amd64-prologue-xmm.c:24
384 + .type marker, @function
387 + # gdb.arch/amd64-prologue-xmm.c:28
392 + .cfi_def_cfa_offset 16
395 + .cfi_def_cfa_register 6
396 + # gdb.arch/amd64-prologue-xmm.c:29
403 + .size marker, .-marker
405 + .type main, @function
408 + # gdb.arch/amd64-prologue-xmm.c:33
413 + .cfi_def_cfa_offset 16
416 + .cfi_def_cfa_register 6
417 + # gdb.arch/amd64-prologue-xmm.c:34
422 + # gdb.arch/amd64-prologue-xmm.c:35
424 + movl $1, fail(%rip)
425 + # gdb.arch/amd64-prologue-xmm.c:36
428 + # gdb.arch/amd64-prologue-xmm.c:37
431 + # gdb.arch/amd64-prologue-xmm.c:38
440 + .section .debug_info,"",@progbits
442 + .long 0xc0 # Length of Compilation Unit Info
443 + .value 0x4 # DWARF version number
444 + .long .Ldebug_abbrev0 # Offset Into Abbrev. Section
445 + .byte 0x8 # Pointer Size (in bytes)
446 + .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
447 + .long .LASF1 # DW_AT_producer: "GNU C 4.6.1 20110715 (Red Hat 4.6.1-3)"
448 + .byte 0x1 # DW_AT_language
449 + .long .LASF2 # DW_AT_name: "gdb.arch/amd64-prologue-xmm.c"
450 + .long .LASF3 # DW_AT_comp_dir: ""
451 + .quad .Ltext0 # DW_AT_low_pc
452 + .quad .Letext0 # DW_AT_high_pc
453 + .long .Ldebug_line0 # DW_AT_stmt_list
454 + .uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram)
455 + .long .LASF4 # DW_AT_name: "func"
456 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
457 + .byte 0x15 # DW_AT_decl_line
459 + .quad .LFB0 # DW_AT_low_pc
460 + .quad .LFE0 # DW_AT_high_pc
461 + .uleb128 0x1 # DW_AT_frame_base
462 + .byte 0x9c # DW_OP_call_frame_cfa
463 + # DW_AT_GNU_all_call_sites
464 + .long 0x59 # DW_AT_sibling
465 + .uleb128 0x3 # (DIE (0x4a) DW_TAG_formal_parameter)
466 + .ascii "i\0" # DW_AT_name
467 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
468 + .byte 0x15 # DW_AT_decl_line
469 + .long 0x59 # DW_AT_type
470 + .uleb128 0x3 # DW_AT_location
471 + .byte 0x91 # DW_OP_fbreg
473 + .uleb128 0x4 # (DIE (0x57) DW_TAG_unspecified_parameters)
474 + .byte 0 # end of children of DIE 0x2d
475 + .uleb128 0x5 # (DIE (0x59) DW_TAG_base_type)
476 + .byte 0x4 # DW_AT_byte_size
477 + .byte 0x5 # DW_AT_encoding
478 + .ascii "int\0" # DW_AT_name
479 + .uleb128 0x6 # (DIE (0x60) DW_TAG_subprogram)
480 + .long .LASF5 # DW_AT_name: "marker"
481 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
482 + .byte 0x1b # DW_AT_decl_line
484 + .quad .LFB1 # DW_AT_low_pc
485 + .quad .LFE1 # DW_AT_high_pc
486 + .uleb128 0x1 # DW_AT_frame_base
487 + .byte 0x9c # DW_OP_call_frame_cfa
488 + # DW_AT_GNU_all_call_sites
489 + .uleb128 0x7 # (DIE (0x79) DW_TAG_subprogram)
491 + .long .LASF6 # DW_AT_name: "main"
492 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
493 + .byte 0x20 # DW_AT_decl_line
495 + .long 0x59 # DW_AT_type
496 + .quad .LFB2 # DW_AT_low_pc
497 + .quad .LFE2 # DW_AT_high_pc
498 + .uleb128 0x1 # DW_AT_frame_base
499 + .byte 0x9c # DW_OP_call_frame_cfa
500 + # DW_AT_GNU_all_tail_call_sites
501 + .uleb128 0x8 # (DIE (0x96) DW_TAG_variable)
502 + .ascii "v\0" # DW_AT_name
503 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
504 + .byte 0x12 # DW_AT_decl_line
505 + .long 0xa9 # DW_AT_type
506 + .uleb128 0x9 # DW_AT_location
507 + .byte 0x3 # DW_OP_addr
509 + .uleb128 0x9 # (DIE (0xa9) DW_TAG_volatile_type)
510 + .long 0x59 # DW_AT_type
511 + .uleb128 0xa # (DIE (0xae) DW_TAG_variable)
512 + .long .LASF0 # DW_AT_name: "fail"
513 + .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-prologue-xmm.c)
514 + .byte 0x12 # DW_AT_decl_line
515 + .long 0xa9 # DW_AT_type
516 + .uleb128 0x9 # DW_AT_location
517 + .byte 0x3 # DW_OP_addr
519 + .byte 0 # end of children of DIE 0xb
520 + .section .debug_abbrev,"",@progbits
522 + .uleb128 0x1 # (abbrev code)
523 + .uleb128 0x11 # (TAG: DW_TAG_compile_unit)
524 + .byte 0x1 # DW_children_yes
525 + .uleb128 0x25 # (DW_AT_producer)
526 + .uleb128 0xe # (DW_FORM_strp)
527 + .uleb128 0x13 # (DW_AT_language)
528 + .uleb128 0xb # (DW_FORM_data1)
529 + .uleb128 0x3 # (DW_AT_name)
530 + .uleb128 0xe # (DW_FORM_strp)
531 + .uleb128 0x1b # (DW_AT_comp_dir)
532 + .uleb128 0xe # (DW_FORM_strp)
533 + .uleb128 0x11 # (DW_AT_low_pc)
534 + .uleb128 0x1 # (DW_FORM_addr)
535 + .uleb128 0x12 # (DW_AT_high_pc)
536 + .uleb128 0x1 # (DW_FORM_addr)
537 + .uleb128 0x10 # (DW_AT_stmt_list)
538 + .uleb128 0x17 # (DW_FORM_sec_offset)
541 + .uleb128 0x2 # (abbrev code)
542 + .uleb128 0x2e # (TAG: DW_TAG_subprogram)
543 + .byte 0x1 # DW_children_yes
544 + .uleb128 0x3 # (DW_AT_name)
545 + .uleb128 0xe # (DW_FORM_strp)
546 + .uleb128 0x3a # (DW_AT_decl_file)
547 + .uleb128 0xb # (DW_FORM_data1)
548 + .uleb128 0x3b # (DW_AT_decl_line)
549 + .uleb128 0xb # (DW_FORM_data1)
550 + .uleb128 0x27 # (DW_AT_prototyped)
551 + .uleb128 0x19 # (DW_FORM_flag_present)
552 + .uleb128 0x11 # (DW_AT_low_pc)
553 + .uleb128 0x1 # (DW_FORM_addr)
554 + .uleb128 0x12 # (DW_AT_high_pc)
555 + .uleb128 0x1 # (DW_FORM_addr)
556 + .uleb128 0x40 # (DW_AT_frame_base)
557 + .uleb128 0x18 # (DW_FORM_exprloc)
558 + .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
559 + .uleb128 0x19 # (DW_FORM_flag_present)
560 + .uleb128 0x1 # (DW_AT_sibling)
561 + .uleb128 0x13 # (DW_FORM_ref4)
564 + .uleb128 0x3 # (abbrev code)
565 + .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
566 + .byte 0 # DW_children_no
567 + .uleb128 0x3 # (DW_AT_name)
568 + .uleb128 0x8 # (DW_FORM_string)
569 + .uleb128 0x3a # (DW_AT_decl_file)
570 + .uleb128 0xb # (DW_FORM_data1)
571 + .uleb128 0x3b # (DW_AT_decl_line)
572 + .uleb128 0xb # (DW_FORM_data1)
573 + .uleb128 0x49 # (DW_AT_type)
574 + .uleb128 0x13 # (DW_FORM_ref4)
575 + .uleb128 0x2 # (DW_AT_location)
576 + .uleb128 0x18 # (DW_FORM_exprloc)
579 + .uleb128 0x4 # (abbrev code)
580 + .uleb128 0x18 # (TAG: DW_TAG_unspecified_parameters)
581 + .byte 0 # DW_children_no
584 + .uleb128 0x5 # (abbrev code)
585 + .uleb128 0x24 # (TAG: DW_TAG_base_type)
586 + .byte 0 # DW_children_no
587 + .uleb128 0xb # (DW_AT_byte_size)
588 + .uleb128 0xb # (DW_FORM_data1)
589 + .uleb128 0x3e # (DW_AT_encoding)
590 + .uleb128 0xb # (DW_FORM_data1)
591 + .uleb128 0x3 # (DW_AT_name)
592 + .uleb128 0x8 # (DW_FORM_string)
595 + .uleb128 0x6 # (abbrev code)
596 + .uleb128 0x2e # (TAG: DW_TAG_subprogram)
597 + .byte 0 # DW_children_no
598 + .uleb128 0x3 # (DW_AT_name)
599 + .uleb128 0xe # (DW_FORM_strp)
600 + .uleb128 0x3a # (DW_AT_decl_file)
601 + .uleb128 0xb # (DW_FORM_data1)
602 + .uleb128 0x3b # (DW_AT_decl_line)
603 + .uleb128 0xb # (DW_FORM_data1)
604 + .uleb128 0x27 # (DW_AT_prototyped)
605 + .uleb128 0x19 # (DW_FORM_flag_present)
606 + .uleb128 0x11 # (DW_AT_low_pc)
607 + .uleb128 0x1 # (DW_FORM_addr)
608 + .uleb128 0x12 # (DW_AT_high_pc)
609 + .uleb128 0x1 # (DW_FORM_addr)
610 + .uleb128 0x40 # (DW_AT_frame_base)
611 + .uleb128 0x18 # (DW_FORM_exprloc)
612 + .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
613 + .uleb128 0x19 # (DW_FORM_flag_present)
616 + .uleb128 0x7 # (abbrev code)
617 + .uleb128 0x2e # (TAG: DW_TAG_subprogram)
618 + .byte 0 # DW_children_no
619 + .uleb128 0x3f # (DW_AT_external)
620 + .uleb128 0x19 # (DW_FORM_flag_present)
621 + .uleb128 0x3 # (DW_AT_name)
622 + .uleb128 0xe # (DW_FORM_strp)
623 + .uleb128 0x3a # (DW_AT_decl_file)
624 + .uleb128 0xb # (DW_FORM_data1)
625 + .uleb128 0x3b # (DW_AT_decl_line)
626 + .uleb128 0xb # (DW_FORM_data1)
627 + .uleb128 0x27 # (DW_AT_prototyped)
628 + .uleb128 0x19 # (DW_FORM_flag_present)
629 + .uleb128 0x49 # (DW_AT_type)
630 + .uleb128 0x13 # (DW_FORM_ref4)
631 + .uleb128 0x11 # (DW_AT_low_pc)
632 + .uleb128 0x1 # (DW_FORM_addr)
633 + .uleb128 0x12 # (DW_AT_high_pc)
634 + .uleb128 0x1 # (DW_FORM_addr)
635 + .uleb128 0x40 # (DW_AT_frame_base)
636 + .uleb128 0x18 # (DW_FORM_exprloc)
637 + .uleb128 0x2116 # (DW_AT_GNU_all_tail_call_sites)
638 + .uleb128 0x19 # (DW_FORM_flag_present)
641 + .uleb128 0x8 # (abbrev code)
642 + .uleb128 0x34 # (TAG: DW_TAG_variable)
643 + .byte 0 # DW_children_no
644 + .uleb128 0x3 # (DW_AT_name)
645 + .uleb128 0x8 # (DW_FORM_string)
646 + .uleb128 0x3a # (DW_AT_decl_file)
647 + .uleb128 0xb # (DW_FORM_data1)
648 + .uleb128 0x3b # (DW_AT_decl_line)
649 + .uleb128 0xb # (DW_FORM_data1)
650 + .uleb128 0x49 # (DW_AT_type)
651 + .uleb128 0x13 # (DW_FORM_ref4)
652 + .uleb128 0x2 # (DW_AT_location)
653 + .uleb128 0x18 # (DW_FORM_exprloc)
656 + .uleb128 0x9 # (abbrev code)
657 + .uleb128 0x35 # (TAG: DW_TAG_volatile_type)
658 + .byte 0 # DW_children_no
659 + .uleb128 0x49 # (DW_AT_type)
660 + .uleb128 0x13 # (DW_FORM_ref4)
663 + .uleb128 0xa # (abbrev code)
664 + .uleb128 0x34 # (TAG: DW_TAG_variable)
665 + .byte 0 # DW_children_no
666 + .uleb128 0x3 # (DW_AT_name)
667 + .uleb128 0xe # (DW_FORM_strp)
668 + .uleb128 0x3a # (DW_AT_decl_file)
669 + .uleb128 0xb # (DW_FORM_data1)
670 + .uleb128 0x3b # (DW_AT_decl_line)
671 + .uleb128 0xb # (DW_FORM_data1)
672 + .uleb128 0x49 # (DW_AT_type)
673 + .uleb128 0x13 # (DW_FORM_ref4)
674 + .uleb128 0x2 # (DW_AT_location)
675 + .uleb128 0x18 # (DW_FORM_exprloc)
679 + .section .debug_aranges,"",@progbits
680 + .long 0x2c # Length of Address Ranges Info
681 + .value 0x2 # DWARF Version
682 + .long .Ldebug_info0 # Offset of Compilation Unit Info
683 + .byte 0x8 # Size of Address
684 + .byte 0 # Size of Segment Descriptor
685 + .value 0 # Pad to 16 byte boundary
687 + .quad .Ltext0 # Address
688 + .quad .Letext0-.Ltext0 # Length
691 + .section .debug_line,"",@progbits
693 + .section .debug_str,"MS",@progbits,1
701 + .string "GNU C 4.6.1 20110715 (Red Hat 4.6.1-3)"
703 + .string "gdb.arch/amd64-prologue-xmm.c"
708 + .ident "GCC: (GNU) 4.6.1 20110715 (Red Hat 4.6.1-3)"
709 + .section .note.GNU-stack,"",@progbits