From f6592439189cea5986f6bdc476001a2b3db6918a Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 6 Nov 2012 15:25:05 +0000 Subject: [PATCH] gdb/ 2012-11-06 Pedro Alves PR gdb/14810 * breakpoint.c (bpstat_stop_status): Skip disabled locations. gdb/testsuite/ 2012-11-06 Pedro Alves PR gdb/14810 * gdb.base/disabled-location.c: New file. * gdb.base/disabled-location.exp: New file. --- gdb/ChangeLog | 6 ++++ gdb/breakpoint.c | 2 +- gdb/testsuite/ChangeLog | 7 +++++ gdb/testsuite/gdb.base/disabled-location.c | 29 ++++++++++++++++++++ gdb/testsuite/gdb.base/disabled-location.exp | 41 ++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 gdb/testsuite/gdb.base/disabled-location.c create mode 100644 gdb/testsuite/gdb.base/disabled-location.exp diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2192b17..0edabcf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2012-11-06 Pedro Alves + + PR gdb/14810 + + * breakpoint.c (bpstat_stop_status): Skip disabled locations. + 2012-11-06 Pierre Muller * contrib/ari/create-web-ari-in-src.sh: Avoid problem if script diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 851dd86..e4ba90d 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5175,7 +5175,7 @@ bpstat_stop_status (struct address_space *aspace, if (b->type == bp_hardware_watchpoint && bl != b->loc) break; - if (bl->shlib_disabled) + if (!bl->enabled || bl->shlib_disabled) continue; if (!bpstat_check_location (bl, aspace, bp_addr, ws)) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index be01765..5147182 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2012-11-06 Pedro Alves + + PR gdb/14810 + + * gdb.base/disabled-location.c: New file. + * gdb.base/disabled-location.exp: New file. + 2012-11-06 Tom Tromey * gdb.threads/gcore-thread.exp: Use gdb_gcore_cmd. diff --git a/gdb/testsuite/gdb.base/disabled-location.c b/gdb/testsuite/gdb.base/disabled-location.c new file mode 100644 index 0000000..5325d5e --- /dev/null +++ b/gdb/testsuite/gdb.base/disabled-location.c @@ -0,0 +1,29 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright (C) 2012 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 . */ + +static int +function (void) +{ + return 1; /* step stops here */ +} + +int +main () +{ + function (); + return 0; +} diff --git a/gdb/testsuite/gdb.base/disabled-location.exp b/gdb/testsuite/gdb.base/disabled-location.exp new file mode 100644 index 0000000..675cbb0 --- /dev/null +++ b/gdb/testsuite/gdb.base/disabled-location.exp @@ -0,0 +1,41 @@ +# Copyright (C) 2012 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 . + +standard_testfile + +if { [prepare_for_testing ${testfile}.exp ${testfile}] } { + return -1 +} + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + +gdb_test "break function" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "setting breakpoint on function" + +gdb_test_no_output "disable \$bpnum.1" "disable location" + +set test "step doesn't trip on disabled location" +gdb_test_multiple "step" $test { + -re "Breakpoint .*$gdb_prompt $" { + fail $test + } + -re "function \\(\\) at .*$srcfile:.*step stops here.*$gdb_prompt $" { + pass $test + } +} -- 2.7.4