[RFA 01/14] Introduce event_location_up

Simon Marchi simon.marchi@polymtl.ca
Mon Apr 10 01:33:00 GMT 2017


On 2017-04-08 16:11, Tom Tromey wrote:
> This removes make_cleanup_delete_event_location and instead changes
> the various location functions to return an event_location_up, a new
> unique_ptr typedef.

Thanks for doing this, the patch looks good to me.  Two suggestions 
below.

> This is largely straightforward, but be sure to examine the
> init_breakpoint_sal change.  I believe the code I deleted there is
> dead, because "location != NULL" can never be true in that branch; but
> you should double-check.

It looks correct.

> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
> index 3925ec6..f3834d5 100644
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -3472,7 +3472,7 @@ create_overlay_event_breakpoint (void)
>  				      &internal_breakpoint_ops);
>        initialize_explicit_location (&explicit_loc);
>        explicit_loc.function_name = ASTRDUP (func_name);
> -      b->location = new_explicit_location (&explicit_loc);
> +      b->location = new_explicit_location (&explicit_loc).release ();

Since the breakpoint structure is new'ed and delete'd, you can also 
change breakpoint's location field to be an event_location_up, instead 
of doing a (bunch of) release.  I think you could do the same with the 
location field in linespec_result as well, since that structure is only 
allocated statically (and therefore its defaults ctor/dtor are called).

> @@ -15278,7 +15241,7 @@ static void
>  strace_command (char *arg, int from_tty)
>  {
>    struct breakpoint_ops *ops;
> -  struct event_location *location;
> +  event_location_up location;
>    struct cleanup *back_to;
> 
>    /* Decide if we are dealing with a static tracepoint marker (`-m'),
> @@ -15294,9 +15257,9 @@ strace_command (char *arg, int from_tty)
>        location = string_to_event_location (&arg, current_language);
>      }
> 
> -  back_to = make_cleanup_delete_event_location (location);
> +

You can delete the extra line here.

Thanks,

Simon



More information about the Gdb-patches mailing list