From 4c0b43eb6373780e4c24716b078b3c1110140d1a Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 9 Sep 2008 18:58:19 +0000 Subject: gdb/ * infrun.c (normal_stop): Run hook-stop last. gdb/testsuite/ * gdb.base/hook-stop-continue.c: New. * gdb.base/hook-stop-continue.exp: New. --- gdb/testsuite/gdb.base/hook-stop-continue.c | 42 +++++++++++++++++++ gdb/testsuite/gdb.base/hook-stop-continue.exp | 59 +++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 gdb/testsuite/gdb.base/hook-stop-continue.c create mode 100644 gdb/testsuite/gdb.base/hook-stop-continue.exp (limited to 'gdb/testsuite/gdb.base') diff --git a/gdb/testsuite/gdb.base/hook-stop-continue.c b/gdb/testsuite/gdb.base/hook-stop-continue.c new file mode 100644 index 00000000000..a769c4100a3 --- /dev/null +++ b/gdb/testsuite/gdb.base/hook-stop-continue.c @@ -0,0 +1,42 @@ +/* This testcase is part of GDB, the GNU debugger. + + 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 . */ + +int +funbreak (int i) +{ + i = i * 2; /* set breakpoint here */ + i = i + 10; + return i; +} + +int +func (int i) +{ + return i * 2; +} + +int +main (int argc, char **argv, char **envp) +{ + func (1); + func (2); + func (3); + func (4); + funbreak (5); + + return 0; +} diff --git a/gdb/testsuite/gdb.base/hook-stop-continue.exp b/gdb/testsuite/gdb.base/hook-stop-continue.exp new file mode 100644 index 00000000000..524ef681a70 --- /dev/null +++ b/gdb/testsuite/gdb.base/hook-stop-continue.exp @@ -0,0 +1,59 @@ +# 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 . + +set testfile "hook-stop-continue" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +if { [prepare_for_testing ${testfile}.exp "${testfile}" "${testfile}.c" {debug nowarnings}] } { + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + perror "Couldn't run to main" +} + +set bp_location [gdb_get_line_number "set breakpoint here"] + +gdb_test "break $bp_location" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location\\." \ + "breakpoint line number" + +gdb_test "print \$do_continue = 1" "1" + +send_gdb "define hook-stop\n" +gdb_expect { + -re "Type commands for definition of \"hook-stop\".\r\nEnd with a line saying just \"end\".\r\n>$"\ + {send_gdb "if \$do_continue\nset \$do_continue = 0\ncontinue\nend\nend\n" + gdb_expect { + -re "$gdb_prompt $"\ + {pass "define hook-stop command"} + timeout {fail "(timeout) define hook-stop command"} + } + } + -re "$gdb_prompt $"\ + {fail "define hook-stop command"} + timeout {fail "(timeout) define hook-stop command"} +} + +gdb_test "next" "Breakpoint.*funbreak \\(i=5\\) at .*:$bp_location\r\n$bp_location.*set breakpoint here \\*/" \ + "next triggering hook-stop" + +gdb_test "next" "i = i \\+ 10;" "next no hook-stop" -- cgit v1.2.1