diff options
author | Pedro Alves <pedro@palves.net> | 2022-05-07 01:29:34 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2022-05-20 20:41:01 +0100 |
commit | 92bb0228c8293ec78c0efcd556b1f115b6e1b3f4 (patch) | |
tree | c9878ddf8cb8af4032f78415f71cef8ede55af19 /gdb | |
parent | acd0955bc118d14dd32c08fd8a6b2ca7fa4e294c (diff) |
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
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/break-catch-throw.c | 6 | ||||
-rw-r--r-- | gdb/breakpoint.c | 24 | ||||
-rw-r--r-- | 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 90fc3e6d32..a6f477b712 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 96cf1ee7a8..bfb5cd37ec 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 21dd8d53b2..af69af6863 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -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); |