This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[RFA] breakpoint.c: don't generate bp events for internal bps
- To: <gdb-patches at sources dot redhat dot com>
- Subject: [RFA] breakpoint.c: don't generate bp events for internal bps
- From: Keith Seitz <keiths at cygnus dot com>
- Date: Thu, 10 May 2001 20:27:41 -0700 (PDT)
Hi,
Currently ALL breakpoint modifications, deletions, creations generate an
event. I don't think a user interface really cares about the "internal"
breakpoints.
This patch adds a new macro which assesses whether a given breakpoint
should generate an event.
Michael,JimB: your input on whether I've gotten all the "interesting" ones
is especially welcome.
Keith
ChangeLog:
2001-05-10 Keith Seitz <keiths@cygnus.com>
* breakpoint.c (REPORT_BREAKPOINT_EVENT): New macro:
determines whether a given breakpoint event should be
generated.
(mention, delete_breakpoint, disable_breakpoint,
do_enable_breakpoint): Use REPORT_BREAKPOINT_EVENT to
determine if a breakpoint event should be generated for
a given breakpoint.
Patch:
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.35
diff -u -p -r1.35 breakpoint.c
--- breakpoint.c 2001/05/06 22:22:02 1.35
+++ breakpoint.c 2001/05/11 03:23:55
@@ -318,6 +318,15 @@ int exception_support_initialized = 0;
error ("catch of library unloads not yet implemented on this platform")
#endif
+/* Is this breakpoint interesting to a user interface? */
+#define REPORT_BREAKPOINT_EVENT(bp) \
+((bp)->type == bp_breakpoint \
+ || (bp)->type == bp_hardware_breakpoint \
+ || (bp)->type == bp_watchpoint \
+ || (bp)->type == bp_hardware_watchpoint \
+ || (bp)->type == bp_read_watchpoint \
+ || (bp)->type == bp_access_watchpoint)
+
/* Set breakpoint count to NUM. */
void
@@ -4373,9 +4382,12 @@ mention (struct breakpoint *b)
clean this up and at the same time replace the random calls to
breakpoint_changed with this hook, as has already been done for
delete_breakpoint_hook and so on. */
- if (create_breakpoint_hook)
- create_breakpoint_hook (b);
- breakpoint_create_event (b->number);
+ if (REPORT_BREAKPOINT_EVENT (b))
+ {
+ if (create_breakpoint_hook)
+ create_breakpoint_hook (b);
+ breakpoint_create_event (b->number);
+ }
switch (b->type)
{
@@ -6733,9 +6745,12 @@ delete_breakpoint (struct breakpoint *bp
if (bpt->type == bp_none)
return;
- if (delete_breakpoint_hook)
- delete_breakpoint_hook (bpt);
- breakpoint_delete_event (bpt->number);
+ if (REPORT_BREAKPOINT_EVENT (bpt))
+ {
+ if (delete_breakpoint_hook)
+ delete_breakpoint_hook (bpt);
+ breakpoint_delete_event (bpt->number);
+ }
if (bpt->inserted)
remove_breakpoint (bpt, mark_uninserted);
@@ -7302,9 +7317,12 @@ disable_breakpoint (struct breakpoint *b
check_duplicates (bpt);
- if (modify_breakpoint_hook)
- modify_breakpoint_hook (bpt);
- breakpoint_modify_event (bpt->number);
+ if (REPORT_BREAKPOINT_EVENT (bpt))
+ {
+ if (modify_breakpoint_hook)
+ modify_breakpoint_hook (bpt);
+ breakpoint_modify_event (bpt->number);
+ }
}
/* ARGSUSED */
@@ -7430,10 +7448,14 @@ have been allocated for other watchpoint
if (save_selected_frame_level >= 0)
select_frame (save_selected_frame, save_selected_frame_level);
value_free_to_mark (mark);
+ }
+
+ if (REPORT_BREAKPOINT_EVENT (bpt))
+ {
+ if (modify_breakpoint_hook)
+ modify_breakpoint_hook (bpt);
+ breakpoint_modify_event (bpt->number);
}
- if (modify_breakpoint_hook)
- modify_breakpoint_hook (bpt);
- breakpoint_modify_event (bpt->number);
}
void