From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Seitz To: Fernando Nasser Cc: Subject: Re: [RFA] breakpoint.c: don't generate bp events for internal bps Date: Fri, 11 May 2001 07:05:00 -0000 Message-id: References: <3AFB779D.E9F4B5D3@redhat.com> X-SW-Source: 2001-05/msg00207.html On Fri, 11 May 2001, Fernando Nasser wrote: > It is OK to only generate events for visible breakpoints, but the hook > must run for all breakpoints. Whatever is using the hook may need to > know about the internal ones as well. Despite the fact that NOTHING uses the hook, here is a revised 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