# Copyright 2018-2022 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 . # # This file is part of the gdb testsuite. if { [is_remote host] } { gdb_remote_download host $srcdir/$subdir/large-frame.h } # This test was added to test GDB's ability to backtrace over a large # stack frame for which there is no debug information. This should # test the non-DWARF stack unwinder. # # The test was originally added for Risc-V where this case caused a # problem at one point, however, there's nothing Risc-V specific in # the test. proc run_test { opt_level } { global srcfile srcfile2 binfile hex standard_testfile large-frame-1.c large-frame-2.c if {[prepare_for_testing_full "failed to prepare" \ [list ${binfile}-${opt_level} debug \ $srcfile [list debug] \ $srcfile2 [list nodebug optimize=-$opt_level]]]} { return } if {![runto_main]} { return } gdb_breakpoint "blah" gdb_continue_to_breakpoint "blah" gdb_test "backtrace" [multi_line \ "#0 blah \[^\n\r\]+" \ "#1 $hex in func \[^\n\r\]+" \ "#2 $hex in main \[^\n\r\]+"] } foreach opt { O0 O1 O2 } { with_test_prefix "optimize=-$opt" { run_test $opt } }