]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blame - gdb/patches/gdb-gcc46-stdarg-prologue.patch
kernel: Update to 3.15.6.
[people/ms/ipfire-3.x.git] / gdb / patches / gdb-gcc46-stdarg-prologue.patch
CommitLineData
5a03b7c3
MT
1http://sourceware.org/ml/gdb-patches/2011-07/msg00645.html
2Subject: [patch] workaround gcc46: prologue skip skips too far (PR 12435) #2
3
4Hi,
5
6this 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
12For example `break error' does not work for debugging GDB with gcc-4.6.x.
13
14As gcc-4.6.0 and now even 4.6.1 still has this bug and I have seen a user(s?)
15on non-Fedora platform asking about this bug and as there may be enough
16binaries out there (although it affects only -O0 -g compilation) coded it
17properly I have coded the workaround properly this time.
18
19It does not solve overlays well, but the code just does not work for overlays,
20it has no other negative effect.
21
22I will update the code after FSF gcc gets fixed to minimize the workaround.
23
24No regressions on {x86_64,x86_64-m32,i686}-fedora16pre-linux-gnu.
25
26I would welcome a comment whether it is suitable for FSF GDB.
27
28
29Thanks,
30Jan
31
32
33gdb/
342011-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
43gdb/testsuite/
442011-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