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]

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


Keith Seitz wrote:
> 
> 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
> 

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.

F.


> 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

-- 
Fernando Nasser
Red Hat Canada Ltd.                     E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


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