diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-08-27 16:34:35 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-08-27 16:34:35 +0000 |
commit | 1e8e8b511408a83a62e45892097da167d77c9027 (patch) | |
tree | 456966b8b71aeb759238fa6767ad2b7e3951d75e /gdb/testsuite/gdb.arch | |
parent | 1591a1e8523aff54250fd7376b0ceeb83e5f2b15 (diff) | |
download | gdb-1e8e8b511408a83a62e45892097da167d77c9027.zip gdb-1e8e8b511408a83a62e45892097da167d77c9027.tar.gz gdb-1e8e8b511408a83a62e45892097da167d77c9027.tar.bz2 |
gdb/testsuite/
* gdb.ada/rdv_wait.exp (set debug-file-directory): New command.
* gdb.arch/i386-cfi-notcurrent.S: New file.
* gdb.arch/i386-cfi-notcurrent.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.arch')
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S | 76 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp | 34 |
2 files changed, 110 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S b/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S new file mode 100644 index 0000000..eae94b0 --- /dev/null +++ b/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S @@ -0,0 +1,76 @@ +/* Copyright 2012 Free Software Foundation, Inc. + + This file is part of GDB. + + 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/>. */ + +/* Testcase compiled by gcc -m32 -S -fasynchronous-unwind-tables -O2: + +static int __attribute__ ((regparm (0), stdcall, noinline, noclone)) +f (int x) +{ + return x; +} +static int __attribute__ ((noinline, noclone)) +g (void) +{ + return f (1) + 1; +} +int +main (void) +{ + return g () + 1; +} + + */ + + .text + .type f, @function +f: +.LFB0: + .cfi_startproc + movl 4(%esp), %eax + ret $4 + .cfi_endproc +.LFE0: + .size f, .-f + .type g, @function +g: +.LFB1: + .cfi_startproc + subl $4, %esp + .cfi_def_cfa_offset 8 + movl $1, (%esp) + call f + .cfi_def_cfa_offset 4 + subl $4, %esp + .cfi_def_cfa_offset 8 + addl $1, %eax + addl $4, %esp + .cfi_def_cfa_offset 4 + ret + .cfi_endproc +.LFE1: + .size g, .-g + .globl main + .type main, @function +main: +.LFB2: + .cfi_startproc + call g + addl $1, %eax + ret + .cfi_endproc +.LFE2: + .size main, .-main diff --git a/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp b/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp new file mode 100644 index 0000000..cf41c57 --- /dev/null +++ b/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp @@ -0,0 +1,34 @@ +# Copyright 2012 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/>. + +# [RFA] DWARF frame unwinder executes one too many rows +# http://sourceware.org/ml/gdb-patches/2012-07/msg00650.html + +if {(![istarget "x86_64-*-*"] && ![istarget "i?86-*-*"]) || ![is_ilp32_target] } { + return 0 +} + +set testfile "i386-cfi-notcurrent" +set srcfile ${testfile}.S + +if [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {nodebug}] { + return -1 +} + +if ![runto f] { + return -1 +} + +gdb_test "backtrace" "#0 \[^\r\n\]* f \[^\r\n\]*\r\n#1 \[^\r\n\]* g \[^\r\n\]*\r\n#2 \[^\r\n\]* main \[^\r\n\]*" |