| # This testcase is part of GDB, the GNU debugger. |
| |
| # Copyright 2015-2021 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/>. |
| |
| # Test that checks if we handle a SIGSEGV,SIGILL caused by gdb in the inferior |
| # even if we have noprint,nostop options set in handle SIGSEV,SIGILL |
| # See PR breakpoints/16812 |
| |
| standard_testfile |
| |
| # Some targets can't call functions, so don't even bother with this |
| # test. |
| if [target_info exists gdb,cannot_call_functions] { |
| unsupported "cannot call functions" |
| return |
| } |
| |
| set dp_location [gdb_get_line_number "set dprintf here"] |
| set bp_location [gdb_get_line_number "set breakpoint here"] |
| |
| if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { |
| return -1 |
| } |
| |
| if ![runto_main] { |
| return -1 |
| } |
| |
| gdb_test "handle SIGSEGV nostop noprint" \ |
| "Signal\[ \t\]+Stop\[ \t\]+Print\[ \t\]+Pass to program\[ \t\]+Description\r\nSIGSEGV\[ \t\]+No\[ \t\]+No\[ \t\]+Yes\[ \t\].*" |
| gdb_test "handle SIGILL nostop noprint" \ |
| "Signal\[ \t\]+Stop\[ \t\]+Print\[ \t\]+Pass to program\[ \t\]+Description\r\nSIGILL\[ \t\]+No\[ \t\]+No\[ \t\]+Yes\[ \t\].*" |
| |
| gdb_test "print return_one()" " = 1" |
| |
| if ![target_info exists gdb,noinferiorio] { |
| |
| # Clean up the breakpoint state. |
| delete_breakpoints |
| |
| gdb_breakpoint $bp_location |
| |
| gdb_test_no_output "set dprintf-style call" |
| |
| # Also test with dprintf since the original bug was noticed using dprintf. |
| gdb_test "dprintf $dp_location,\"testdprintf\\n\"" "Dprintf .*" |
| |
| gdb_test_stdio "continue" "testdprintf" |
| } |