[02/12] gdb: make install_breakpoint return a non-owning reference
Commit Message
From: Pedro Alves <pedro@palves.net>
A following patch will want to install a breakpoint and then keep a
non-owning reference to it. Make install_breakpoint return a non-owning
reference, to make that easy.
Co-Authored-By: Simon Marchi <simon.marchi@efficios.com>
Change-Id: I2e8106a784021ff276ce251e24708cbdccc2d479
---
gdb/breakpoint.c | 4 +++-
gdb/breakpoint.h | 8 +++++---
2 files changed, 8 insertions(+), 4 deletions(-)
Comments
Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:
> From: Pedro Alves <pedro@palves.net>
>
> A following patch will want to install a breakpoint and then keep a
> non-owning reference to it. Make install_breakpoint return a non-owning
> reference, to make that easy.
LGTM.
Thanks,
Andrew
>
> Co-Authored-By: Simon Marchi <simon.marchi@efficios.com>
> Change-Id: I2e8106a784021ff276ce251e24708cbdccc2d479
> ---
> gdb/breakpoint.c | 4 +++-
> gdb/breakpoint.h | 8 +++++---
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
> index f0276a963c0..f974808b4b4 100644
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -7954,7 +7954,7 @@ catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
> pspace = current_program_space;
> }
>
> -void
> +breakpoint *
> install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
> {
> breakpoint *b = add_to_breakpoint_chain (std::move (arg));
> @@ -7967,6 +7967,8 @@ install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_
>
> if (update_gll)
> update_global_location_list (UGLL_MAY_INSERT);
> +
> + return b;
> }
>
> static int
> diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
> index f7633d29cbf..eafe694f367 100644
> --- a/gdb/breakpoint.h
> +++ b/gdb/breakpoint.h
> @@ -1479,10 +1479,12 @@ extern void
> target and breakpoint_created observers of its existence. If
> INTERNAL is non-zero, the breakpoint number will be allocated from
> the internal breakpoint count. If UPDATE_GLL is non-zero,
> - update_global_location_list will be called. */
> + update_global_location_list will be called.
>
> -extern void install_breakpoint (int internal, std::unique_ptr<breakpoint> &&b,
> - int update_gll);
> + Takes ownership of B, and returns a non-owning reference to it. */
> +
> +extern breakpoint *install_breakpoint
> + (int internal, std::unique_ptr<breakpoint> &&b, int update_gll);
>
> /* Returns the breakpoint ops appropriate for use with with LOCSPEC
> and according to IS_TRACEPOINT. Use this to ensure, for example,
> --
> 2.38.1
@@ -7954,7 +7954,7 @@ catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
pspace = current_program_space;
}
-void
+breakpoint *
install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
{
breakpoint *b = add_to_breakpoint_chain (std::move (arg));
@@ -7967,6 +7967,8 @@ install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_
if (update_gll)
update_global_location_list (UGLL_MAY_INSERT);
+
+ return b;
}
static int
@@ -1479,10 +1479,12 @@ extern void
target and breakpoint_created observers of its existence. If
INTERNAL is non-zero, the breakpoint number will be allocated from
the internal breakpoint count. If UPDATE_GLL is non-zero,
- update_global_location_list will be called. */
+ update_global_location_list will be called.
-extern void install_breakpoint (int internal, std::unique_ptr<breakpoint> &&b,
- int update_gll);
+ Takes ownership of B, and returns a non-owning reference to it. */
+
+extern breakpoint *install_breakpoint
+ (int internal, std::unique_ptr<breakpoint> &&b, int update_gll);
/* Returns the breakpoint ops appropriate for use with with LOCSPEC
and according to IS_TRACEPOINT. Use this to ensure, for example,