diff options
author | Pierre Muller <muller@sourceware.org> | 2010-04-26 20:49:28 +0000 |
---|---|---|
committer | Pierre Muller <muller@sourceware.org> | 2010-04-26 20:49:28 +0000 |
commit | bdf92a1c039d3dfb07246213967bf109545e07a5 (patch) | |
tree | 537949615596f769eec12890fc4daec25ae45a1e /gdb/testsuite | |
parent | 3f172e2492c90613517c90f46a1161d44e2745ca (diff) | |
download | gdb-bdf92a1c039d3dfb07246213967bf109545e07a5.zip gdb-bdf92a1c039d3dfb07246213967bf109545e07a5.tar.gz gdb-bdf92a1c039d3dfb07246213967bf109545e07a5.tar.bz2 |
PR breakpoints/11531.
* gdb.base/gdb11531.c: New file.
* gdb.base/gdb11531.exp: New file.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/gdb11531.c | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/gdb11531.exp | 64 |
3 files changed, 110 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4c3bf83..5be5bb7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-04-24 Pierre Muller <muller@ics.u-strasbg.fr> + + PR breakpoints/11531. + * gdb.base/gdb11531.c: New file. + * gdb.base/gdb11531.exp: New file. + 2010-04-26 Tom Tromey <tromey@redhat.com> * gdb.base/completion.exp: Add tests for completion and deprecated diff --git a/gdb/testsuite/gdb.base/gdb11531.c b/gdb/testsuite/gdb.base/gdb11531.c new file mode 100644 index 0000000..5a7a3de --- /dev/null +++ b/gdb/testsuite/gdb.base/gdb11531.c @@ -0,0 +1,40 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2010 Free Software Foundation, Inc. + + Contributed by Pierre Muller. + + 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 for Solaris specific watchpoint problem. */ + +struct rec +{ + int x; + double y; + int z; +}; + +static struct rec myrec; + +int +main () +{ + myrec.x = 5; + myrec.y = 3.4; + myrec.z = 56; + myrec.x = 78; + return myrec.x; +} + diff --git a/gdb/testsuite/gdb.base/gdb11531.exp b/gdb/testsuite/gdb.base/gdb11531.exp new file mode 100644 index 0000000..43748a1 --- /dev/null +++ b/gdb/testsuite/gdb.base/gdb11531.exp @@ -0,0 +1,64 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2010 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 GDB bug report 11531. +# This is a problem related to CANNOT_STEP_HW_WATCHPOINTS macro. +# It affects Solaris native targets. + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +set testfile "gdb11531" + +if { [prepare_for_testing $testfile.exp $testfile $testfile.c {debug}] } { + return -1; +} + + +if { ![runto main] } then { + fail "run to main" + return +} + +# The breakpoint is probably at the instruction where the value being +# watched (myrec.x) gets updated. This is the instruction where we +# expect to receive a watchpoint notification when we do the "stepi" +# below. However, having the breakpoint at the same location as this +# intruction can possibly interfere with our testcase, as stepping +# over the breakpoint in order to get past it may incorrectly lead +# to the debugger missing the watchpoint hit. This would be a bug +# in GDB, but this is not the bug that we are trying to test here. +# So, we remove all breakpoints first. + +delete_breakpoints + +set nl "\[\r\n\]+" + +gdb_test "watch myrec.x" ".*atchpoint \[0-9\]+: myrec\.x" "Set watchpoint" + +gdb_test "next" \ + ".*${nl}.*atchpoint \[0-9\]+: myrec\.x${nl}Old value = 0${nl}New value = 5${nl}.*" \ + "watchpoint variable triggers at next" + +gdb_test "continue" \ + ".*${nl}.*atchpoint \[0-9\]+: myrec\.x${nl}Old value = 5${nl}New value = 78${nl}.*" \ + "watchpoint variable triggers at continue" + |