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 --- 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)
55 struct amd64_frame_cache cache;
57 + struct symtab_and_line start_pc_sal, next_sal;
58 + gdb_byte buf[4 + 8 * 7];
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)
68 + /* GCC PR debug/48827 produced false prologue end:
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)
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)
91 + next_sal = find_pc_sect_line (start_pc_sal.end, NULL, 0);
92 + if (next_sal.line != start_pc_sal.line)
95 + /* START_PC can be from overlayed memory, ignored here. */
96 + if (target_read_memory (next_sal.pc - 4, buf, sizeof (buf)) != 0)
100 + if (buf[0] != 0x84 || buf[1] != 0xc0)
103 + if (buf[2] != 0x74)
107 + for (xmmreg = 0; xmmreg < 8; xmmreg++)
109 + /* movaps %xmmreg?,-0x??(%rbp) */
110 + if (buf[offset] != 0x0f || buf[offset + 1] != 0x29
111 + || (buf[offset + 2] & 0b00111111) != (xmmreg << 3 | 0b101))
114 + if ((buf[offset + 2] & 0b11000000) == 0b01000000)
116 + /* 8-bit displacement. */
119 + else if ((buf[offset + 2] & 0b11000000) == 0b10000000)
121 + /* 32-bit displacement. */
129 + if (offset - 4 != buf[3])
132 + return next_sal.end;
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)
140 if (gcc_4_minor >= 5)
141 symtab->epilogue_unwind_valid = 1;
143 + if (gcc_4_minor >= 6)
144 + symtab->amd64_prologue_line_bug = 1;
147 if (dwarf2_per_objfile->using_index)
150 @@ -784,6 +784,11 @@ struct symtab
152 unsigned int epilogue_unwind_valid : 1;
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. */
157 + unsigned amd64_prologue_line_bug : 1;
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. */
163 +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c
165 +/* This testcase is part of GDB, the GNU debugger.
167 + Copyright 2011 Free Software Foundation, Inc.
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.
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.
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/>. */
182 +static volatile int v, fail;
204 +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
206 +# Copyright 2011 Free Software Foundation, Inc.
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.
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.
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/>.
221 +# Test GCC PR debug/48827 workaround in GDB.
223 +set testfile "amd64-prologue-xmm"
224 +set srcfile ${testfile}.s
225 +set csrcfile ${testfile}.c
226 +set binfile ${objdir}/${subdir}/${testfile}.x
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."
238 +if {[prepare_for_testing ${testfile}.exp ${testfile} $srcfile $opts]} {
246 +gdb_breakpoint "func"
247 +gdb_breakpoint "marker"
249 +gdb_continue_to_breakpoint "func"
251 +gdb_test "p fail" " = 0" "stopped at func"
253 +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s
255 +/* This testcase is part of GDB, the GNU debugger.
257 + Copyright 2011 Free Software Foundation, Inc.
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.
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.
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/>. */
272 +/* This file is compiled from gdb.arch/amd64-prologue-xmm.c
273 + using -g -dA -S. */
275 + .file "amd64-prologue-xmm.c"
282 + .type func, @function
285 + .file 1 "gdb.arch/amd64-prologue-xmm.c"
286 + # gdb.arch/amd64-prologue-xmm.c:22
291 + .cfi_def_cfa_offset 16
294 + .cfi_def_cfa_register 6
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)
304 + # gdb.arch/amd64-prologue-xmm.c:22
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)
316 + movl %edi, -180(%rbp)
317 + # gdb.arch/amd64-prologue-xmm.c:23
319 + movl -180(%rbp), %eax
321 + # gdb.arch/amd64-prologue-xmm.c:24
329 + .type marker, @function
332 + # gdb.arch/amd64-prologue-xmm.c:28
337 + .cfi_def_cfa_offset 16
340 + .cfi_def_cfa_register 6
341 + # gdb.arch/amd64-prologue-xmm.c:29
348 + .size marker, .-marker
350 + .type main, @function
353 + # gdb.arch/amd64-prologue-xmm.c:33
358 + .cfi_def_cfa_offset 16
361 + .cfi_def_cfa_register 6
362 + # gdb.arch/amd64-prologue-xmm.c:34
367 + # gdb.arch/amd64-prologue-xmm.c:35
369 + movl $1, fail(%rip)
370 + # gdb.arch/amd64-prologue-xmm.c:36
373 + # gdb.arch/amd64-prologue-xmm.c:37
376 + # gdb.arch/amd64-prologue-xmm.c:38
385 + .section .debug_info,"",@progbits
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
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
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
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)
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
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
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
464 + .byte 0 # end of children of DIE 0xb
465 + .section .debug_abbrev,"",@progbits
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)
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)
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)
524 + .uleb128 0x4 # (abbrev code)
525 + .uleb128 0x18 # (TAG: DW_TAG_unspecified_parameters)
526 + .byte 0 # DW_children_no
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)
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)
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)
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)
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)
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)
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
632 + .quad .Ltext0 # Address
633 + .quad .Letext0-.Ltext0 # Length
636 + .section .debug_line,"",@progbits
638 + .section .debug_str,"MS",@progbits,1
646 + .string "GNU C 4.6.1 20110715 (Red Hat 4.6.1-3)"
648 + .string "gdb.arch/amd64-prologue-xmm.c"
653 + .ident "GCC: (GNU) 4.6.1 20110715 (Red Hat 4.6.1-3)"
654 + .section .note.GNU-stack,"",@progbits