? diffs Index: setbacktrace.c =================================================================== RCS file: setbacktrace.c diff -N setbacktrace.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ setbacktrace.c 24 Sep 2004 22:29:35 -0000 @@ -0,0 +1,33 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +int +factorial (int n) +{ + if (n > 0) + return factorial (n - 1) * n; + else + return 1; +} + +int +main () +{ + return factorial (3); +} Index: setbacktrace.exp =================================================================== RCS file: setbacktrace.exp diff -N setbacktrace.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ setbacktrace.exp 24 Sep 2004 22:29:35 -0000 @@ -0,0 +1,82 @@ +# This file is part of the gdb testsuite. + +# Copyright 2004 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Check GDB's ability to control the backtrace using the set/show +# backtrace settings. + +if $tracelevel { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +set testfile setbacktrace +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + untested "Couldn't compile ${testfile}.c" + return -1 +} + +# get things started +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +# Advance to main +if { ![runto_main] } then { + gdb_suppress_tests; +} + +proc gdb_test_list { command name tests } { + global gdb_prompt + + send_gdb "${command\n" + gdb_expect_list "$name" ".*$gdb_prompt " $tests +} + +# Check that someone has not snuck in an extra backtrace option, if +# they do they will need to fix this and any such fix should also be +# accompanied by a corresponding SET test. +set test "show backtrace" +gdb_test_list "set backtrace" { + "limit: The upper bound on the number of bactrace levels is unlimited." + "past-main: Whether backtraces should continue past \"main\" is off. +} + + +# create a simple stack +gdb_test "break factorial if n == 0" +gdb_continue + + +# check a backtrace to main + + +# check a backtrace past main, specify a backtrace limit so it does not fall off the end of the stack + + +# re-check that bactrace to main + + +# set the backtrace limit + + +# re-set limit to unlimited