Index: gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S |
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S b/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fc920166459c7083cff479dcc3aa63d43474f458 |
--- /dev/null |
+++ b/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S |
@@ -0,0 +1,508 @@ |
+/* |
+ Copyright 2013 Free Software Foundation, Inc. |
+ |
+ This program is free software; you can redistribute it and/or modify |
+ it under the terms of the GNU General Public License as published by |
+ the Free Software Foundation; either version 3 of the License, or |
+ (at your option) any later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
+ |
+ /* The FDE entry for "stop_frame" in the .debug_frame section has |
+ been hand modified to mark the return address (rip) as undefined. |
+ Otherwise this file is as generated by gcc 4.7.2 for x86_64. */ |
+ .file "dw2-undefined-ret-addr.c" |
+ .text |
+.Ltext0: |
+ .globl stop_frame |
+ .type stop_frame, @function |
+stop_frame: |
+.LFB0: |
+ .file 1 "dw2-undefined-ret-addr.c" |
+ .loc 1 19 0 |
+ pushq %rbp |
+.LCFI0: |
+ movq %rsp, %rbp |
+.LCFI1: |
+ .loc 1 22 0 |
+ popq %rbp |
+.LCFI2: |
+ ret |
+.LFE0: |
+ .size stop_frame, .-stop_frame |
+ .globl first_frame |
+ .type first_frame, @function |
+first_frame: |
+.LFB1: |
+ .loc 1 26 0 |
+ pushq %rbp |
+.LCFI3: |
+ movq %rsp, %rbp |
+.LCFI4: |
+ .loc 1 27 0 |
+ movl $0, %eax |
+ call stop_frame |
+ .loc 1 28 0 |
+ popq %rbp |
+.LCFI5: |
+ ret |
+.LFE1: |
+ .size first_frame, .-first_frame |
+ .globl main |
+ .type main, @function |
+main: |
+.LFB2: |
+ .loc 1 32 0 |
+ pushq %rbp |
+.LCFI6: |
+ movq %rsp, %rbp |
+.LCFI7: |
+ .loc 1 33 0 |
+ movl $0, %eax |
+ call first_frame |
+ .loc 1 35 0 |
+ movl $0, %eax |
+ .loc 1 36 0 |
+ popq %rbp |
+.LCFI8: |
+ ret |
+.LFE2: |
+ .size main, .-main |
+ .section .debug_frame,"",@progbits |
+.Lframe0: |
+ .long .LECIE0-.LSCIE0 |
+.LSCIE0: |
+ .long 0xffffffff |
+ .byte 0x1 |
+ .string "" |
+ .uleb128 0x1 |
+ .sleb128 -8 |
+ .byte 0x10 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .byte 0x90 |
+ .uleb128 0x1 |
+ .align 8 |
+.LECIE0: |
+ /* This FDE entry, for stop_frame was modified to mark |
+ registers 0 -> 6 as being undefined. */ |
+.LSFDE0: |
+ .long .LEFDE0-.LASFDE0 |
+.LASFDE0: |
+ .long .Lframe0 |
+ .quad .LFB0 |
+ .quad .LFE0-.LFB0 |
+ |
+ /* START OF NEW CONTENT. */ |
+ .byte 0x7 /* DW_CFA_undefined */ |
+ .uleb128 0x10 /* ULEB128 register */ |
+ /* END OF NEW CONTENT. */ |
+ |
+ .byte 0x4 |
+ .long .LCFI0-.LFB0 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI1-.LCFI0 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI2-.LCFI1 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE0: |
+.LSFDE2: |
+ .long .LEFDE2-.LASFDE2 |
+.LASFDE2: |
+ .long .Lframe0 |
+ .quad .LFB1 |
+ .quad .LFE1-.LFB1 |
+ .byte 0x4 |
+ .long .LCFI3-.LFB1 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI4-.LCFI3 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI5-.LCFI4 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE2: |
+.LSFDE4: |
+ .long .LEFDE4-.LASFDE4 |
+.LASFDE4: |
+ .long .Lframe0 |
+ .quad .LFB2 |
+ .quad .LFE2-.LFB2 |
+ .byte 0x4 |
+ .long .LCFI6-.LFB2 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI7-.LCFI6 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI8-.LCFI7 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE4: |
+ .section .eh_frame,"a",@progbits |
+.Lframe1: |
+ .long .LECIE1-.LSCIE1 |
+.LSCIE1: |
+ .long 0 |
+ .byte 0x1 |
+ .string "zR" |
+ .uleb128 0x1 |
+ .sleb128 -8 |
+ .byte 0x10 |
+ .uleb128 0x1 |
+ .byte 0x3 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .byte 0x90 |
+ .uleb128 0x1 |
+ .align 8 |
+.LECIE1: |
+.LSFDE7: |
+ .long .LEFDE7-.LASFDE7 |
+.LASFDE7: |
+ .long .LASFDE7-.Lframe1 |
+ .long .LFB0 |
+ .long .LFE0-.LFB0 |
+ .uleb128 0 |
+ .byte 0x4 |
+ .long .LCFI0-.LFB0 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI1-.LCFI0 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI2-.LCFI1 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE7: |
+.LSFDE9: |
+ .long .LEFDE9-.LASFDE9 |
+.LASFDE9: |
+ .long .LASFDE9-.Lframe1 |
+ .long .LFB1 |
+ .long .LFE1-.LFB1 |
+ .uleb128 0 |
+ .byte 0x4 |
+ .long .LCFI3-.LFB1 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI4-.LCFI3 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI5-.LCFI4 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE9: |
+.LSFDE11: |
+ .long .LEFDE11-.LASFDE11 |
+.LASFDE11: |
+ .long .LASFDE11-.Lframe1 |
+ .long .LFB2 |
+ .long .LFE2-.LFB2 |
+ .uleb128 0 |
+ .byte 0x4 |
+ .long .LCFI6-.LFB2 |
+ .byte 0xe |
+ .uleb128 0x10 |
+ .byte 0x86 |
+ .uleb128 0x2 |
+ .byte 0x4 |
+ .long .LCFI7-.LCFI6 |
+ .byte 0xd |
+ .uleb128 0x6 |
+ .byte 0x4 |
+ .long .LCFI8-.LCFI7 |
+ .byte 0xc |
+ .uleb128 0x7 |
+ .uleb128 0x8 |
+ .align 8 |
+.LEFDE11: |
+ .text |
+.Letext0: |
+ .section .debug_info,"",@progbits |
+.Ldebug_info0: |
+ .long 0x8c |
+ .value 0x2 |
+ .long .Ldebug_abbrev0 |
+ .byte 0x8 |
+ .uleb128 0x1 |
+ .long .LASF2 |
+ .byte 0x1 |
+ .long .LASF3 |
+ .long .LASF4 |
+ .quad .Ltext0 |
+ .quad .Letext0 |
+ .long .Ldebug_line0 |
+ .uleb128 0x2 |
+ .byte 0x1 |
+ .long .LASF0 |
+ .byte 0x1 |
+ .byte 0x12 |
+ .quad .LFB0 |
+ .quad .LFE0 |
+ .long .LLST0 |
+ .byte 0x1 |
+ .uleb128 0x3 |
+ .byte 0x1 |
+ .long .LASF1 |
+ .byte 0x1 |
+ .byte 0x19 |
+ .quad .LFB1 |
+ .quad .LFE1 |
+ .long .LLST1 |
+ .byte 0x1 |
+ .uleb128 0x4 |
+ .byte 0x1 |
+ .long .LASF5 |
+ .byte 0x1 |
+ .byte 0x1f |
+ .long 0x88 |
+ .quad .LFB2 |
+ .quad .LFE2 |
+ .long .LLST2 |
+ .byte 0x1 |
+ .uleb128 0x5 |
+ .byte 0x4 |
+ .byte 0x5 |
+ .string "int" |
+ .byte 0 |
+ .section .debug_abbrev,"",@progbits |
+.Ldebug_abbrev0: |
+ .uleb128 0x1 |
+ .uleb128 0x11 |
+ .byte 0x1 |
+ .uleb128 0x25 |
+ .uleb128 0xe |
+ .uleb128 0x13 |
+ .uleb128 0xb |
+ .uleb128 0x3 |
+ .uleb128 0xe |
+ .uleb128 0x1b |
+ .uleb128 0xe |
+ .uleb128 0x11 |
+ .uleb128 0x1 |
+ .uleb128 0x12 |
+ .uleb128 0x1 |
+ .uleb128 0x10 |
+ .uleb128 0x6 |
+ .byte 0 |
+ .byte 0 |
+ .uleb128 0x2 |
+ .uleb128 0x2e |
+ .byte 0 |
+ .uleb128 0x3f |
+ .uleb128 0xc |
+ .uleb128 0x3 |
+ .uleb128 0xe |
+ .uleb128 0x3a |
+ .uleb128 0xb |
+ .uleb128 0x3b |
+ .uleb128 0xb |
+ .uleb128 0x11 |
+ .uleb128 0x1 |
+ .uleb128 0x12 |
+ .uleb128 0x1 |
+ .uleb128 0x40 |
+ .uleb128 0x6 |
+ .uleb128 0x2117 |
+ .uleb128 0xc |
+ .byte 0 |
+ .byte 0 |
+ .uleb128 0x3 |
+ .uleb128 0x2e |
+ .byte 0 |
+ .uleb128 0x3f |
+ .uleb128 0xc |
+ .uleb128 0x3 |
+ .uleb128 0xe |
+ .uleb128 0x3a |
+ .uleb128 0xb |
+ .uleb128 0x3b |
+ .uleb128 0xb |
+ .uleb128 0x11 |
+ .uleb128 0x1 |
+ .uleb128 0x12 |
+ .uleb128 0x1 |
+ .uleb128 0x40 |
+ .uleb128 0x6 |
+ .uleb128 0x2116 |
+ .uleb128 0xc |
+ .byte 0 |
+ .byte 0 |
+ .uleb128 0x4 |
+ .uleb128 0x2e |
+ .byte 0 |
+ .uleb128 0x3f |
+ .uleb128 0xc |
+ .uleb128 0x3 |
+ .uleb128 0xe |
+ .uleb128 0x3a |
+ .uleb128 0xb |
+ .uleb128 0x3b |
+ .uleb128 0xb |
+ .uleb128 0x49 |
+ .uleb128 0x13 |
+ .uleb128 0x11 |
+ .uleb128 0x1 |
+ .uleb128 0x12 |
+ .uleb128 0x1 |
+ .uleb128 0x40 |
+ .uleb128 0x6 |
+ .uleb128 0x2116 |
+ .uleb128 0xc |
+ .byte 0 |
+ .byte 0 |
+ .uleb128 0x5 |
+ .uleb128 0x24 |
+ .byte 0 |
+ .uleb128 0xb |
+ .uleb128 0xb |
+ .uleb128 0x3e |
+ .uleb128 0xb |
+ .uleb128 0x3 |
+ .uleb128 0x8 |
+ .byte 0 |
+ .byte 0 |
+ .byte 0 |
+ .section .debug_loc,"",@progbits |
+.Ldebug_loc0: |
+.LLST0: |
+ .quad .LFB0-.Ltext0 |
+ .quad .LCFI0-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad .LCFI0-.Ltext0 |
+ .quad .LCFI1-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 16 |
+ .quad .LCFI1-.Ltext0 |
+ .quad .LCFI2-.Ltext0 |
+ .value 0x2 |
+ .byte 0x76 |
+ .sleb128 16 |
+ .quad .LCFI2-.Ltext0 |
+ .quad .LFE0-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad 0 |
+ .quad 0 |
+.LLST1: |
+ .quad .LFB1-.Ltext0 |
+ .quad .LCFI3-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad .LCFI3-.Ltext0 |
+ .quad .LCFI4-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 16 |
+ .quad .LCFI4-.Ltext0 |
+ .quad .LCFI5-.Ltext0 |
+ .value 0x2 |
+ .byte 0x76 |
+ .sleb128 16 |
+ .quad .LCFI5-.Ltext0 |
+ .quad .LFE1-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad 0 |
+ .quad 0 |
+.LLST2: |
+ .quad .LFB2-.Ltext0 |
+ .quad .LCFI6-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad .LCFI6-.Ltext0 |
+ .quad .LCFI7-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 16 |
+ .quad .LCFI7-.Ltext0 |
+ .quad .LCFI8-.Ltext0 |
+ .value 0x2 |
+ .byte 0x76 |
+ .sleb128 16 |
+ .quad .LCFI8-.Ltext0 |
+ .quad .LFE2-.Ltext0 |
+ .value 0x2 |
+ .byte 0x77 |
+ .sleb128 8 |
+ .quad 0 |
+ .quad 0 |
+ .section .debug_aranges,"",@progbits |
+ .long 0x2c |
+ .value 0x2 |
+ .long .Ldebug_info0 |
+ .byte 0x8 |
+ .byte 0 |
+ .value 0 |
+ .value 0 |
+ .quad .Ltext0 |
+ .quad .Letext0-.Ltext0 |
+ .quad 0 |
+ .quad 0 |
+ .section .debug_line,"",@progbits |
+.Ldebug_line0: |
+ .section .debug_str,"MS",@progbits,1 |
+.LASF0: |
+ .string "stop_frame" |
+.LASF3: |
+ .string "dw2-undefined-ret-addr.c" |
+.LASF2: |
+ .string "GNU C 4.7.2" |
+.LASF1: |
+ .string "first_frame" |
+.LASF5: |
+ .string "main" |
+.LASF4: |
+ .string "/home/username/src/gdb/testsuite/gdb.dwarf2" |
+ .ident "GCC: (GNU) 4.7.2" |
+ .section .note.GNU-stack,"",@progbits |