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

Fernando Nasser
2001-05-11T09:15:00Z

Keith Seitz wrote:
>
> On Fri, 11 May 2001, Fernando Nasser wrote:
>
> > Keith, you have attached the same old patch!
>
> Maybe that was intentional! ([hypnotizing voice] You _will_ see things my
> way!)
>
> Here's the real revised patch. No really, it is.
>

This looks good (and safe) to me. But we need Michael's or Jim's
approval.

Or would this be an obvious fix? You are just making the code do what
the documentation (comments) say it should do. It is very safe as well,
it should not impact anything else (now that the hooks were left alone).

Fernando

> 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 16:01:17
> @@ -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
> @@ -4375,7 +4384,8 @@ mention (struct breakpoint *b)
> delete_breakpoint_hook and so on. */
> if (create_breakpoint_hook)
> create_breakpoint_hook (b);
> - breakpoint_create_event (b->number);
> + if (REPORT_BREAKPOINT_EVENT (b))
> + breakpoint_create_event (b->number);
>
> switch (b->type)
> {
> @@ -6735,7 +6745,8 @@ delete_breakpoint (struct breakpoint *bp
>
> if (delete_breakpoint_hook)
> delete_breakpoint_hook (bpt);
> - breakpoint_delete_event (bpt->number);
> + if (REPORT_BREAKPOINT_EVENT (bpt))
> + breakpoint_delete_event (bpt->number);
>
> if (bpt->inserted)
> remove_breakpoint (bpt, mark_uninserted);
> @@ -7304,7 +7315,8 @@ disable_breakpoint (struct breakpoint *b
>
> if (modify_breakpoint_hook)
> modify_breakpoint_hook (bpt);
> - breakpoint_modify_event (bpt->number);
> + if (REPORT_BREAKPOINT_EVENT (bpt))
> + breakpoint_modify_event (bpt->number);
> }
>
> /* ARGSUSED */
> @@ -7433,7 +7445,8 @@ have been allocated for other watchpoint
> }
> if (modify_breakpoint_hook)
> modify_breakpoint_hook (bpt);
> - breakpoint_modify_event (bpt->number);
> + if (REPORT_BREAKPOINT_EVENT (bpt))
> + breakpoint_modify_event (bpt->number);
> }
>
> void
>
> > I am not against removing the hook. I would not be so certain that
> > NOTHING is using it as there are too many obscure academic projects
> > going on using Free Software. That is how Free Software started (and
> > how I started hacking GDB) and I would not like to discard them. But,
> > whoever is doing anything with GDB should be monitoring this list. So,
> > if you post to gdb@sources saying that you will get rid of these hooks
> > and nobody answers in a reasonable time, "off with their heads"!
>
> Ugh. I suddenly remembered why I didn't post a patch eliminating the
> hook.. annotate.c.
>
> Maybe I should work on converting annotate.c, too? ;-)
>
> Keith