From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by sourceware.org (Postfix) with ESMTPS id B9AD93856DE0 for ; Mon, 16 May 2022 18:40:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B9AD93856DE0 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=palves.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-f46.google.com with SMTP id k26so1442812wms.1 for ; Mon, 16 May 2022 11:40:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iJvUlQv+oiywi3r8BsSGfaTcwsmL/eoh7scRuaDghU4=; b=HvEG+upmT9N3bbdZzEWyBYv1BogAHNWOyBexWpssTgHMkZlaflwL3dJi5ItU34OiQn j9f9Hf/x1O+tHosfb6mmNuLK6mSfAiO8qe6milL30CFZfRxt/Wven1NdouKge59Bj6Vw oadFsYlERXgqYaCpSSd8Id7wEsf6kivWLxqwPEq+eN3h0b3l/hCnJRc71yvw7D3DSe++ OLL9OtEksMQ9wSaUEvmOjRKlspb4+cpoXyxOm1LmOSBPO19yTyINq/9Qqxvj4QSvBwQ1 cqh00EoROMQVzyAVICEzMvUwif7SIG9yMW83ewX2ZblWs9WTsE2T99KVi4gZPs6ZRZFj H2QQ== X-Gm-Message-State: AOAM530d2+qLoHTmZ8qshwUMlACHo2o/AsT2G91XHW4LROC5QfIVahdb 0awR9BCoV6oDZ3Jr6npdn5LA9V3cyds= X-Google-Smtp-Source: ABdhPJyfhYNkK2WgIq8upFLXcVKu6ZNcSVKlmWUac3AlPtJWCi0hD1P8UoIQ4xJo+zo1brKcrFoG8Q== X-Received: by 2002:a7b:cf0a:0:b0:394:7bf:66c7 with SMTP id l10-20020a7bcf0a000000b0039407bf66c7mr17932048wmg.52.1652726445762; Mon, 16 May 2022 11:40:45 -0700 (PDT) Received: from localhost ([2001:8a0:f924:2600:209d:85e2:409e:8726]) by smtp.gmail.com with ESMTPSA id d19-20020adf9b93000000b0020d03b5c33dsm5602848wrc.46.2022.05.16.11.40.44 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 May 2022 11:40:44 -0700 (PDT) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 06/23] Make a few functions work with base_breakpoint instead of breakpoint Date: Mon, 16 May 2022 19:40:13 +0100 Message-Id: <20220516184030.665489-7-pedro@palves.net> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220516184030.665489-1-pedro@palves.net> References: <20220516184030.665489-1-pedro@palves.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 May 2022 18:40:49 -0000 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 --- 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..3df3eb8979d 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 +static std::unique_ptr 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 (b); + return std::unique_ptr (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 sals, event_location_up &&location, gdb::unique_xmalloc_ptr 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 (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 b = new_breakpoint_from_type (gdbarch, type); + std::unique_ptr 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 -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 decode_location - (struct event_location *location, - struct program_space *search_pspace) override; - /* Number of times this tracepoint should single-step and collect additional data. */ -- 2.36.0