This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[RFA] breakpoint.c: don't generate bp events for internal bps


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]