diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/stack-checking.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/stack-checking.exp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/stack-checking.exp b/gdb/testsuite/gdb.base/stack-checking.exp new file mode 100644 index 0000000..74c0c0c --- /dev/null +++ b/gdb/testsuite/gdb.base/stack-checking.exp @@ -0,0 +1,53 @@ +# Copyright 2008 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/>. + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +set testfile "stack-checking" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug additional_flags=-fstack-check nowarnings]] != "" } { + untested stack-checking.exp + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + + +# Test that the debugger is able to unwind to "main" at the next breakpoint +# hit. The frame number of "main" should be passed into MAIN_FRAME_NUMBER." +proc backtrace_test {name main_frame_number} { + gdb_continue_to_breakpoint "breakpoint for $name" + gdb_test "bt" "#${main_frame_number}.*in main ().*" +} + +gdb_breakpoint [gdb_get_line_number "set breakpoint here"] +backtrace_test "small frame" "1" +backtrace_test "medium frame" "2" +backtrace_test "big frame" "2" |