From ebec9a0f77584145a70e8f5627dd590bae43b580 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 20 Nov 2009 19:52:08 +0000 Subject: gdb/ 2009-11-20 Jan Kratochvil Pedro Alves Fix reordered watchpoints triggered in other threads during all-stop. * linux-nat.c (resume_callback, linux_nat_resume): Clear stopped_by_watchpoint. (save_sigtrap, linux_nat_stopped_by_watchpoint) (linux_nat_stopped_data_address): New. (stop_wait_callback, linux_nat_filter_event): Call save_sigtrap. (linux_nat_add_target): Install linux_nat_stopped_by_watchpoint and linux_nat_stopped_data_address. * linux-nat.h (struct lwp_info): New fields stopped_by_watchpoint, stopped_data_address_p and stopped_data_address. gdb/testsuite/ 2009-11-20 Jan Kratochvil * gdb.base/watchthreads-reorder.exp, gdb.base/watchthreads-reorder.c: New. --- gdb/linux-nat.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gdb/linux-nat.h') diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h index eae74f3..f2a74e8 100644 --- a/gdb/linux-nat.h +++ b/gdb/linux-nat.h @@ -62,6 +62,18 @@ struct lwp_info be the address of a hardware watchpoint. */ struct siginfo siginfo; + /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data + watchpoint trap. */ + int stopped_by_watchpoint; + + /* On architectures where it is possible to know the data address of + a triggered watchpoint, STOPPED_DATA_ADDRESS_P is non-zero, and + STOPPED_DATA_ADDRESS contains such data address. Otherwise, + STOPPED_DATA_ADDRESS_P is false, and STOPPED_DATA_ADDRESS is + undefined. Only valid if STOPPED_BY_WATCHPOINT is true. */ + int stopped_data_address_p; + CORE_ADDR stopped_data_address; + /* Non-zero if we expect a duplicated SIGINT. */ int ignore_sigint; -- cgit v1.1