From dc6fd90c1cf0a11812aeb11ce1b80c2e7fde4619 Mon Sep 17 00:00:00 2001 From: nobody <> Date: Tue, 31 May 2011 21:18:57 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create branch 'gdb_7_3-branch'. Cherrypick from master 2011-05-31 21:18:56 UTC Pedro Alves '2011-05-31 Pedro Alves ': gdb/testsuite/gdb.arch/i386-dr3-watch.c gdb/testsuite/gdb.arch/i386-dr3-watch.exp --- gdb/testsuite/gdb.arch/i386-dr3-watch.c | 43 ++++++++++++++++++++ gdb/testsuite/gdb.arch/i386-dr3-watch.exp | 49 +++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 gdb/testsuite/gdb.arch/i386-dr3-watch.c create mode 100644 gdb/testsuite/gdb.arch/i386-dr3-watch.exp diff --git a/gdb/testsuite/gdb.arch/i386-dr3-watch.c b/gdb/testsuite/gdb.arch/i386-dr3-watch.c new file mode 100644 index 00000000000..a851d8ad7c4 --- /dev/null +++ b/gdb/testsuite/gdb.arch/i386-dr3-watch.c @@ -0,0 +1,43 @@ +/* Copyright 2011 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 i1; +char gap1[32]; + +int i2; +char gap2[32]; + +int i3; +char gap3[32]; + +int i4; + +void +trigger (void) +{ + i1 = 1; + i2 = 2; + i3 = 3; + i4 = 4; +} + +int +main () +{ + trigger (); + return 0; +} diff --git a/gdb/testsuite/gdb.arch/i386-dr3-watch.exp b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp new file mode 100644 index 00000000000..f560b013fe6 --- /dev/null +++ b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp @@ -0,0 +1,49 @@ +# Copyright 2011 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 . + +# x86 and amd64 gdbserver had a bug where a watchpoint triggered by +# the DR3 debug register would trip on a bogus assertion. + +# This test relies on being able to set 4 hardware watchpoints. Since +# that is not a valid assumption across most targets, and we're +# testing a x86 specific bug, skip everywhere else. +if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then { + return 0 +} + +set testfile "i386-dr3-watch" +set srcfile ${testfile}.c + +if [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug $additional_flags}] { + untested "failed to compile ${testfile}" + return -1 +} + +if ![runto_main] then { + untested "could not run to main" + return -1 +} + +gdb_test_no_output "set breakpoint always-inserted on" + +gdb_test "watch i1" "Hardware watchpoint .*: i1" +gdb_test "watch i2" "Hardware watchpoint .*: i2" +gdb_test "watch i3" "Hardware watchpoint .*: i3" +gdb_test "watch i4" "Hardware watchpoint .*: i4" + +gdb_test "c" "Hardware watchpoint.*: i1.*" "continue to i1 watchpoint" +gdb_test "c" "Hardware watchpoint.*: i2.*" "continue to i2 watchpoint" +gdb_test "c" "Hardware watchpoint.*: i3.*" "continue to i3 watchpoint" +gdb_test "c" "Hardware watchpoint.*: i4.*" "continue to i4 watchpoint" -- 2.47.2