From patchwork Sun Oct 29 23:23:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 78722 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 01E0E3830B59 for ; Sun, 29 Oct 2023 23:25:19 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta40.uswest2.a.cloudfilter.net (omta40.uswest2.a.cloudfilter.net [35.89.44.39]) by sourceware.org (Postfix) with ESMTPS id 0A176386193F for ; Sun, 29 Oct 2023 23:23:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0A176386193F 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 0A176386193F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=35.89.44.39 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698621798; cv=none; b=Wfx8jvPPNNQv1l+OSSqwx0pIAFAOgnk7XP6ruFslLv1jV1X/ngUVreSbinSXLKO3hZ0ZgqKOW74Tbt1+2Jrx/BAHwLhrDtMKdXhPxR+XcWYMayeBLJhCNHURyDrjq7sIdn/ciNQUaL/T6s4fQ17R+wLtj8fYhvIgZ7h8WqE4+q8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698621798; c=relaxed/simple; bh=OUTW8NcA9LUGjV22YK1+P9uK1kVNcE+Pi4RS1EV3Nlk=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=l6r5fqezliay0HDVml7bZ3zQhZQ0KAcTOp8XeEQqAzX94v1DaMnieSYLD8OLdFrQZx1wOZ7uWscGIiiVf8dfxx1iQPQd67mYtPI4wBzUcvtcYE9fEQBvuEJeUvmAF8SWtubIdA6ed4ncL9EzjXUU6q9j6Vi4hpZnpPXUGBzFhdo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-6007a.ext.cloudfilter.net ([10.0.30.247]) by cmsmtp with ESMTPS id xDPSqtqDxL9AgxF7eqdPrR; Sun, 29 Oct 2023 23:23:10 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id xF7dqwSLU5ZLUxF7dqXiQ3; Sun, 29 Oct 2023 23:23:09 +0000 X-Authority-Analysis: v=2.4 cv=S57KfagP c=1 sm=1 tr=0 ts=653ee95d 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=DxUNwVNMKNhtkHIqcQsA: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=/rEDYZqpntBVnm+2uxeBi+/vOM4/rlNOaPUeuYCL5DI=; b=x9eNjT7uh61giD1NW7I52NqZQg c0jvbNqeE9xzG4YzSH8kpcft9ymn7Viwzo0ZorIzvIPClXbC1yNteKtPs3JoxqAOFBmH5++ZRSNfC oOHHCAiz62Ps+5041ufxI1gMl; 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 1qxF7d-0042zY-0d for gdb-patches@sourceware.org; Sun, 29 Oct 2023 17:23:09 -0600 From: Tom Tromey Date: Sun, 29 Oct 2023 17:23:45 -0600 Subject: [PATCH 24/30] Use read_var_value in read_frame_arg and read_frame_local MIME-Version: 1.0 Message-Id: <20231029-split-objfile-2023-bound-sym-october-v1-24-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: 1qxF7d-0042zY-0d 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: 25 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfI2qQum9HYYvAwWnv4BVlvS8GX1cqRV8sdonQ1UNEsj0LyR+WzNdt2WoFYhdoYQfCYJgAnAT704akavzFIihtiSDZJeGBs7+CXG1leF83+xUljILGMtZ bXzvH4cNCd0veuxcYwwMQFZTPps+DIBSmCy4SYt+GmQ21lL2Tjjbhbrh0btGQqs17ypjLi+Av5k/0+JEYN8+qg0tWEIBS7F7p6U= X-Spam-Status: No, score=-3023.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_STOCKGEN, 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 read_frame_arg and read_frame_local to take a block_symbol and to use the new read_var_value overload.k --- gdb/frame.h | 6 +++--- gdb/mi/mi-cmd-stack.c | 20 ++++++++++---------- gdb/python/py-framefilter.c | 8 ++++---- gdb/stack.c | 27 ++++++++++++++------------- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/gdb/frame.h b/gdb/frame.h index 0f1640c4a68..7c664c7cea8 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -931,7 +931,7 @@ extern frame_print_options user_frame_print_options; struct frame_arg { /* Symbol for this parameter used for example for its name. */ - struct symbol *sym = nullptr; + block_symbol sym = {}; /* Value of the parameter. It is NULL if ERROR is not NULL; if both VAL and ERROR are NULL this parameter's value should not be printed. */ @@ -954,10 +954,10 @@ struct frame_arg }; extern void read_frame_arg (const frame_print_options &fp_opts, - symbol *sym, frame_info_ptr frame, + block_symbol sym, frame_info_ptr frame, struct frame_arg *argp, struct frame_arg *entryargp); -extern void read_frame_local (struct symbol *sym, frame_info_ptr frame, +extern void read_frame_local (block_symbol sym, frame_info_ptr frame, struct frame_arg *argp); extern void info_args_command (const char *, int); diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index e473be7d465..9a53bac92e7 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -521,18 +521,18 @@ list_arg_or_local (const struct frame_arg *arg, enum what_to_list what, string_file stb; - stb.puts (arg->sym->print_name ()); + stb.puts (arg->sym.symbol->print_name ()); if (arg->entry_kind == print_entry_values_only) stb.puts ("@entry"); uiout->field_stream ("name", stb); - if (what == all && arg->sym->is_argument ()) + if (what == all && arg->sym.symbol->is_argument ()) uiout->field_signed ("arg", 1); if (values == PRINT_SIMPLE_VALUES) { - check_typedef (arg->sym->type ()); - type_print (arg->sym->type (), "", &stb, -1); + check_typedef (arg->sym.symbol->type ()); + type_print (arg->sym.symbol->type (), "", &stb, -1); uiout->field_stream ("type", stb); } @@ -549,7 +549,7 @@ list_arg_or_local (const struct frame_arg *arg, enum what_to_list what, get_no_prettyformat_print_options (&opts); opts.deref_ref = true; common_val_print (arg->val, &stb, 0, &opts, - language_def (arg->sym->language ())); + language_def (arg->sym.symbol->language ())); } catch (const gdb_exception_error &except) { @@ -632,15 +632,15 @@ list_args_or_locals (const frame_print_options &fp_opts, } if (print_me) { - struct symbol *sym2; + block_symbol sym2; struct frame_arg arg, entryarg; if (sym->is_argument ()) sym2 = lookup_symbol_search_name (sym->search_name (), - block, VAR_DOMAIN).symbol; + block, VAR_DOMAIN); else - sym2 = sym; - gdb_assert (sym2 != NULL); + sym2 = { sym, block }; + gdb_assert (sym2.symbol != nullptr); arg.sym = sym2; arg.entry_kind = print_entry_values_no; @@ -650,7 +650,7 @@ list_args_or_locals (const frame_print_options &fp_opts, switch (values) { case PRINT_SIMPLE_VALUES: - if (!mi_simple_type_p (sym2->type ())) + if (!mi_simple_type_p (sym2.symbol->type ())) break; /* FALLTHROUGH */ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c index 07b30a587b1..b214e82628f 100644 --- a/gdb/python/py-framefilter.c +++ b/gdb/python/py-framefilter.c @@ -312,7 +312,7 @@ py_print_single_arg (struct ui_out *out, { if (fa->val == NULL && fa->error == NULL) return; - language = language_def (fa->sym->language ()); + language = language_def (fa->sym.symbol->language ()); val = fa->val; } else @@ -340,12 +340,12 @@ py_print_single_arg (struct ui_out *out, { string_file stb; - gdb_puts (fa->sym->print_name (), &stb); + gdb_puts (fa->sym.symbol->print_name (), &stb); if (fa->entry_kind == print_entry_values_compact) { stb.puts ("="); - gdb_puts (fa->sym->print_name (), &stb); + gdb_puts (fa->sym.symbol->print_name (), &stb); } if (fa->entry_kind == print_entry_values_only || fa->entry_kind == print_entry_values_compact) @@ -472,7 +472,7 @@ enumerate_args (PyObject *iter, } read_frame_arg (user_frame_print_options, - sym, frame, &arg, &entryarg); + bsym, frame, &arg, &entryarg); /* The object has not provided a value, so this is a frame argument to be read by GDB. In this case we have to diff --git a/gdb/stack.c b/gdb/stack.c index 0fba09a044c..0bf2b19fad7 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -428,14 +428,14 @@ print_frame_arg (const frame_print_options &fp_opts, annotate_arg_emitter arg_emitter; ui_out_emit_tuple tuple_emitter (uiout, NULL); - gdb_puts (arg->sym->print_name (), &stb); + gdb_puts (arg->sym.symbol->print_name (), &stb); if (arg->entry_kind == print_entry_values_compact) { /* It is OK to provide invalid MI-like stream as with PRINT_ENTRY_VALUE_COMPACT we never use MI. */ stb.puts ("="); - gdb_puts (arg->sym->print_name (), &stb); + gdb_puts (arg->sym.symbol->print_name (), &stb); } if (arg->entry_kind == print_entry_values_only || arg->entry_kind == print_entry_values_compact) @@ -472,7 +472,7 @@ print_frame_arg (const frame_print_options &fp_opts, /* Use the appropriate language to display our symbol, unless the user forced the language to a specific language. */ if (language_mode == language_mode_auto) - language = language_def (arg->sym->language ()); + language = language_def (arg->sym.symbol->language ()); else language = current_language; @@ -503,7 +503,7 @@ print_frame_arg (const frame_print_options &fp_opts, exception. */ void -read_frame_local (struct symbol *sym, frame_info_ptr frame, +read_frame_local (block_symbol sym, frame_info_ptr frame, struct frame_arg *argp) { argp->sym = sym; @@ -512,7 +512,7 @@ read_frame_local (struct symbol *sym, frame_info_ptr frame, try { - argp->val = read_var_value (sym, NULL, frame); + argp->val = read_var_value (sym, frame); } catch (const gdb_exception_error &except) { @@ -525,7 +525,7 @@ read_frame_local (struct symbol *sym, frame_info_ptr frame, void read_frame_arg (const frame_print_options &fp_opts, - symbol *sym, frame_info_ptr frame, + block_symbol bsym, frame_info_ptr frame, struct frame_arg *argp, struct frame_arg *entryargp) { struct value *val = NULL, *entryval = NULL; @@ -537,7 +537,7 @@ read_frame_arg (const frame_print_options &fp_opts, { try { - val = read_var_value (sym, NULL, frame); + val = read_var_value (bsym, frame); } catch (const gdb_exception_error &except) { @@ -546,6 +546,7 @@ read_frame_arg (const frame_print_options &fp_opts, } } + symbol *sym = bsym.symbol; if (SYMBOL_COMPUTED_OPS (sym) != NULL && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL && fp_opts.print_entry_values != print_entry_values_no @@ -661,7 +662,7 @@ read_frame_arg (const frame_print_options &fp_opts, try { - val = read_var_value (sym, NULL, frame); + val = read_var_value (bsym, frame); } catch (const gdb_exception_error &except) { @@ -687,7 +688,7 @@ read_frame_arg (const frame_print_options &fp_opts, val_error = NULL; } - argp->sym = sym; + argp->sym = bsym; argp->val = val; argp->error.reset (val_error ? xstrdup (val_error) : NULL); if (!val && !val_error) @@ -702,7 +703,7 @@ read_frame_arg (const frame_print_options &fp_opts, else argp->entry_kind = print_entry_values_no; - entryargp->sym = sym; + entryargp->sym = bsym; entryargp->val = entryval; entryargp->error.reset (entryval_error ? xstrdup (entryval_error) : NULL); if (!entryval && !entryval_error) @@ -871,13 +872,13 @@ print_frame_args (const frame_print_options &fp_opts, if (!print_args) { - arg.sym = sym; + arg.sym = { sym, b }; arg.entry_kind = print_entry_values_no; - entryarg.sym = sym; + entryarg.sym = { sym, b }; entryarg.entry_kind = print_entry_values_no; } else - read_frame_arg (fp_opts, sym, frame, &arg, &entryarg); + read_frame_arg (fp_opts, { sym, b }, frame, &arg, &entryarg); if (arg.entry_kind != print_entry_values_only) print_frame_arg (fp_opts, &arg);