public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Pedro Alves <palves@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Make a few functions work with base_breakpoint instead of breakpoint Date: Fri, 20 May 2022 19:42:53 +0000 (GMT) [thread overview] Message-ID: <20220520194253.C1C353856DEA@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ff733ec228e3f4f1c1607fe50aeb944505105fde commit ff733ec228e3f4f1c1607fe50aeb944505105fde Author: Pedro Alves <pedro@palves.net> Date: Fri May 6 23:11:34 2022 +0100 Make a few functions work with base_breakpoint instead of breakpoint This makes tracepoints inherit from base_breakpoint, since their locations are code locations. If we do that, then we can eliminate tracepoint::re_set and tracepoint::decode_location, as they are doing the same as the base_breakpoint implementations. With this, all breakpoint types created by new_breakpoint_from_type are code breakpoints, i.e., base_breakpoint subclasses, and thus we can make it return a base_breakpoint pointer. Finally, init_breakpoint_sal can take a base_breakpoint pointer as "self" pointer too. This will let us convert this function to a base_breakpoint ctor in a following patch. Change-Id: I3a4073ff1a4c865f525588095c18dc42b744cb54 Diff: --- gdb/breakpoint.c | 30 ++++++------------------------ gdb/breakpoint.h | 9 ++------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 1c1dbfb3ad7..d13e803dee5 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1258,10 +1258,10 @@ is_tracepoint (const struct breakpoint *b) /* Factory function to create an appropriate instance of breakpoint given TYPE. */ -static std::unique_ptr<breakpoint> +static std::unique_ptr<base_breakpoint> new_breakpoint_from_type (struct gdbarch *gdbarch, bptype type) { - breakpoint *b; + base_breakpoint *b; switch (type) { @@ -1317,7 +1317,7 @@ new_breakpoint_from_type (struct gdbarch *gdbarch, bptype type) gdb_assert_not_reached ("invalid type"); } - return std::unique_ptr<breakpoint> (b); + return std::unique_ptr<base_breakpoint> (b); } /* A helper function that validates that COMMANDS are valid for a @@ -8297,7 +8297,7 @@ update_dprintf_commands (const char *args, int from_tty, "address location" from the address in the SAL. */ static void -init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch, +init_breakpoint_sal (base_breakpoint *b, struct gdbarch *gdbarch, gdb::array_view<const symtab_and_line> sals, event_location_up &&location, gdb::unique_xmalloc_ptr<char> filter, @@ -8359,7 +8359,7 @@ init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch, if (type == bp_static_tracepoint || type == bp_static_marker_tracepoint) { - struct tracepoint *t = (struct tracepoint *) b; + auto *t = static_cast<struct tracepoint *> (b); struct static_tracepoint_marker marker; if (strace_marker_p (b)) @@ -8453,7 +8453,7 @@ create_breakpoint_sal (struct gdbarch *gdbarch, int enabled, int internal, unsigned flags, int display_canonical) { - std::unique_ptr<breakpoint> b = new_breakpoint_from_type (gdbarch, type); + std::unique_ptr<base_breakpoint> b = new_breakpoint_from_type (gdbarch, type); init_breakpoint_sal (b.get (), gdbarch, sals, std::move (location), @@ -11952,14 +11952,6 @@ bkpt_probe_decode_location (struct breakpoint *b, return sals; } -/* The breakpoint_ops structure to be used in tracepoints. */ - -void -tracepoint::re_set () -{ - breakpoint_re_set_default (this); -} - int tracepoint::breakpoint_hit (const struct bp_location *bl, const address_space *aspace, CORE_ADDR bp_addr, @@ -12034,16 +12026,6 @@ tracepoint::print_recreate (struct ui_file *fp) const gdb_printf (fp, " passcount %d\n", pass_count); } -std::vector<symtab_and_line> -tracepoint::decode_location (struct event_location *location, - struct program_space *search_pspace) -{ - if (event_location_type (location) == PROBE_LOCATION) - return bkpt_probe_decode_location (this, location, search_pspace); - - return decode_location_default (this, location, search_pspace); -} - /* Virtual table for tracepoints on static probes. */ static void diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index b7e3b4dc6a1..48ceceabb3d 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -974,21 +974,16 @@ extern bool is_exception_catchpoint (breakpoint *bp); /* An instance of this type is used to represent all kinds of tracepoints. */ -struct tracepoint : public breakpoint +struct tracepoint : public base_breakpoint { - using breakpoint::breakpoint; + using base_breakpoint::base_breakpoint; - void re_set () override; int breakpoint_hit (const struct bp_location *bl, const address_space *aspace, CORE_ADDR bp_addr, const target_waitstatus &ws) override; void print_one_detail (struct ui_out *uiout) const override; void print_mention () const override; void print_recreate (struct ui_file *fp) const override; - std::vector<symtab_and_line> decode_location - (struct event_location *location, - struct program_space *search_pspace) override; - /* Number of times this tracepoint should single-step and collect additional data. */
reply other threads:[~2022-05-20 19:42 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220520194253.C1C353856DEA@sourceware.org \ --to=palves@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).