From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from outbound-ss-761.bluehost.com (outbound-ss-761.bluehost.com [74.220.211.250]) by sourceware.org (Postfix) with ESMTPS id E11483857C58 for ; Tue, 18 Jan 2022 19:40:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E11483857C58 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from cmgw15.mail.unifiedlayer.com (unknown [10.0.90.130]) by progateway8.mail.pro1.eigbox.com (Postfix) with ESMTP id 5B0461005DDB0 for ; Tue, 18 Jan 2022 19:40:22 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id 9uL7nmvAVikTn9uL8nOi9e; Tue, 18 Jan 2022 19:40:22 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=CeHNWJnl c=1 sm=1 tr=0 ts=61e717a6 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=DghFqjY3_ZEA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=PyVu-lwIGX5tPtde49IA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=CjynjDCUUHoQKHGp7APnRsjSWIwSalKzP37HXG38fAs=; b=j4FEXtJa3PfM8U5mGB8jjbOx2v Boeajn6df857vUvRZNI41HcBTPzqDIu3Xs3CiT6d0ayssQLM70VUwJabJM6SzIcJgCq4BxHue/AaJ f1dEZXelTVIknvKcvdu8nK4Z/; Received: from 75-166-134-30.hlrn.qwest.net ([75.166.134.30]:40588 helo=prentzel.Home) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1n9uL7-0015df-9r; Tue, 18 Jan 2022 12:40:21 -0700 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 31/36] Remove most fields from breakpoint_ops Date: Tue, 18 Jan 2022 12:40:02 -0700 Message-Id: <20220118194007.2853108-32-tom@tromey.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220118194007.2853108-1-tom@tromey.com> References: <20220118194007.2853108-1-tom@tromey.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 75.166.134.30 X-Source-L: No X-Exim-ID: 1n9uL7-0015df-9r X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-134-30.hlrn.qwest.net (prentzel.Home) [75.166.134.30]:40588 X-Source-Auth: tom+tromey.com X-Email-Count: 32 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3031.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Tue, 18 Jan 2022 19:40:25 -0000 At this point, all implementations of breakpoints use the vtable. So, we can now remove most function pointers from breakpoint_ops and switch to using methods directly in the callers. Only the two "static virtual" methods remain in breakpoint_ops. --- gdb/break-catch-load.c | 2 +- gdb/breakpoint.c | 239 +++++------------------------------------ gdb/breakpoint.h | 93 ---------------- 3 files changed, 30 insertions(+), 304 deletions(-) diff --git a/gdb/break-catch-load.c b/gdb/break-catch-load.c index 0e76ad288e8..a7735b8d4f0 100644 --- a/gdb/break-catch-load.c +++ b/gdb/break-catch-load.c @@ -144,7 +144,7 @@ solib_catchpoint::breakpoint_hit (const struct bp_location *bl, for (bp_location *other_bl : other->locations ()) { - if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws)) + if (other->breakpoint_hit (other_bl, aspace, bp_addr, ws)) return 1; } } diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index e0008e1b4ca..c97a55f488a 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1970,7 +1970,7 @@ update_watchpoint (struct watchpoint *b, int reparse) the target gains execution, through breakpoint_re_set. */ if (!can_use_hw_watchpoints) { - if (b->ops->works_in_software_mode (b)) + if (b->works_in_software_mode ()) b->type = bp_watchpoint; else error (_("Can't set read/access watchpoint when " @@ -2129,7 +2129,7 @@ update_watchpoint (struct watchpoint *b, int reparse) = target_can_use_hardware_watchpoint (type, i, other_type_used); if (target_resources_ok <= 0) { - int sw_mode = b->ops->works_in_software_mode (b); + int sw_mode = b->works_in_software_mode (); if (target_resources_ok == 0 && !sw_mode) error (_("Target does not support this type of " @@ -2150,7 +2150,7 @@ update_watchpoint (struct watchpoint *b, int reparse) b->type = type; } } - else if (!b->ops->works_in_software_mode (b)) + else if (!b->works_in_software_mode ()) { if (!can_use_hw_watchpoints) error (_("Can't set read/access watchpoint when " @@ -2694,7 +2694,7 @@ insert_bp_location (struct bp_location *bl, { int val; - val = bl->owner->ops->insert_location (bl); + val = bl->owner->insert_location (bl); if (val) bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR}; } @@ -2757,7 +2757,7 @@ insert_bp_location (struct bp_location *bl, { int val; - val = bl->owner->ops->insert_location (bl); + val = bl->owner->insert_location (bl); if (val) bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR}; } @@ -2871,10 +2871,7 @@ insert_bp_location (struct bp_location *bl, { int val; - gdb_assert (bl->owner->ops != NULL - && bl->owner->ops->insert_location != NULL); - - val = bl->owner->ops->insert_location (bl); + val = bl->owner->insert_location (bl); /* If trying to set a read-watchpoint, and it turns out it's not supported, try emulating one with an access watchpoint. */ @@ -2899,7 +2896,7 @@ insert_bp_location (struct bp_location *bl, if (val == 1) { bl->watchpoint_type = hw_access; - val = bl->owner->ops->insert_location (bl); + val = bl->owner->insert_location (bl); if (val) /* Back to the original value. */ @@ -2914,10 +2911,7 @@ insert_bp_location (struct bp_location *bl, { int val; - gdb_assert (bl->owner->ops != NULL - && bl->owner->ops->insert_location != NULL); - - val = bl->owner->ops->insert_location (bl); + val = bl->owner->insert_location (bl); if (val) { bl->owner->enable_state = bp_disabled; @@ -3891,7 +3885,7 @@ remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason) && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info)) val = 0; else - val = bl->owner->ops->remove_location (bl, reason); + val = bl->owner->remove_location (bl, reason); } else { @@ -3926,7 +3920,7 @@ remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason) wrong code with the saved shadow contents. */ if (bl->loc_type == bp_loc_hardware_breakpoint || section_is_mapped (bl->section)) - val = bl->owner->ops->remove_location (bl, reason); + val = bl->owner->remove_location (bl, reason); else val = 0; } @@ -3960,11 +3954,8 @@ remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason) } else if (bl->loc_type == bp_loc_hardware_watchpoint) { - gdb_assert (bl->owner->ops != NULL - && bl->owner->ops->remove_location != NULL); - bl->inserted = (reason == DETACH_BREAKPOINT); - bl->owner->ops->remove_location (bl, reason); + bl->owner->remove_location (bl, reason); /* Failure to remove any of the hardware watchpoints comes here. */ if (reason == REMOVE_BREAKPOINT && bl->inserted) @@ -3975,10 +3966,7 @@ remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason) && breakpoint_enabled (bl->owner) && !bl->duplicate) { - gdb_assert (bl->owner->ops != NULL - && bl->owner->ops->remove_location != NULL); - - val = bl->owner->ops->remove_location (bl, reason); + val = bl->owner->remove_location (bl, reason); if (val) return val; @@ -4418,8 +4406,7 @@ bpstat_explains_signal (bpstat *bsp, enum gdb_signal sig) } else { - if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at, - sig)) + if (bsp->breakpoint_at->explains_signal (sig)) return true; } } @@ -4707,7 +4694,7 @@ print_bp_stop_message (bpstat *bs) return PRINT_UNKNOWN; /* Normal case. Call the breakpoint's print_it method. */ - return b->ops->print_it (bs); + return b->print_it (bs); } break; @@ -5022,8 +5009,8 @@ watchpoint_check (bpstat *bs) watch after that (since the garbage may or may not equal the first value assigned). */ /* We print all the stop information in - breakpoint_ops->print_it, but in this case, by the time we - call breakpoint_ops->print_it this bp will be deleted + breakpointprint_it, but in this case, by the time we + call breakpoint->print_it this bp will be deleted already. So we have no choice but print the information here. */ @@ -5062,7 +5049,7 @@ bpstat_check_location (const struct bp_location *bl, /* BL is from an existing breakpoint. */ gdb_assert (b != NULL); - return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws); + return b->breakpoint_hit (bl, aspace, bp_addr, ws); } /* Determine if the watched values have actually changed, and we @@ -5510,7 +5497,7 @@ bpstat_stop_status (const address_space *aspace, continue; b = bs->breakpoint_at; - b->ops->check_status (bs); + b->check_status (bs); if (bs->stop) { bpstat_check_breakpoint_conditions (bs, thread); @@ -5535,7 +5522,7 @@ bpstat_stop_status (const address_space *aspace, ? bs->commands.get () : NULL)) bs->print = 0; - b->ops->after_condition_true (bs); + b->after_condition_true (bs); } } @@ -6162,7 +6149,7 @@ print_one_breakpoint_location (struct breakpoint *b, /* 5 and 6 */ bool result = false; - if (!raw_loc && b->ops != NULL && b->ops->print_one (b, last_loc)) + if (!raw_loc && b->print_one (last_loc)) result = true; else { @@ -6245,7 +6232,7 @@ print_one_breakpoint_location (struct breakpoint *b, uiout->text ("\n"); if (!part_of_multiple) - b->ops->print_one_detail (b, uiout); + b->print_one_detail (uiout); if (part_of_multiple && frame_id_p (b->frame_id)) { @@ -7132,7 +7119,7 @@ bp_location::bp_location (breakpoint *owner) static struct bp_location * allocate_bp_location (struct breakpoint *bpt) { - return bpt->ops->allocate_location (bpt); + return bpt->allocate_location (); } /* Decrement reference count. If the reference count reaches 0, @@ -7815,7 +7802,7 @@ hw_breakpoint_used_count (void) { /* Special types of hardware breakpoints may use more than one register. */ - i += b->ops->resources_needed (bl); + i += b->resources_needed (bl); } return i; @@ -7836,7 +7823,7 @@ hw_watchpoint_use_count (struct breakpoint *b) { /* Special types of hardware watchpoints may use more than one register. */ - i += b->ops->resources_needed (bl); + i += b->resources_needed (bl); } return i; @@ -8023,7 +8010,7 @@ set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc, static void mention (struct breakpoint *b) { - b->ops->print_mention (b); + b->print_mention (); current_uiout->text ("\n"); } @@ -11483,7 +11470,7 @@ bpstat_remove_breakpoint_callback (struct thread_info *th, void *data) return 0; } -/* Helper for breakpoint and tracepoint breakpoint_ops->mention +/* Helper for breakpoint and tracepoint breakpoint->mention callbacks. */ static void @@ -11564,46 +11551,21 @@ bp_location_range breakpoint::locations () return bp_location_range (this->loc); } -static struct bp_location * -base_breakpoint_allocate_location (struct breakpoint *self) -{ - return new bp_location (self); -} - struct bp_location * breakpoint::allocate_location () { return new bp_location (this); } -static void -base_breakpoint_re_set (struct breakpoint *b) -{ - /* Nothing to re-set. */ -} - #define internal_error_pure_virtual_called() \ gdb_assert_not_reached ("pure virtual function called") -static int -base_breakpoint_insert_location (struct bp_location *bl) -{ - internal_error_pure_virtual_called (); -} - int breakpoint::insert_location (struct bp_location *bl) { internal_error_pure_virtual_called (); } -static int -base_breakpoint_remove_location (struct bp_location *bl, - enum remove_bp_reason reason) -{ - internal_error_pure_virtual_called (); -} - int breakpoint::remove_location (struct bp_location *bl, enum remove_bp_reason reason) @@ -11611,15 +11573,6 @@ breakpoint::remove_location (struct bp_location *bl, internal_error_pure_virtual_called (); } -static int -base_breakpoint_breakpoint_hit (const struct bp_location *bl, - const address_space *aspace, - CORE_ADDR bp_addr, - const target_waitstatus &ws) -{ - internal_error_pure_virtual_called (); -} - int breakpoint::breakpoint_hit (const struct bp_location *bl, const address_space *aspace, @@ -11629,85 +11582,30 @@ breakpoint::breakpoint_hit (const struct bp_location *bl, internal_error_pure_virtual_called (); } -static void -base_breakpoint_check_status (bpstat *bs) -{ - /* Always stop. */ -} - -/* A "works_in_software_mode" breakpoint_ops method that just internal - errors. */ - -static int -base_breakpoint_works_in_software_mode (const struct breakpoint *b) -{ - internal_error_pure_virtual_called (); -} - int breakpoint::works_in_software_mode () const { internal_error_pure_virtual_called (); } -/* A "resources_needed" breakpoint_ops method that just internal - errors. */ - -static int -base_breakpoint_resources_needed (const struct bp_location *bl) -{ - internal_error_pure_virtual_called (); -} - int breakpoint::resources_needed (const struct bp_location *bl) { internal_error_pure_virtual_called (); } -static enum print_stop_action -base_breakpoint_print_it (bpstat *bs) -{ - internal_error_pure_virtual_called (); -} - enum print_stop_action breakpoint::print_it (bpstat *bs) { internal_error_pure_virtual_called (); } -static bool -base_breakpoint_print_one (struct breakpoint *, struct bp_location **) -{ - return false; -} - -static void -base_breakpoint_print_one_detail (const struct breakpoint *self, - struct ui_out *uiout) -{ - /* nothing */ -} - -static void -base_breakpoint_print_mention (struct breakpoint *b) -{ - internal_error_pure_virtual_called (); -} - void breakpoint::print_mention () { internal_error_pure_virtual_called (); } -static void -base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp) -{ - internal_error_pure_virtual_called (); -} - void breakpoint::print_recreate (struct ui_file *fp) { @@ -11739,14 +11637,6 @@ base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch, internal_error_pure_virtual_called (); } -static std::vector -base_breakpoint_decode_location (struct breakpoint *b, - struct event_location *location, - struct program_space *search_pspace) -{ - internal_error_pure_virtual_called (); -} - std::vector breakpoint::decode_location (struct event_location *location, struct program_space *search_pspace) @@ -11754,87 +11644,16 @@ breakpoint::decode_location (struct event_location *location, internal_error_pure_virtual_called (); } -/* The default 'explains_signal' method. */ - -static int -base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig) -{ - return 1; -} - -/* The default "after_condition_true" method. */ - -static void -base_breakpoint_after_condition_true (struct bpstat *bs) -{ - /* Nothing to do. */ -} - struct breakpoint_ops base_breakpoint_ops = { - base_breakpoint_allocate_location, - base_breakpoint_re_set, - base_breakpoint_insert_location, - base_breakpoint_remove_location, - base_breakpoint_breakpoint_hit, - base_breakpoint_check_status, - base_breakpoint_resources_needed, - base_breakpoint_works_in_software_mode, - base_breakpoint_print_it, - base_breakpoint_print_one, - base_breakpoint_print_one_detail, - base_breakpoint_print_mention, - base_breakpoint_print_recreate, base_breakpoint_create_sals_from_location, base_breakpoint_create_breakpoints_sal, - base_breakpoint_decode_location, - base_breakpoint_explains_signal, - base_breakpoint_after_condition_true, }; struct breakpoint_ops vtable_breakpoint_ops = { - [] (struct breakpoint *b) { return b->allocate_location (); }, - [] (struct breakpoint *b) { b->re_set (); }, - [] (struct bp_location *l) - { - return l->owner->insert_location (l); - }, - [] (struct bp_location *l, enum remove_bp_reason reason) - { - return l->owner->remove_location (l, reason); - }, - [] (const struct bp_location *bl, - const address_space *aspace, - CORE_ADDR bp_addr, - const target_waitstatus &ws) - { - return bl->owner->breakpoint_hit (bl, aspace, bp_addr, ws); - }, - [] (struct bpstat *bs) { bs->breakpoint_at->check_status (bs); }, - [] (const struct bp_location *bl) - { return bl->owner->resources_needed (bl); }, - [] (const struct breakpoint *b) - { return b->works_in_software_mode (); }, - [] (struct bpstat *bs) - { return bs->breakpoint_at->print_it (bs); }, - [] (struct breakpoint *b, struct bp_location **bl) - { return b->print_one (bl); }, - [] (const struct breakpoint *b, struct ui_out *out) - { b->print_one_detail (out); }, - [] (struct breakpoint *b) { b->print_mention (); }, - [] (struct breakpoint *b, struct ui_file *fp) - { b->print_recreate (fp); }, create_sals_from_location_default, create_breakpoints_sal_default, - [] (struct breakpoint *b, - struct event_location *location, - struct program_space *search_pspace) - { return b->decode_location (location, search_pspace); }, - [] (struct breakpoint *b, enum gdb_signal s) - { return b->explains_signal (s); }, - [] (struct bpstat *bs) - { bs->breakpoint_at->after_condition_true (bs); } }; /* Default breakpoint_ops methods. */ @@ -13002,7 +12821,7 @@ location_to_sals (struct breakpoint *b, struct event_location *location, try { - sals = b->ops->decode_location (b, location, search_pspace); + sals = b->decode_location (location, search_pspace); } catch (gdb_exception_error &e) { @@ -13170,7 +12989,7 @@ breakpoint_re_set_one (breakpoint *b) input_radix = b->input_radix; set_language (b->language); - b->ops->re_set (b); + b->re_set (); } /* Re-set breakpoint locations for the current program space. @@ -14362,7 +14181,7 @@ save_breakpoints (const char *filename, int from_tty, if (filter && !filter (tp)) continue; - tp->ops->print_recreate (tp, &fp); + tp->print_recreate (&fp); /* Note, we can't rely on tp->number for anything, as we can't assume the recreated breakpoint numbers will match. Use $bpnum diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 7caa3d9392d..86f7a9d9665 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -561,80 +561,6 @@ enum print_stop_action struct breakpoint_ops { - /* Allocate a location for this breakpoint. */ - struct bp_location * (*allocate_location) (struct breakpoint *); - - /* Reevaluate a breakpoint. This is necessary after symbols change - (e.g., an executable or DSO was loaded, or the inferior just - started). */ - void (*re_set) (struct breakpoint *self); - - /* Insert the breakpoint or watchpoint or activate the catchpoint. - Return 0 for success, 1 if the breakpoint, watchpoint or - catchpoint type is not supported, -1 for failure. */ - int (*insert_location) (struct bp_location *); - - /* Remove the breakpoint/catchpoint that was previously inserted - with the "insert" method above. Return 0 for success, 1 if the - breakpoint, watchpoint or catchpoint type is not supported, - -1 for failure. */ - int (*remove_location) (struct bp_location *, enum remove_bp_reason reason); - - /* Return true if it the target has stopped due to hitting - breakpoint location BL. This function does not check if we - should stop, only if BL explains the stop. ASPACE is the address - space in which the event occurred, BP_ADDR is the address at - which the inferior stopped, and WS is the target_waitstatus - describing the event. */ - int (*breakpoint_hit) (const struct bp_location *bl, - const address_space *aspace, - CORE_ADDR bp_addr, - const target_waitstatus &ws); - - /* Check internal conditions of the breakpoint referred to by BS. - If we should not stop for this breakpoint, set BS->stop to 0. */ - void (*check_status) (struct bpstat *bs); - - /* Tell how many hardware resources (debug registers) are needed - for this breakpoint. If this function is not provided, then - the breakpoint or watchpoint needs one debug register. */ - int (*resources_needed) (const struct bp_location *); - - /* Tell whether we can downgrade from a hardware watchpoint to a software - one. If not, the user will not be able to enable the watchpoint when - there are not enough hardware resources available. */ - int (*works_in_software_mode) (const struct breakpoint *); - - /* The normal print routine for this breakpoint, called when we - hit it. */ - enum print_stop_action (*print_it) (struct bpstat *bs); - - /* Display information about this breakpoint, for "info - breakpoints". Returns false if this method should use the - default behavior. */ - bool (*print_one) (struct breakpoint *, struct bp_location **); - - /* Display extra information about this breakpoint, below the normal - breakpoint description in "info breakpoints". - - In the example below, the "address range" line was printed - by print_one_detail_ranged_breakpoint. - - (gdb) info breakpoints - Num Type Disp Enb Address What - 2 hw breakpoint keep y in main at test-watch.c:70 - address range: [0x10000458, 0x100004c7] - - */ - void (*print_one_detail) (const struct breakpoint *, struct ui_out *); - - /* Display information about this breakpoint after setting it - (roughly speaking; this is called from "mention"). */ - void (*print_mention) (struct breakpoint *); - - /* Print to FP the CLI command that recreates this breakpoint. */ - void (*print_recreate) (struct breakpoint *, struct ui_file *fp); - /* Create SALs from location, storing the result in linespec_result. For an explanation about the arguments, see the function @@ -659,25 +585,6 @@ struct breakpoint_ops enum bptype, enum bpdisp, int, int, int, const struct breakpoint_ops *, int, int, int, unsigned); - - /* Given the location (second parameter), this method decodes it and - returns the SAL locations related to it. For ordinary - breakpoints, it calls `decode_line_full'. If SEARCH_PSPACE is - not NULL, symbol search is restricted to just that program space. - - This function is called inside `location_to_sals'. */ - std::vector (*decode_location) - (struct breakpoint *b, - struct event_location *location, - struct program_space *search_pspace); - - /* Return true if this breakpoint explains a signal. See - bpstat_explains_signal. */ - int (*explains_signal) (struct breakpoint *, enum gdb_signal); - - /* Called after evaluating the breakpoint's condition, - and only if it evaluated true. */ - void (*after_condition_true) (struct bpstat *bs); }; /* Helper for breakpoint_ops->print_recreate implementations. Prints -- 2.31.1