From 92bb0228c8293ec78c0efcd556b1f115b6e1b3f4 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Sat, 7 May 2022 01:29:34 +0100 Subject: [PATCH] Move common bits of catchpoint/exception_catchpoint to breakpoint's ctor Move common bits of catchpoint and exception_catchpoint to breakpoint's ctor, to avoid duplicating code. Change-Id: I3a115180f4d496426522f1d89a3875026aea3cf2 --- gdb/break-catch-throw.c | 6 +----- gdb/breakpoint.c | 24 ++++++++++++++++++------ gdb/breakpoint.h | 10 ++-------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c index 90fc3e6d325..a6f477b712a 100644 --- a/gdb/break-catch-throw.c +++ b/gdb/break-catch-throw.c @@ -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 (); } diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 96cf1ee7a82..bfb5cd37ecd 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -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 diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 21dd8d53b2d..af69af6863b 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -620,14 +620,8 @@ using bp_location_range = next_range; 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); -- 2.30.2