From b7da9e9f5f446695243846d70c34d9a19c9c961c Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Mon, 26 Apr 2010 12:01:44 +0000 Subject: [PATCH] PR breakpoints/11531. * config/i386/nm-i386sol2.h (CANNOT_STEP_HW_WATCHPOINTS): Remove macro definition and related comment. * infrun.c (CANNOT_STEP_HW_WATCHPOINTS): Remove macro. (resume): Remove code and comment related to this macro. doc ChangeLog entry: * gdbint.texinfo (CANNOT_STEP_HW_WATCHPOINTS): Remove explanation of macro deleted from GDB code. --- gdb/ChangeLog | 8 ++++++++ gdb/config/i386/nm-i386sol2.h | 10 ---------- gdb/doc/ChangeLog | 5 +++++ gdb/doc/gdbint.texinfo | 5 ----- gdb/infrun.c | 22 ---------------------- 5 files changed, 13 insertions(+), 37 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b3e61bc..6734f15 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2010-04-26 Pierre Muller + + PR breakpoints/11531. + * config/i386/nm-i386sol2.h (CANNOT_STEP_HW_WATCHPOINTS): Remove + macro definition and related comment. + * infrun.c (CANNOT_STEP_HW_WATCHPOINTS): Remove macro. + (resume): Remove code and comment related to this macro. + 2010-04-26 Jan Kratochvil * cp-namespace.c (cp_lookup_symbol_in_namespace): Fix alloca size. diff --git a/gdb/config/i386/nm-i386sol2.h b/gdb/config/i386/nm-i386sol2.h index 6ff0afb..8540e9e 100644 --- a/gdb/config/i386/nm-i386sol2.h +++ b/gdb/config/i386/nm-i386sol2.h @@ -19,14 +19,4 @@ #ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */ -/* Solaris x86 2.6 and 2.7 targets have a kernel bug when stepping - over an instruction that causes a page fault without triggering - a hardware watchpoint. The kernel properly notices that it shouldn't - stop, because the hardware watchpoint is not triggered, but it forgets - the step request and continues the program normally. - Work around the problem by removing hardware watchpoints if a step is - requested, GDB will check for a hardware watchpoint trigger after the - step anyway. */ -#define CANNOT_STEP_HW_WATCHPOINTS - #endif /* NEW_PROC_API */ diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index ff59559..f4d5050 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2010-04-26 Pierre Muller + + * gdbint.texinfo (CANNOT_STEP_HW_WATCHPOINTS): Remove explanation + of macro deleted from GDB code. + 2010-04-24 Pedro Alves * gdb.texinfo (Commands to specify files): Describe what how GDB diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo index 534eddf..d9a4a95 100644 --- a/gdb/doc/gdbint.texinfo +++ b/gdb/doc/gdbint.texinfo @@ -781,11 +781,6 @@ inferior after a watchpoint has been hit. This is usually set when watchpoints trigger at the instruction following an interesting read or write. -@findex CANNOT_STEP_HW_WATCHPOINTS -@item CANNOT_STEP_HW_WATCHPOINTS -If this is defined to a non-zero value, @value{GDBN} will remove all -watchpoints before stepping the inferior. - @findex STOPPED_BY_WATCHPOINT @item STOPPED_BY_WATCHPOINT (@var{wait_status}) Return non-zero if stopped by a watchpoint. @var{wait_status} is of diff --git a/gdb/infrun.c b/gdb/infrun.c index 5f58759..5882cb8 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -179,16 +179,6 @@ show_debug_infrun (struct ui_file *file, int from_tty, #endif -/* Convert the #defines into values. This is temporary until wfi control - flow is completely sorted out. */ - -#ifndef CANNOT_STEP_HW_WATCHPOINTS -#define CANNOT_STEP_HW_WATCHPOINTS 0 -#else -#undef CANNOT_STEP_HW_WATCHPOINTS -#define CANNOT_STEP_HW_WATCHPOINTS 1 -#endif - /* Tables of how to react to signals; the user sets them. */ static unsigned char *signal_stop; @@ -1484,18 +1474,6 @@ resume (int step, enum target_signal sig) "trap_expected=%d\n", step, sig, tp->trap_expected); - /* Some targets (e.g. Solaris x86) have a kernel bug when stepping - over an instruction that causes a page fault without triggering - a hardware watchpoint. The kernel properly notices that it shouldn't - stop, because the hardware watchpoint is not triggered, but it forgets - the step request and continues the program normally. - Work around the problem by removing hardware watchpoints if a step is - requested, GDB will check for a hardware watchpoint trigger after the - step anyway. */ - if (CANNOT_STEP_HW_WATCHPOINTS && step) - remove_hw_watchpoints (); - - /* Normally, by the time we reach `resume', the breakpoints are either removed or inserted, as appropriate. The exception is if we're sitting at a permanent breakpoint; we need to step over it, but permanent -- 2.7.4