old-cross-binutils/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp
Jan Kratochvil a79d3c27d1 gdb/
Fix repeated rwatch output.
	* amd64-linux-nat.c (amd64_linux_dr_set, amd64_linux_dr_set_control)
	(amd64_linux_dr_set_addr, amd64_linux_dr_reset_addr)
	(amd64_linux_dr_get_status): New comments.
	(amd64_linux_dr_unset_status): New function.
	(_initialize_amd64_linux_nat): Install it.
	* i386-linux-nat.c (i386_linux_dr_get, i386_linux_dr_set)
	(i386_linux_dr_set_control, i386_linux_dr_set_addr)
	(i386_linux_dr_reset_addr, i386_linux_dr_get_status): New comments.
	(i386_linux_dr_unset_status): New function.
	(_initialize_i386_linux_nat): Install it.
	* i386-nat.c (I386_DR_WATCH_MASK): New macro.
	(I386_DR_WATCH_HIT): Use I386_DR_WATCH_MASK.
	(i386_insert_aligned_watchpoint): Call i386_dr_low.unset_status.
	* i386-nat.h (struct i386_dr_low_type): Extend comments for
	set_control, set_addr, reset_addr and get_status.  New unset_status.
	* breakpoint.c (update_watchpoint): Extend the comment.

gdb/testsuite/
	* gdb.base/watchpoint-hw-hit-once.exp,
	gdb.base/watchpoint-hw-hit-once.c: New.
2009-11-20 19:57:29 +00:00

43 lines
1.5 KiB
Text

# Copyright 2009 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/>.
# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set.
if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
&& ![istarget "ia64-*-*"] && ![istarget "s390*-*-*"])
|| [target_info exists gdb,no_hardware_watchpoints]} then {
verbose "Skipping watchpoint-hw-hit-once test."
return
}
set test watchpoint-hw-hit-once
set srcfile ${test}.c
if { [prepare_for_testing ${test}.exp ${test} ${srcfile}] } {
return -1
}
if ![runto_main] {
return -1
}
gdb_test "rwatch watchee"
gdb_breakpoint [gdb_get_line_number "break-at-exit"]
gdb_test "continue" "Continuing.\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*"
# Here should be no repeated notification of the read watchpoint.
gdb_test "continue" \
"Continuing\\.\[ \r\n\]+Breakpoint \[0-9\]+, .*break-at-exit.*" \
"continue to break-at-exit"