# Copyright (C) 2021-2023 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 . # Test gdb.PendingFrame.level method. load_lib gdb-python.exp require !skip_python_tests standard_testfile if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { return -1 } if {![runto_main]} { return 0 } set pyfile [gdb_remote_download host ${srcdir}/${subdir}/${testfile}.py] gdb_breakpoint [gdb_get_line_number "Break here"] gdb_continue_to_breakpoint "stop at test breakpoint" # An initial look at the stack to ensure it is correct. gdb_test_sequence "bt" "Initial backtrace" { "\\r\\n#0 \[^\r\n\]* f0 \\(\\) at " "\\r\\n#1 \[^\r\n\]* f1 \\(\\) at " "\\r\\n#2 \[^\r\n\]* f2 \\(\\) at " "\\r\\n#3 \[^\r\n\]* f3 \\(\\) at " "\\r\\n#4 \[^\r\n\]* main \\(\\) at " } # Load the script containing the unwinder. gdb_test_no_output "source ${pyfile}"\ "import python scripts" # Now look at the stack again, we should see output from the Python # unwinder mixed in. gdb_test_sequence "bt" "Backtrace with extra Python output" { "Func f0, Level 0" "Func f1, Level 1" "\\r\\n#0 \[^\r\n\]* f0 \\(\\) at " "\\r\\n#1 \[^\r\n\]* f1 \\(\\) at " "Func f2, Level 2" "\\r\\n#2 \[^\r\n\]* f2 \\(\\) at " "Func f3, Level 3" "\\r\\n#3 \[^\r\n\]* f3 \\(\\) at " "Func main, Level 4" "\\r\\n#4 \[^\r\n\]* main \\(\\) at " }