From patchwork Sun Oct 29 23:23:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 78705 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3DF1238319D2 for ; Sun, 29 Oct 2023 23:24:05 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta034.useast.a.cloudfilter.net (omta034.useast.a.cloudfilter.net [44.202.169.33]) by sourceware.org (Postfix) with ESMTPS id 17B6A38618FE for ; Sun, 29 Oct 2023 23:23:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 17B6A38618FE Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 17B6A38618FE Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.33 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698621792; cv=none; b=UnYyeWTkKDorF+DUBLmPOiymwAEYdrn4GN9iyRTD/HUnvu1IDTwg3g8IouX4cL12iUoinaLPz0JoR18oCsorue/lSnB0Vus9eVpPpvcf9Nc51PFotlobcjw4asRi0jAB2KopHMFPvnJ1JhSNBKS6IJcZzfvCpBwoh8yulkaEIwY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698621792; c=relaxed/simple; bh=A7WsxTCBGkWKhymRUz7Alklv2Ufg9ul/oXNiu/KFPPY=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=WoUvW9TEdbthabqmX+M3oFhvHiuPU2iv3AnTvhg00Vug3RKMZi4ZzwRQiLIdnhdN34BbwcZePVfOLQ3TuLtDgpnFfzTfx3PnjaOqjdQVOqpNopOq9rCWK+AbRbOf2OS26Vru6yowXeCYai0yOYYeAyoxF1fBuoI6KRzZl5SJDcw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-5008a.ext.cloudfilter.net ([10.0.29.246]) by cmsmtp with ESMTPS id x3DKqdM9DjtZ3xF7dqTyKG; Sun, 29 Oct 2023 23:23:09 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id xF7cqkcpipPpmxF7cqT07D; Sun, 29 Oct 2023 23:23:08 +0000 X-Authority-Analysis: v=2.4 cv=MJVzJeVl c=1 sm=1 tr=0 ts=653ee95c a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10 a=bhdUkHdE2iEA:10 a=Qbun_eYptAEA:10 a=bQpgz2UOOIGWnD5mVVUA:9 a=QEXdDO2ut3YA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:Subject:Date:From:Sender:Reply-To:Cc: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=QTefXyIwkro3tpBbwT38BYDKYQ55enUWsag+385+psM=; b=S0cW1xBTHUPSuZ9uv/+3Mc56qs O9Su3u7ftcgjkOaeRWFce5HqNXb151+DLDrY3MrOkNFMFslD1iXA/aE4yjMKSn7U2Dbsv65IBso/e k369UQAQxuS0MJlnSNeDG57PZ; Received: from 97-122-77-73.hlrn.qwest.net ([97.122.77.73]:56344 helo=[192.168.0.21]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1qxF7b-0042zY-3A for gdb-patches@sourceware.org; Sun, 29 Oct 2023 17:23:07 -0600 From: Tom Tromey Date: Sun, 29 Oct 2023 17:23:36 -0600 Subject: [PATCH 15/30] Use read_var_value overload in finish_command_fsm MIME-Version: 1.0 Message-Id: <20231029-split-objfile-2023-bound-sym-october-v1-15-612531df2734@tromey.com> References: <20231029-split-objfile-2023-bound-sym-october-v1-0-612531df2734@tromey.com> In-Reply-To: <20231029-split-objfile-2023-bound-sym-october-v1-0-612531df2734@tromey.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.4 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: 97.122.77.73 X-Source-L: No X-Exim-ID: 1qxF7b-0042zY-3A X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-77-73.hlrn.qwest.net ([192.168.0.21]) [97.122.77.73]:56344 X-Source-Auth: tom+tromey.com X-Email-Count: 16 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfERYQiys0nKIaH0Y3EpWbNAxZCw+5FgKUVWZAOyjIPgqvpLH45B9QKSYB2GnXwx6ivffJ+yh71mY7CdCzoIM927wzOYQ3BP+D1f3RTMzIM9nqHgkfju7 GOuoT8uLdkiPm7wOmoQ7X6qnQWPjuL8BcbFs9JyYluouHY0CmtkEoqKL6H1XyUD/18EwRPEVy3oE9Iu0OPDQsbIr5HYY9I5eM60= X-Spam-Status: No, score=-3024.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP 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.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org This changes finish_command_fsm to store a block_symbol, so that the new read_var_value overload can be used. --- gdb/infcmd.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/gdb/infcmd.c b/gdb/infcmd.c index c50d9bcd47d..03e54438686 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1596,7 +1596,7 @@ struct finish_command_fsm : public thread_fsm breakpoint_up breakpoint; /* The function that we're stepping out of. */ - struct symbol *function = nullptr; + block_symbol function {}; /* If the FSM finishes successfully, this stores the function's return value. */ @@ -1629,14 +1629,14 @@ finish_command_fsm::should_stop (struct thread_info *tp) { struct return_value_info *rv = &return_value_info; - if (function != nullptr + if (function.symbol != nullptr && bpstat_find_breakpoint (tp->control.stop_bpstat, breakpoint.get ()) != nullptr) { /* We're done. */ set_finished (); - rv->type = function->type ()->target_type (); + rv->type = function.symbol->type ()->target_type (); if (rv->type == nullptr) internal_error (_("finish_command: function has no target type")); @@ -1644,13 +1644,13 @@ finish_command_fsm::should_stop (struct thread_info *tp) { struct value *func; - func = read_var_value (function, nullptr, get_current_frame ()); + func = read_var_value (function, get_current_frame ()); if (return_buf != 0) /* Retrieve return value from the buffer where it was saved. */ rv->value = value_at (rv->type, return_buf); else - rv->value = get_return_value (function, func); + rv->value = get_return_value (function.symbol, func); if (rv->value != nullptr) rv->value_history_index = rv->value->record_latest (); @@ -1883,22 +1883,22 @@ finish_command (const char *arg, int from_tty) /* Find the function we will return from. */ frame_info_ptr callee_frame = get_selected_frame (nullptr); - sm->function = find_pc_function (get_frame_pc (callee_frame)).symbol; + sm->function = find_pc_function (get_frame_pc (callee_frame)); sm->return_buf = 0; /* Initialize buffer address is not available. */ /* Determine the return convention. If it is RETURN_VALUE_STRUCT_CONVENTION, attempt to determine the address of the return buffer. */ - if (sm->function != nullptr) + if (sm->function.symbol != nullptr) { enum return_value_convention return_value; struct gdbarch *gdbarch = get_frame_arch (callee_frame); struct type * val_type - = check_typedef (sm->function->type ()->target_type ()); + = check_typedef (sm->function.symbol->type ()->target_type ()); return_value = gdbarch_return_value_as_value (gdbarch, - read_var_value (sm->function, nullptr, + read_var_value (sm->function, callee_frame), val_type, nullptr, nullptr, nullptr); @@ -1916,10 +1916,11 @@ finish_command (const char *arg, int from_tty) gdb_printf (_("Run back to call of ")); else { - if (sm->function != nullptr && TYPE_NO_RETURN (sm->function->type ()) + if (sm->function.symbol != nullptr + && TYPE_NO_RETURN (sm->function.symbol->type ()) && !query (_("warning: Function %s does not return normally.\n" "Try to finish anyway? "), - sm->function->print_name ())) + sm->function.symbol->print_name ())) error (_("Not confirmed.")); gdb_printf (_("Run till exit from ")); }