[02/12] gdb: make install_breakpoint return a non-owning reference

Message ID 20221206135729.3937767-3-simon.marchi@efficios.com
State New
Headers
Series Initial support for ROCm platform (AMDGPU) debugging |

Commit Message

Simon Marchi Dec. 6, 2022, 1:57 p.m. UTC
  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

Andrew Burgess Dec. 6, 2022, 4:46 p.m. UTC | #1
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
  

Patch

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,