This is the mail archive of the gdb-patches@sourceware.org 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]
Other format: [Raw text]

Re: [PATCH 2/6] allow to suppress more mi notification


On 07/24/2012 05:10 PM, Yao Qi wrote:
> Hi,
> 'mi_suppress_breakpoint_notifications' is used to suppress mi
> breakpoint notifications.  This patch is to change this variable
> to an array so that multiple mi notifications can be suppressed.
> The following patch will use it to suppress other MI notifications.
> 
> gdb:
> 
> 2012-07-24  Yao Qi  <yao@codesourcery.com>
> 
> 	* mi/mi-interp.c: Remove mi_suppress_breakpoint_notifications.
> 	Define array mi_suppress_notification.
> 	(mi_breakpoint_created): Update.
> 	(mi_breakpoint_deleted): Likewise.
> 	(mi_breakpoint_modified): Likewise.
> 	* mi/mi-main.c (mi_cmd_execute): Likewise.
> 	* mi/mi-main.h (enum MI_SUPRESS_NOTIFICATION): New.
> ---
>  gdb/mi/mi-interp.c |   12 ++++++------
>  gdb/mi/mi-main.c   |    6 ++++--
>  gdb/mi/mi-main.h   |    4 +++-
>  3 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
> index b487136..885d08b 100644
> --- a/gdb/mi/mi-interp.c
> +++ b/gdb/mi/mi-interp.c
> @@ -501,10 +501,10 @@ mi_about_to_proceed (void)
>    mi_proceeded = 1;
>  }
>  
> -/* When non-zero, no MI notifications will be emitted in
> -   response to breakpoint change observers.  */
> +/* When the element is non-zero, no MI notifications will be emitted in
> +   response to the corresponding observers.  */
>  
> -int mi_suppress_breakpoint_notifications = 0;
> +int mi_suppress_notification[] = { 0 };
>  
>  /* Emit notification about a created breakpoint.  */
>  
> @@ -515,7 +515,7 @@ mi_breakpoint_created (struct breakpoint *b)
>    struct ui_out *mi_uiout = interp_ui_out (top_level_interpreter ());
>    volatile struct gdb_exception e;
>  
> -  if (mi_suppress_breakpoint_notifications)
> +  if (mi_suppress_notification[MI_SUPPRESS_BREAKPOINT])
>      return;
>  
>    if (b->number <= 0)
> @@ -546,7 +546,7 @@ mi_breakpoint_deleted (struct breakpoint *b)
>  {
>    struct mi_interp *mi = top_level_interpreter_data ();
>  
> -  if (mi_suppress_breakpoint_notifications)
> +  if (mi_suppress_notification[MI_SUPPRESS_BREAKPOINT])
>      return;
>  
>    if (b->number <= 0)
> @@ -569,7 +569,7 @@ mi_breakpoint_modified (struct breakpoint *b)
>    struct ui_out *mi_uiout = interp_ui_out (top_level_interpreter ());
>    volatile struct gdb_exception e;
>  
> -  if (mi_suppress_breakpoint_notifications)
> +  if (mi_suppress_notification[MI_SUPPRESS_BREAKPOINT])
>      return;
>  
>    if (b->number <= 0)
> diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
> index dfb4892..0ae867d 100644
> --- a/gdb/mi/mi-main.c
> +++ b/gdb/mi/mi-main.c
> @@ -2099,8 +2099,10 @@ mi_cmd_execute (struct mi_parse *parse)
>  
>    if (strncmp (parse->command, "break-", sizeof ("break-") - 1 ) == 0)
>      {
> -      make_cleanup_restore_integer (&mi_suppress_breakpoint_notifications);
> -      mi_suppress_breakpoint_notifications = 1;
> +      int *p = &mi_suppress_notification[MI_SUPPRESS_BREAKPOINT];
> +
> +      make_cleanup_restore_integer (p);
> +      *p = 1;
>      }
>  
>    if (parse->cmd->argv_func != NULL)
> diff --git a/gdb/mi/mi-main.h b/gdb/mi/mi-main.h
> index beac2cd..1c7bf00 100644
> --- a/gdb/mi/mi-main.h
> +++ b/gdb/mi/mi-main.h
> @@ -32,7 +32,9 @@ extern char *current_token;
>  
>  extern int running_result_record_printed;
>  extern int mi_proceeded;
> -extern int mi_suppress_breakpoint_notifications;
> +
> +enum MI_SUPRESS_NOTIFICATION { MI_SUPPRESS_BREAKPOINT };
> +extern int mi_suppress_notification[];
>  

Quite frankly, I don't see how putting these in an array is better than
a separate global for each.  The memory used is the same, and with separate
globals, it's a little easier to debug from a top gdb (just print mi_suppress_<TAB> to
see the list of possibilities, etc.)  Are you planning on doing something over the
whole array, that is abstracted from the semantics of each element of the array?

-- 
Pedro Alves


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