[v2,2/8] gdb: make install_breakpoint return a non-owning reference

Message ID 20230105200237.987771-3-simon.marchi@polymtl.ca
State Committed
Commit b82d4ec99e3347b62a16cf5456628a37a128a99b
Headers
Series Initial support for ROCm platform (AMD GPU) debugging |

Commit Message

Simon Marchi Jan. 5, 2023, 8:02 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
Approved-By: Andrew Burgess <aburgess@redhat.com>
---
 gdb/breakpoint.c | 4 +++-
 gdb/breakpoint.h | 8 +++++---
 2 files changed, 8 insertions(+), 4 deletions(-)
  

Patch

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 8cfc46e0bed4..5778a5c64dfb 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -7956,7 +7956,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));
@@ -7969,6 +7969,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 7289a09e95c5..93267a1d177f 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -1480,10 +1480,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,