Move common bits of catchpoint/exception_catchpoint to breakpoint's ctor
authorPedro Alves <pedro@palves.net>
Sat, 7 May 2022 00:29:34 +0000 (01:29 +0100)
committerPedro Alves <pedro@palves.net>
Fri, 20 May 2022 19:41:01 +0000 (20:41 +0100)
Move common bits of catchpoint and exception_catchpoint to
breakpoint's ctor, to avoid duplicating code.

Change-Id: I3a115180f4d496426522f1d89a3875026aea3cf2

gdb/break-catch-throw.c
gdb/breakpoint.c
gdb/breakpoint.h

index 90fc3e6d3257ffa8d0a25dbfd51c782a1e55a825..a6f477b712aa6b01d432c33a8112dd7e38cc69c8 100644 (file)
@@ -73,7 +73,7 @@ struct exception_catchpoint : public base_breakpoint
                        bool temp, const char *cond_string_,
                        enum exception_event_kind kind_,
                        std::string &&except_rx)
-    : base_breakpoint (gdbarch, bp_catchpoint),
+    : base_breakpoint (gdbarch, bp_catchpoint, temp, cond_string_),
       kind (kind_),
       exception_rx (std::move (except_rx)),
       pattern (exception_rx.empty ()
@@ -81,10 +81,6 @@ struct exception_catchpoint : public base_breakpoint
               : new compiled_regex (exception_rx.c_str (), REG_NOSUB,
                                     _("invalid type-matching regexp")))
   {
-    if (cond_string_ != nullptr)
-      cond_string = make_unique_xstrdup (cond_string_);
-    disposition = temp ? disp_del : disp_donttouch;
-
     pspace = current_program_space;
     re_set ();
   }
index 96cf1ee7a8250667a5637e4c933505a49696fae4..bfb5cd37ecdc1f7acc25d2b3b227b6855af76a64 100644 (file)
@@ -7725,17 +7725,29 @@ disable_breakpoints_in_freed_objfile (struct objfile *objfile)
 
 /* See breakpoint.h.  */
 
+breakpoint::breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
+                       bool temp, const char *cond_string_)
+  : type (bptype),
+    disposition (temp ? disp_del : disp_donttouch),
+    gdbarch (gdbarch_),
+    language (current_language->la_language),
+    input_radix (::input_radix),
+    cond_string (cond_string_ != nullptr
+                ? make_unique_xstrdup (cond_string_)
+                : nullptr),
+    related_breakpoint (this)
+{
+}
+
+/* See breakpoint.h.  */
+
 catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
-                       const char *cond_string_)
-  : breakpoint (gdbarch, bp_catchpoint)
+                       const char *cond_string)
+  : breakpoint (gdbarch, bp_catchpoint, temp, cond_string)
 {
   add_dummy_location (this, current_program_space);
 
   pspace = current_program_space;
-
-  if (cond_string_ != nullptr)
-    cond_string = make_unique_xstrdup (cond_string_);
-  disposition = temp ? disp_del : disp_donttouch;
 }
 
 void
index 21dd8d53b2da57146a74efb173008a4e2e9c73de..af69af6863bd1c96bf3b4951f31c772d8d4e80b7 100644 (file)
@@ -620,14 +620,8 @@ using bp_location_range = next_range<bp_location>;
 
 struct breakpoint
 {
-  breakpoint (struct gdbarch *gdbarch_, enum bptype bptype)
-    : type (bptype),
-      gdbarch (gdbarch_),
-      language (current_language->la_language),
-      input_radix (::input_radix),
-      related_breakpoint (this)
-  {
-  }
+  breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
+             bool temp = true, const char *cond_string = nullptr);
 
   DISABLE_COPY_AND_ASSIGN (breakpoint);