From patchwork Thu Feb 9 21:38:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 64577 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 C1DEA38A90B1 for ; Thu, 9 Feb 2023 21:42:00 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from alt-proxy28.mail.unifiedlayer.com (alt-proxy28.mail.unifiedlayer.com [74.220.216.123]) by sourceware.org (Postfix) with ESMTPS id 0F0A43858024 for ; Thu, 9 Feb 2023 21:38:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F0A43858024 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 cmgw13.mail.unifiedlayer.com (unknown [10.0.90.128]) by progateway1.mail.pro1.eigbox.com (Postfix) with ESMTP id 71FF310040632 for ; Thu, 9 Feb 2023 21:38:42 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id QEcspHud1NX2aQEcsp2uCQ; Thu, 09 Feb 2023 21:38:42 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=NMAQR22g c=1 sm=1 tr=0 ts=63e567e2 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10:nop_charset_1 a=m04uMKEZRckA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=inLrElqqnkYP7ezNmpAA:9 a=3hGvfnqKY7UtFaih:21 a=QEXdDO2ut3YA:10:nop_charset_2 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=LLJBcks60x4PnJSiCS1JczfiYRw5HnaFJ09Dy2f6/WA=; b=xrdOlOxlEVNN7Iywv+RMDQNZjV g1clYFzKY3Tt2qJmJlPspamKE3PWDRc+ebugIwlrlx68+GAxNbVEBipC909nUY4wgYg2dbqhtOi66 gqGYx9yBrwcN8vEC/pbmb+V+u; Received: from 75-166-130-93.hlrn.qwest.net ([75.166.130.93]:52822 helo=[192.168.0.21]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pQEcs-001ZcE-8g for gdb-patches@sourceware.org; Thu, 09 Feb 2023 14:38:42 -0700 From: Tom Tromey Date: Thu, 09 Feb 2023 14:38:40 -0700 Subject: [PATCH 19/47] Turn value_address and set_value_address functions into methods MIME-Version: 1.0 Message-Id: <20230209-submit-value-fixups-2023-v1-19-55dc2794dbb9@tromey.com> References: <20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com> In-Reply-To: <20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.0 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.130.93 X-Source-L: No X-Exim-ID: 1pQEcs-001ZcE-8g X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-130-93.hlrn.qwest.net ([192.168.0.21]) [75.166.130.93]:52822 X-Source-Auth: tom+tromey.com X-Email-Count: 20 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3026.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" This changes the value_address and set_value_address functions to be methods of value. --- gdb/ada-lang.c | 34 +++++++++++------------ gdb/ada-tasks.c | 2 +- gdb/ada-valprint.c | 2 +- gdb/breakpoint.c | 4 +-- gdb/c-lang.c | 2 +- gdb/c-valprint.c | 2 +- gdb/cli/cli-dump.c | 2 +- gdb/compile/compile-c-symbols.c | 2 +- gdb/compile/compile-cplus-symbols.c | 2 +- gdb/compile/compile-loc2c.c | 2 +- gdb/cp-valprint.c | 4 +-- gdb/d-valprint.c | 2 +- gdb/dwarf2/frame.c | 2 +- gdb/dwarf2/loc.c | 8 +++--- gdb/elfread.c | 4 +-- gdb/eval.c | 6 ++-- gdb/f-lang.c | 18 ++++++------ gdb/f-valprint.c | 2 +- gdb/frame.c | 4 +-- gdb/frv-tdep.c | 2 +- gdb/gdbtypes.c | 2 +- gdb/gnu-v2-abi.c | 2 +- gdb/gnu-v3-abi.c | 22 +++++++-------- gdb/go-valprint.c | 2 +- gdb/guile/scm-value.c | 4 +-- gdb/infcall.c | 4 +-- gdb/m2-valprint.c | 4 +-- gdb/m32r-tdep.c | 2 +- gdb/mips-tdep.c | 2 +- gdb/mn10300-tdep.c | 2 +- gdb/msp430-tdep.c | 2 +- gdb/or1k-tdep.c | 4 +-- gdb/p-valprint.c | 8 +++--- gdb/ppc-linux-nat.c | 4 +-- gdb/printcmd.c | 12 ++++---- gdb/python/py-value.c | 4 +-- gdb/rust-lang.c | 8 +++--- gdb/stack.c | 2 +- gdb/tracepoint.c | 2 +- gdb/v850-tdep.c | 2 +- gdb/valarith.c | 2 +- gdb/valops.c | 44 ++++++++++++++--------------- gdb/valprint.c | 4 +-- gdb/value.c | 55 ++++++++++++++++++------------------- gdb/value.h | 26 +++++++++--------- 45 files changed, 165 insertions(+), 166 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 05f8c3fd0da..e13359a68f6 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -571,7 +571,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type) result->set_bitsize (val->bitsize ()); result->set_bitpos (val->bitpos ()); if (VALUE_LVAL (result) == lval_memory) - set_value_address (result, value_address (val)); + result->set_address (val->address ()); return result; } } @@ -1764,7 +1764,7 @@ thin_data_pntr (struct value *val) if (type->code () == TYPE_CODE_PTR) return value_cast (data_type, value_copy (val)); else - return value_from_longest (data_type, value_address (val)); + return value_from_longest (data_type, val->address ()); } /* True iff TYPE indicates a "thick" array pointer type. */ @@ -1830,7 +1830,7 @@ desc_bounds (struct value *arr) if (type->code () == TYPE_CODE_PTR) addr = value_as_long (arr); else - addr = value_address (arr); + addr = arr->address (); return value_from_longest (lookup_pointer_type (bounds_type), @@ -2517,7 +2517,7 @@ decode_constrained_packed_array (struct value *arr) we further resolve the array bounds here and then update the sizes. */ const gdb_byte *valaddr = value_contents_for_printing (arr).data (); - CORE_ADDR address = value_address (arr); + CORE_ADDR address = arr->address (); gdb::array_view view = gdb::make_array_view (valaddr, type->length ()); type = resolve_dynamic_type (type, view, address); @@ -2815,9 +2815,9 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8; gdb_byte *buf; - v = value_at (type, value_address (obj) + offset); + v = value_at (type, obj->address () + offset); buf = (gdb_byte *) alloca (src_len); - read_memory (value_address (v), buf, src_len); + read_memory (v->address (), buf, src_len); src = buf; } else @@ -2901,7 +2901,7 @@ ada_value_assign (struct value *toval, struct value *fromval) int from_size; gdb_byte *buffer = (gdb_byte *) alloca (len); struct value *val; - CORE_ADDR to_addr = value_address (toval); + CORE_ADDR to_addr = toval->address (); if (type->code () == TYPE_CODE_FLT) fromval = value_cast (type, fromval); @@ -2949,7 +2949,7 @@ value_assign_to_component (struct value *container, struct value *component, struct value *val) { LONGEST offset_in_container = - (LONGEST) (value_address (component) - value_address (container)); + (LONGEST) (component->address () - container->address ()); int bit_offset_in_container = component->bitpos () - container->bitpos (); int bits; @@ -4357,7 +4357,7 @@ ensure_lval (struct value *val) value_as_long (value_allocate_space_in_inferior (len)); VALUE_LVAL (val) = lval_memory; - set_value_address (val, addr); + val->set_address (addr); write_memory (addr, value_contents (val).data (), len); } @@ -4425,9 +4425,9 @@ ada_value_struct_elt (struct value *arg, const char *name, int no_err) CORE_ADDR address; if (t->code () == TYPE_CODE_PTR) - address = value_address (ada_value_ind (arg)); + address = ada_value_ind (arg)->address (); else - address = value_address (ada_coerce_ref (arg)); + address = ada_coerce_ref (arg)->address (); /* Check to see if this is a tagged type. We also need to handle the case where the type is a reference to a tagged type, but @@ -4566,7 +4566,7 @@ value_pointer (struct value *value, struct type *type) gdb_byte *buf = (gdb_byte *) alloca (len); CORE_ADDR addr; - addr = value_address (value); + addr = value->address (); gdbarch_address_to_pointer (type->arch (), type, buf, addr); addr = extract_unsigned_integer (buf, len, type_byte_order (type)); return addr; @@ -6510,7 +6510,7 @@ ada_tag_value_at_base_address (struct value *obj) offset_to_top = -offset_to_top; } - base_address = value_address (obj) + offset_to_top; + base_address = obj->address () + offset_to_top; tag = value_tag_from_contents_and_address (obj_type, NULL, base_address); /* Make sure that we have a proper tag at the new address. @@ -8591,7 +8591,7 @@ ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr, if (real_type != NULL) return to_fixed_record_type (real_type, NULL, - value_address (ada_tag_value_at_base_address (obj)), NULL); + ada_tag_value_at_base_address (obj)->address (), NULL); } /* Check to see if there is a parallel ___XVZ variable. @@ -8860,7 +8860,7 @@ struct value * ada_to_fixed_value (struct value *val) { val = unwrap_value (val); - val = ada_to_fixed_value_create (val->type (), value_address (val), val); + val = ada_to_fixed_value_create (val->type (), val->address (), val); return val; } @@ -9225,7 +9225,7 @@ unwrap_value (struct value *val) return coerce_unspec_val_to_type (val, ada_to_fixed_type (raw_real_type, 0, - value_address (val), + val->address (), NULL, 1)); } } @@ -12033,7 +12033,7 @@ ada_exception_message_1 (void) return NULL; gdb::unique_xmalloc_ptr e_msg ((char *) xmalloc (e_msg_len + 1)); - read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (), + read_memory (e_msg_val->address (), (gdb_byte *) e_msg.get (), e_msg_len); e_msg.get ()[e_msg_len] = '\0'; diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c index 979d64a54ad..671ad7af603 100644 --- a/gdb/ada-tasks.c +++ b/gdb/ada-tasks.c @@ -484,7 +484,7 @@ read_fat_string_value (char *dest, struct value *val, int max_len) /* Extract LEN characters from the fat string. */ array_val = value_ind (value_field (val, array_fieldno)); - read_memory (value_address (array_val), (gdb_byte *) dest, len); + read_memory (array_val->address (), (gdb_byte *) dest, len); /* Add the NUL character to close the string. */ dest[len] = '\0'; diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c index 64d7ac18b8c..814678ea0e1 100644 --- a/gdb/ada-valprint.c +++ b/gdb/ada-valprint.c @@ -1022,7 +1022,7 @@ ada_value_print_inner (struct value *val, struct ui_file *stream, int recurse, struct type *saved_type = type; const gdb_byte *valaddr = value_contents_for_printing (val).data (); - CORE_ADDR address = value_address (val); + CORE_ADDR address = val->address (); gdb::array_view view = gdb::make_array_view (valaddr, type->length ()); type = ada_check_typedef (resolve_dynamic_type (type, view, address)); diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index aa3045cd37f..f4b8c272f65 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2100,7 +2100,7 @@ update_watchpoint (struct watchpoint *b, bool reparse) bitsize = b->val_bitsize; } - addr = value_address (v); + addr = v->address (); if (bitsize != 0) { /* Skip the bytes that don't contain the bitfield. */ @@ -10404,7 +10404,7 @@ can_use_hardware_watchpoint (const std::vector &vals) || (vtype->code () != TYPE_CODE_STRUCT && vtype->code () != TYPE_CODE_ARRAY)) { - CORE_ADDR vaddr = value_address (v); + CORE_ADDR vaddr = v->address (); int len; int num_regs; diff --git a/gdb/c-lang.c b/gdb/c-lang.c index c2c763154c7..a2c50c3ba74 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -331,7 +331,7 @@ c_get_string (struct value *value, gdb::unique_xmalloc_ptr *buffer, if (VALUE_LVAL (value) != lval_memory) error (_("Attempt to take address of value " "not located in memory.")); - addr = value_address (value); + addr = value->address (); } else addr = value_as_address (value); diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index 8cfb3786043..63f3e50d350 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -236,7 +236,7 @@ c_value_print_array (struct value *val, const struct value_print_options *options) { struct type *type = check_typedef (val->type ()); - CORE_ADDR address = value_address (val); + CORE_ADDR address = val->address (); const gdb_byte *valaddr = value_contents_for_printing (val).data (); struct type *unresolved_elttype = type->target_type (); struct type *elttype = check_typedef (unresolved_elttype); diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c index e1d40c0e0ce..1e0051757f6 100644 --- a/gdb/cli/cli-dump.c +++ b/gdb/cli/cli-dump.c @@ -232,7 +232,7 @@ dump_value_to_file (const char *cmd, const char *mode, const char *file_format) if (VALUE_LVAL (val)) { - vaddr = value_address (val); + vaddr = val->address (); } else { diff --git a/gdb/compile/compile-c-symbols.c b/gdb/compile/compile-c-symbols.c index 00ac4523f86..5b53ab3263f 100644 --- a/gdb/compile/compile-c-symbols.c +++ b/gdb/compile/compile-c-symbols.c @@ -162,7 +162,7 @@ convert_one_symbol (compile_c_instance *context, sym.symbol->print_name ()); kind = GCC_C_SYMBOL_VARIABLE; - addr = value_address (val); + addr = val->address (); } break; diff --git a/gdb/compile/compile-cplus-symbols.c b/gdb/compile/compile-cplus-symbols.c index 2df68b7dd32..28447776d4f 100644 --- a/gdb/compile/compile-cplus-symbols.c +++ b/gdb/compile/compile-cplus-symbols.c @@ -156,7 +156,7 @@ convert_one_symbol (compile_cplus_instance *instance, sym.symbol->print_name ()); kind = GCC_CP_SYMBOL_VARIABLE; - addr = value_address (val); + addr = val->address (); } break; diff --git a/gdb/compile/compile-loc2c.c b/gdb/compile/compile-loc2c.c index 517cf89b9d2..ae30dd69dec 100644 --- a/gdb/compile/compile-loc2c.c +++ b/gdb/compile/compile-loc2c.c @@ -654,7 +654,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file *stream, gdb_printf (stream, "%*s%s = %s;\n", indent, "", result_name, - core_addr_to_string (value_address (val))); + core_addr_to_string (val->address ())); gdb_printf (stream, "%*s}\n", indent - 2, ""); return; } diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 634f5a94cee..ebed52c8ea9 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -390,7 +390,7 @@ cp_print_value (struct value *val, struct ui_file *stream, struct type **dont_print_vb) { struct type *type = check_typedef (val->type ()); - CORE_ADDR address = value_address (val); + CORE_ADDR address = val->address (); struct type **last_dont_print = (struct type **) obstack_next_free (&dont_print_vb_obstack); struct obstack tmp_obstack = dont_print_vb_obstack; @@ -560,7 +560,7 @@ cp_print_static_field (struct type *type, if (real_type->code () == TYPE_CODE_STRUCT) { CORE_ADDR *first_dont_print; - CORE_ADDR addr = value_address (val); + CORE_ADDR addr = val->address (); int i; first_dont_print diff --git a/gdb/d-valprint.c b/gdb/d-valprint.c index bebe02c967c..173623ea028 100644 --- a/gdb/d-valprint.c +++ b/gdb/d-valprint.c @@ -82,7 +82,7 @@ d_value_print_inner (struct value *val, struct ui_file *stream, int recurse, { case TYPE_CODE_STRUCT: ret = dynamic_array_type (type, val->embedded_offset (), - value_address (val), + val->address (), stream, recurse, val, options); if (ret == 0) break; diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c index 7f2bcf29387..a83df2192c3 100644 --- a/gdb/dwarf2/frame.c +++ b/gdb/dwarf2/frame.c @@ -236,7 +236,7 @@ execute_stack_op (const gdb_byte *exp, ULONGEST len, int addr_size, value *result_val = ctx.evaluate (exp, len, true, nullptr, this_frame); if (VALUE_LVAL (result_val) == lval_memory) - return value_address (result_val); + return result_val->address (); else return value_as_address (result_val); } diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c index e975f280cfc..b1dc5ab72f1 100644 --- a/gdb/dwarf2/loc.c +++ b/gdb/dwarf2/loc.c @@ -516,7 +516,7 @@ locexpr_get_frame_base (struct symbol *framefunc, frame_info_ptr frame) dwarf2_evaluate_loc_desc returns a value representing a variable at that address. The frame base address is thus this variable's address. */ - return value_address (result); + return result->address (); } /* Vector for inferior functions as represented by LOC_BLOCK, if the inferior @@ -573,7 +573,7 @@ loclist_get_frame_base (struct symbol *framefunc, frame_info_ptr frame) dwarf2_evaluate_loc_desc returns a value representing a variable at that address. The frame base address is thus this variable's address. */ - return value_address (result); + return result->address (); } /* Vector for inferior functions as represented by LOC_BLOCK, if the inferior @@ -685,7 +685,7 @@ call_site_target::iterate_over_addresses dwarf_block->per_objfile); /* DW_AT_call_target is a DWARF expression, not a DWARF location. */ if (VALUE_LVAL (val) == lval_memory) - callback (value_address (val)); + callback (val->address ()); else callback (value_as_address (val)); } @@ -1613,7 +1613,7 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton, return 0; if (VALUE_LVAL (result) == lval_memory) - *valp = value_address (result); + *valp = result->address (); else { if (VALUE_LVAL (result) == not_lval) diff --git a/gdb/elfread.c b/gdb/elfread.c index 45cd73b01af..02d473570b0 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -924,7 +924,7 @@ elf_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc) function = allocate_value (func_func_type); VALUE_LVAL (function) = lval_memory; - set_value_address (function, pc); + function->set_address (pc); /* STT_GNU_IFUNC resolver functions usually receive the HWCAP vector as parameter. FUNCTION is the function entry address. ADDRESS may be a @@ -1035,7 +1035,7 @@ elf_gnu_ifunc_resolver_return_stop (code_breakpoint *b) func_func = allocate_value (func_func_type); VALUE_LVAL (func_func) = lval_memory; - set_value_address (func_func, b->loc->related_address); + func_func->set_address (b->loc->related_address); value = allocate_value (value_type); gdbarch_return_value_as_value (gdbarch, func_func, value_type, regcache, diff --git a/gdb/eval.c b/gdb/eval.c index 934ca4c7ea2..28b307f07c9 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -651,7 +651,7 @@ evaluate_subexp_do_call (expression *exp, enum noside noside, { if (ftype->is_gnu_ifunc ()) { - CORE_ADDR address = value_address (callee); + CORE_ADDR address = callee->address (); type *resolved_type = find_gnu_ifunc_target_type (address); if (resolved_type != NULL) @@ -964,7 +964,7 @@ structop_base_operation::evaluate_funcall ``this'' pointer if necessary, so modify it to reflect any ``this'' changes. */ vals[0] = value_from_longest (lookup_pointer_type (temp->type ()), - value_address (temp) + temp->address () + temp->embedded_offset ()); } @@ -1136,7 +1136,7 @@ eval_op_func_static_var (struct type *expect_type, struct expression *exp, enum noside noside, value *func, const char *var) { - CORE_ADDR addr = value_address (func); + CORE_ADDR addr = func->address (); const block *blk = block_for_pc (addr); struct block_symbol sym = lookup_symbol (var, blk, VAR_DOMAIN, NULL); if (sym.symbol == NULL) diff --git a/gdb/f-lang.c b/gdb/f-lang.c index 57c31efc980..68d45168be7 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -408,7 +408,7 @@ fortran_associated (struct gdbarch *gdbarch, const language_defn *lang, if (pointer_type->code () == TYPE_CODE_PTR) pointer_addr = value_as_address (pointer); else - pointer_addr = value_address (pointer); + pointer_addr = pointer->address (); /* The single argument case, is POINTER associated with anything? */ if (target == nullptr) @@ -470,7 +470,7 @@ fortran_associated (struct gdbarch *gdbarch, const language_defn *lang, if (target_type->code () == TYPE_CODE_PTR) target_addr = value_as_address (target); else - target_addr = value_address (target); + target_addr = target->address (); /* Wrap the following checks inside a do { ... } while (false) loop so that we can use `break' to jump out of the loop. */ @@ -1074,7 +1074,7 @@ eval_op_f_loc (struct type *expect_type, struct expression *exp, else result_type = builtin_f_type (exp->gdbarch)->builtin_integer_s8; - LONGEST result_value = value_address (arg1); + LONGEST result_value = arg1->address (); return value_from_longest (result_type, result_value); } @@ -1410,7 +1410,7 @@ fortran_undetermined::value_subarray (value *array, debug_printf (" |-> Total offset: %s\n", plongest (total_offset)); debug_printf (" |-> Base address: %s\n", - core_addr_to_string (value_address (array))); + core_addr_to_string (array->address ())); debug_printf (" '-> Contiguous = %s\n", (is_all_contiguous ? "Yes" : "No")); } @@ -1446,13 +1446,13 @@ fortran_undetermined::value_subarray (value *array, > check_typedef (array->type ())->length ())) { fortran_array_walker p - (array_slice_type, value_address (array) + total_offset, dest); + (array_slice_type, array->address () + total_offset, dest); p.walk (); } else { fortran_array_walker p - (array_slice_type, value_address (array) + total_offset, + (array_slice_type, array->address () + total_offset, total_offset, array, dest); p.walk (); } @@ -1470,11 +1470,11 @@ fortran_undetermined::value_subarray (value *array, || (total_offset + array_slice_type->length () > check_typedef (array->type ())->length ())) array = value_at_lazy (array_slice_type, - value_address (array) + total_offset); + array->address () + total_offset); else array = value_from_contents_and_address (array_slice_type, value_contents (array).data () + total_offset, - value_address (array) + total_offset); + array->address () + total_offset); } else if (!array->lazy ()) array = value_from_component (array, array_slice_type, total_offset); @@ -1632,7 +1632,7 @@ fortran_structop_operation::evaluate (struct type *expect_type, if (is_dynamic_type (elt_type)) { const gdb_byte *valaddr = value_contents_for_printing (elt).data (); - CORE_ADDR address = value_address (elt); + CORE_ADDR address = elt->address (); gdb::array_view view = gdb::make_array_view (valaddr, elt_type->length ()); elt_type = resolve_dynamic_type (elt_type, view, address); diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c index 1be6294fadb..9d0f02af954 100644 --- a/gdb/f-valprint.c +++ b/gdb/f-valprint.c @@ -439,7 +439,7 @@ f_language::value_print_inner (struct value *val, struct ui_file *stream, CORE_ADDR addr; int index; const gdb_byte *valaddr = value_contents_for_printing (val).data (); - const CORE_ADDR address = value_address (val); + const CORE_ADDR address = val->address (); switch (type->code ()) { diff --git a/gdb/frame.c b/gdb/frame.c index 8bb2385d9e7..935dea1e417 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1192,7 +1192,7 @@ frame_register_unwind (frame_info_ptr next_frame, int regnum, *optimizedp = value_optimized_out (value); *unavailablep = !value_entirely_available (value); *lvalp = VALUE_LVAL (value); - *addrp = value_address (value); + *addrp = value->address (); if (*lvalp == lval_register) *realnump = VALUE_REGNUM (value); else @@ -1302,7 +1302,7 @@ frame_unwind_register_value (frame_info_ptr next_frame, int regnum) else if (VALUE_LVAL (value) == lval_memory) gdb_printf (&debug_file, " address=%s", paddress (gdbarch, - value_address (value))); + value->address ())); else gdb_printf (&debug_file, " computed"); diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c index 0922a8e3afe..e9c9a9cd392 100644 --- a/gdb/frv-tdep.c +++ b/gdb/frv-tdep.c @@ -1238,7 +1238,7 @@ frv_push_dummy_call (struct gdbarch *gdbarch, struct value *function, if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION) { store_unsigned_integer (valbuf, 4, byte_order, - value_address (arg)); + arg->address ()); typecode = TYPE_CODE_PTR; len = 4; val = valbuf; diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 75a567dd3f6..ff8de6b2b49 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -4009,7 +4009,7 @@ is_unique_ancestor (struct type *base, struct value *val) return is_unique_ancestor_worker (base, val->type (), &offset, value_contents_for_printing (val).data (), val->embedded_offset (), - value_address (val), val) == 1; + val->address (), val) == 1; } /* See gdbtypes.h. */ diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c index 76dc719719f..908581a2063 100644 --- a/gdb/gnu-v2-abi.c +++ b/gdb/gnu-v2-abi.c @@ -234,7 +234,7 @@ gnuv2_value_rtti_type (struct value *v, int *full, LONGEST *top, int *using_enc) /* We can't use value_ind here, because it would want to use RTTI, and we'd waste a bunch of time figuring out we already know the type. Besides, we don't care about the type, just the actual pointer. */ - if (value_address (value_field (v, known_type_vptr_fieldno)) == 0) + if (value_field (v, known_type_vptr_fieldno)->address () == 0) return NULL; vtbl = value_as_address (value_field (v, known_type_vptr_fieldno)); diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index dc249f0980e..2fa40085f49 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -325,7 +325,7 @@ gnuv3_rtti_type (struct value *value, /* Find the linker symbol for this vtable. */ vtable_symbol - = lookup_minimal_symbol_by_pc (value_address (vtable) + = lookup_minimal_symbol_by_pc (vtable->address () + vtable->embedded_offset ()).minsym; if (! vtable_symbol) return NULL; @@ -804,7 +804,7 @@ hash_value_and_voffset (const void *p) { const struct value_and_voffset *o = (const struct value_and_voffset *) p; - return value_address (o->value) + o->value->embedded_offset (); + return o->value->address () + o->value->embedded_offset (); } /* Equality function for value_and_voffset. */ @@ -815,8 +815,8 @@ eq_value_and_voffset (const void *a, const void *b) const struct value_and_voffset *ova = (const struct value_and_voffset *) a; const struct value_and_voffset *ovb = (const struct value_and_voffset *) b; - return (value_address (ova->value) + ova->value->embedded_offset () - == value_address (ovb->value) + ovb->value->embedded_offset ()); + return (ova->value->address () + ova->value->embedded_offset () + == ovb->value->address () + ovb->value->embedded_offset ()); } /* Comparison function for value_and_voffset. */ @@ -825,9 +825,9 @@ static bool compare_value_and_voffset (const struct value_and_voffset *va, const struct value_and_voffset *vb) { - CORE_ADDR addra = (value_address (va->value) + CORE_ADDR addra = (va->value->address () + va->value->embedded_offset ()); - CORE_ADDR addrb = (value_address (vb->value) + CORE_ADDR addrb = (vb->value->address () + vb->value->embedded_offset ()); return addra < addrb; @@ -907,15 +907,15 @@ print_one_vtable (struct gdbarch *gdbarch, struct value *value, CORE_ADDR vt_addr; vtable = gnuv3_get_vtable (gdbarch, type, - value_address (value) + value->address () + value->embedded_offset ()); - vt_addr = value_address (value_field (vtable, - vtable_field_virtual_functions)); + vt_addr = value_field (vtable, + vtable_field_virtual_functions)->address (); gdb_printf (_("vtable for '%s' @ %s (subobject @ %s):\n"), TYPE_SAFE_NAME (type), paddress (gdbarch, vt_addr), - paddress (gdbarch, (value_address (value) + paddress (gdbarch, (value->address () + value->embedded_offset ()))); for (i = 0; i <= max_voffset; ++i) @@ -1138,7 +1138,7 @@ gnuv3_get_typeid (struct value *value) && gnuv3_dynamic_class (type)) { struct value *vtable, *typeinfo_value; - CORE_ADDR address = value_address (value) + value->embedded_offset (); + CORE_ADDR address = value->address () + value->embedded_offset (); vtable = gnuv3_get_vtable (gdbarch, type, address); if (vtable == NULL) diff --git a/gdb/go-valprint.c b/gdb/go-valprint.c index dce7bd684b4..8f6c8849fd9 100644 --- a/gdb/go-valprint.c +++ b/gdb/go-valprint.c @@ -105,7 +105,7 @@ go_language::value_print_inner (struct value *val, struct ui_file *stream, if (! options->raw) { print_go_string (type, val->embedded_offset (), - value_address (val), + val->address (), stream, recurse, val, options); return; } diff --git a/gdb/guile/scm-value.c b/gdb/guile/scm-value.c index 5b9a4cfb181..8f292c25851 100644 --- a/gdb/guile/scm-value.c +++ b/gdb/guile/scm-value.c @@ -1194,7 +1194,7 @@ gdbscm_value_to_lazy_string (SCM self, SCM rest) low_bound, low_bound + length - 1); } - addr = value_address (value); + addr = value->address (); break; } case TYPE_CODE_PTR: @@ -1204,7 +1204,7 @@ gdbscm_value_to_lazy_string (SCM self, SCM rest) break; default: /* Should flag an error here. PR 20769. */ - addr = value_address (value); + addr = value->address (); break; } diff --git a/gdb/infcall.c b/gdb/infcall.c index b58dc201aeb..3e0da94ab17 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -290,7 +290,7 @@ find_function_addr (struct value *function, /* Determine address to call. */ if (ftype->code () == TYPE_CODE_FUNC || ftype->code () == TYPE_CODE_METHOD) - funaddr = value_address (function); + funaddr = function->address (); else if (ftype->code () == TYPE_CODE_PTR) { funaddr = value_as_address (function); @@ -962,7 +962,7 @@ call_function_by_hand_dummy (struct value *function, lastval = get_last_thread_stack_temporary (call_thread.get ()); if (lastval != NULL) { - CORE_ADDR lastval_addr = value_address (lastval); + CORE_ADDR lastval_addr = lastval->address (); if (gdbarch_inner_than (gdbarch, 1, 2)) { diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index c7187986aeb..73f9e37aee3 100644 --- a/gdb/m2-valprint.c +++ b/gdb/m2-valprint.c @@ -270,7 +270,7 @@ m2_print_array_contents (struct value *val, || ((current_language->la_language == language_m2) && (type->code () == TYPE_CODE_CHAR))) && (options->format == 0 || options->format == 's')) - val_print_string (type, NULL, value_address (val), len+1, stream, + val_print_string (type, NULL, val->address (), len+1, stream, options); else { @@ -306,7 +306,7 @@ m2_language::value_print_inner (struct value *val, struct ui_file *stream, struct type *elttype; CORE_ADDR addr; const gdb_byte *valaddr = value_contents_for_printing (val).data (); - const CORE_ADDR address = value_address (val); + const CORE_ADDR address = val->address (); struct type *type = check_typedef (val->type ()); switch (type->code ()) diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c index ceab11da67f..a1d2ad6da80 100644 --- a/gdb/m32r-tdep.c +++ b/gdb/m32r-tdep.c @@ -698,7 +698,7 @@ m32r_push_dummy_call (struct gdbarch *gdbarch, struct value *function, && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)) { store_unsigned_integer (valbuf, 4, byte_order, - value_address (args[argnum])); + args[argnum]->address ()); typecode = TYPE_CODE_PTR; len = 4; val = valbuf; diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 38ec39d4cc1..349a89eb23d 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -4604,7 +4604,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, struct value *function, { gdb_assert (abi_regsize <= ARRAY_SIZE (ref_valbuf)); store_unsigned_integer (ref_valbuf, abi_regsize, byte_order, - value_address (arg)); + arg->address ()); typecode = TYPE_CODE_PTR; len = abi_regsize; val = ref_valbuf; diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index ac2b4a7ef71..aade7c3af07 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1212,7 +1212,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, arg_len = push_size; gdb_assert (push_size <= MN10300_MAX_REGISTER_SIZE); store_unsigned_integer (valbuf, push_size, byte_order, - value_address (*args)); + (*args)->address ()); val = &valbuf[0]; } else diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index 30a28d087d9..d4a40d4cd10 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -703,7 +703,7 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function, { /* Aggregates of any size are passed by reference. */ store_unsigned_integer (struct_addr_buf, 4, byte_order, - value_address (arg)); + arg->address ()); arg_bits = struct_addr_buf; arg_size = (code_model == MSP_LARGE_CODE_MODEL) ? 4 : 2; } diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c index d8c30435cc5..d485d552102 100644 --- a/gdb/or1k-tdep.c +++ b/gdb/or1k-tdep.c @@ -672,7 +672,7 @@ or1k_push_dummy_call (struct gdbarch *gdbarch, struct value *function, if ((TYPE_CODE_STRUCT == typecode) || (TYPE_CODE_UNION == typecode) || (len > bpw * 2)) { - CORE_ADDR valaddr = value_address (arg); + CORE_ADDR valaddr = arg->address (); /* If the arg is fabricated (i.e. 3*i, instead of i) valaddr is undefined. */ @@ -792,7 +792,7 @@ or1k_push_dummy_call (struct gdbarch *gdbarch, struct value *function, || (len > bpw * 2)) { store_unsigned_integer (valbuf, bpa, byte_order, - value_address (arg)); + arg->address ()); len = bpa; val = valbuf; } diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index 2628ebd6bf2..c6b9b5571dd 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -143,7 +143,7 @@ pascal_language::value_print_inner (struct value *val, break; } /* Array of unspecified length: treat like pointer to first elt. */ - addr = value_address (val); + addr = val->address (); } goto print_unpacked_pointer; @@ -748,7 +748,7 @@ pascal_object_print_value (struct value *val, struct ui_file *stream, if (boffset < 0 || boffset >= type->length ()) { - CORE_ADDR address= value_address (val); + CORE_ADDR address= val->address (); gdb::byte_vector buf (baseclass->length ()); if (target_read_memory (address + boffset, buf.data (), @@ -836,7 +836,7 @@ pascal_object_print_static_field (struct value *val, while (--i >= 0) { - if (value_address (val) == first_dont_print[i]) + if (val->address () == first_dont_print[i]) { fputs_styled (_("\ "), @@ -845,7 +845,7 @@ pascal_object_print_static_field (struct value *val, } } - addr = value_address (val); + addr = val->address (); obstack_grow (&dont_print_statmem_obstack, (char *) &addr, sizeof (CORE_ADDR)); diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index d6d1d0fe1a2..6d4bf2cc618 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -2510,7 +2510,7 @@ ppc_linux_nat_target::check_condition (CORE_ADDR watch_addr, if (num_accesses_left == 1 && num_accesses_right == 0 && VALUE_LVAL (left_val) == lval_memory - && value_address (left_val) == watch_addr) + && left_val->address () == watch_addr) { *data_value = value_as_long (right_val); @@ -2520,7 +2520,7 @@ ppc_linux_nat_target::check_condition (CORE_ADDR watch_addr, } else if (num_accesses_left == 0 && num_accesses_right == 1 && VALUE_LVAL (right_val) == lval_memory - && value_address (right_val) == watch_addr) + && right_val->address () == watch_addr) { *data_value = value_as_long (left_val); diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 539285477db..bd442fe2855 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -298,7 +298,7 @@ print_formatted (struct value *val, int size, int len = type->length (); if (VALUE_LVAL (val) == lval_memory) - next_address = value_address (val) + len; + next_address = val->address () + len; if (size) { @@ -308,9 +308,9 @@ print_formatted (struct value *val, int size, { struct type *elttype = val->type (); - next_address = (value_address (val) + next_address = (val->address () + val_print_string (elttype, NULL, - value_address (val), -1, + val->address (), -1, stream, options) * len); } return; @@ -318,9 +318,9 @@ print_formatted (struct value *val, int size, case 'i': /* We often wrap here if there are long symbolic names. */ stream->wrap_here (4); - next_address = (value_address (val) + next_address = (val->address () + gdb_print_insn (type->arch (), - value_address (val), stream, + val->address (), stream, &branch_delay_insns)); return; } @@ -1889,7 +1889,7 @@ x_command (const char *exp, int from_tty) pointers to functions. This makes "x/i main" work. */ if (val->type ()->code () == TYPE_CODE_FUNC && VALUE_LVAL (val) == lval_memory) - next_address = value_address (val); + next_address = val->address (); else next_address = value_as_address (val); diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c index 0e3bc699819..b387bb813e7 100644 --- a/gdb/python/py-value.c +++ b/gdb/python/py-value.c @@ -538,7 +538,7 @@ valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw) low_bound, low_bound + length - 1); } - addr = value_address (value); + addr = value->address (); break; } case TYPE_CODE_PTR: @@ -548,7 +548,7 @@ valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw) break; default: /* Should flag an error here. PR 20769. */ - addr = value_address (value); + addr = value->address (); break; } diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index f6e5089825c..aa1590078dc 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -351,7 +351,7 @@ rust_val_print_slice (struct value *val, struct ui_file *stream, int recurse, llen - 1); struct value *array = allocate_value_lazy (array_type); VALUE_LVAL (array) = lval_memory; - set_value_address (array, value_as_address (base)); + array->set_address (value_as_address (base)); value_fetch_lazy (array); generic_value_print (array, stream, recurse, options, &rust_decorations); @@ -458,7 +458,7 @@ rust_language::print_enum (struct value *val, struct ui_file *stream, gdb::array_view view (value_contents_for_printing (val).data (), val->type ()->length ()); - type = resolve_dynamic_type (type, view, value_address (val)); + type = resolve_dynamic_type (type, view, val->address ()); if (rust_empty_enum_p (type)) { @@ -1375,7 +1375,7 @@ rust_struct_anon::evaluate (struct type *expect_type, if (rust_enum_p (type)) { type = resolve_dynamic_type (type, value_contents (lhs), - value_address (lhs)); + lhs->address ()); if (rust_empty_enum_p (type)) error (_("Cannot access field %d of empty enum %s"), @@ -1438,7 +1438,7 @@ rust_structop::evaluate (struct type *expect_type, if (type->code () == TYPE_CODE_STRUCT && rust_enum_p (type)) { type = resolve_dynamic_type (type, value_contents (lhs), - value_address (lhs)); + lhs->address ()); if (rust_empty_enum_p (type)) error (_("Cannot access field %s of empty enum %s"), diff --git a/gdb/stack.c b/gdb/stack.c index 5efe024c88e..9952c3a73df 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -1726,7 +1726,7 @@ info_frame_command_core (frame_info_ptr fi, bool selected_frame_p) else if (VALUE_LVAL (value) == lval_memory) { gdb_printf (" Previous frame's sp at "); - gdb_puts (paddress (gdbarch, value_address (value))); + gdb_puts (paddress (gdbarch, value->address ())); gdb_printf ("\n"); } else if (VALUE_LVAL (value) == lval_register) diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 7e172dfb3fc..4c181dc7de7 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -1376,7 +1376,7 @@ encode_actions_1 (struct command_line *action, { /* Safe because we know it's a simple expression. */ tempval = evaluate_expression (exp.get ()); - addr = value_address (tempval); + addr = tempval->address (); expr::unop_memval_operation *memop = (gdb::checked_static_cast (exp->op.get ())); diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c index fd801540757..74451bbaa9b 100644 --- a/gdb/v850-tdep.c +++ b/gdb/v850-tdep.c @@ -1059,7 +1059,7 @@ v850_push_dummy_call (struct gdbarch *gdbarch, && (*args)->type ()->length () > E_MAX_RETTYPE_SIZE_IN_REGS) { store_unsigned_integer (valbuf, 4, byte_order, - value_address (*args)); + (*args)->address ()); len = 4; val = valbuf; } diff --git a/gdb/valarith.c b/gdb/valarith.c index 53dfc82012d..47eccdbe8a0 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -234,7 +234,7 @@ value_subscripted_rvalue (struct value *array, LONGEST index, { CORE_ADDR address; - address = value_address (array) + elt_offs; + address = array->address () + elt_offs; elt_type = resolve_dynamic_type (elt_type, {}, address); } diff --git a/gdb/valops.c b/gdb/valops.c index 17b96ffcc41..6a557c357f1 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -253,7 +253,7 @@ value_cast_structs (struct type *type, struct value *v2) if (real_type) { v = value_full_object (v2, real_type, full, top, using_enc); - v = value_at_lazy (real_type, value_address (v)); + v = value_at_lazy (real_type, v->address ()); real_type = v->type (); /* We might be trying to cast to the outermost enclosing @@ -275,9 +275,9 @@ value_cast_structs (struct type *type, struct value *v2) if (v) { /* Downcasting is possible (t1 is superclass of v2). */ - CORE_ADDR addr2 = value_address (v2) + v2->embedded_offset (); + CORE_ADDR addr2 = v2->address () + v2->embedded_offset (); - addr2 -= value_address (v) + v->embedded_offset (); + addr2 -= v->address () + v->embedded_offset (); return value_at (type, addr2); } } @@ -654,7 +654,7 @@ value_cast (struct type *type, struct value *arg2) return arg2; } else if (VALUE_LVAL (arg2) == lval_memory) - return value_at_lazy (to_type, value_address (arg2)); + return value_at_lazy (to_type, arg2->address ()); else { if (current_language->la_language == language_ada) @@ -876,7 +876,7 @@ value_dynamic_cast (struct type *type, struct value *arg) error (_("Couldn't determine value's most derived type for dynamic_cast")); /* Compute the most derived object's address. */ - addr = value_address (arg); + addr = arg->address (); if (full) { /* Done. */ @@ -904,7 +904,7 @@ value_dynamic_cast (struct type *type, struct value *arg) if (dynamic_cast_check_1 (resolved_type->target_type (), value_contents_for_printing (tem).data (), tem->embedded_offset (), - value_address (tem), tem, + tem->address (), tem, rtti_type, addr, arg_type, &result) == 1) @@ -920,7 +920,7 @@ value_dynamic_cast (struct type *type, struct value *arg) && dynamic_cast_check_2 (resolved_type->target_type (), value_contents_for_printing (tem).data (), tem->embedded_offset (), - value_address (tem), tem, + tem->address (), tem, rtti_type, &result) == 1) return value_cast (type, is_ref @@ -1154,7 +1154,7 @@ value_assign (struct value *toval, struct value *fromval) { struct value *parent = toval->parent (); - changed_addr = value_address (parent) + toval->offset (); + changed_addr = parent->address () + toval->offset (); changed_len = (toval->bitpos () + toval->bitsize () + HOST_CHAR_BIT - 1) @@ -1181,7 +1181,7 @@ value_assign (struct value *toval, struct value *fromval) } else { - changed_addr = value_address (toval); + changed_addr = toval->address (); changed_len = type_length_units (type); dest_buffer = value_contents (fromval).data (); } @@ -1374,9 +1374,9 @@ value_repeat (struct value *arg1, int count) val = allocate_repeat_value (arg1->enclosing_type (), count); VALUE_LVAL (val) = lval_memory; - set_value_address (val, value_address (arg1)); + val->set_address (arg1->address ()); - read_value_memory (val, 0, val->stack (), value_address (val), + read_value_memory (val, 0, val->stack (), val->address (), value_contents_all_raw (val).data (), type_length_units (val->enclosing_type ())); @@ -1409,7 +1409,7 @@ address_of_variable (struct symbol *var, const struct block *b) if ((VALUE_LVAL (val) == lval_memory && val->lazy ()) || type->code () == TYPE_CODE_FUNC) { - CORE_ADDR addr = value_address (val); + CORE_ADDR addr = val->address (); return value_from_pointer (lookup_pointer_type (type), addr); } @@ -1526,7 +1526,7 @@ value_coerce_array (struct value *arg1) error (_("Attempt to take address of value not located in memory.")); return value_from_pointer (lookup_pointer_type (type->target_type ()), - value_address (arg1)); + arg1->address ()); } /* Given a value which is a function, return a value which is a pointer @@ -1541,7 +1541,7 @@ value_coerce_function (struct value *arg1) error (_("Attempt to take address of value not located in memory.")); retval = value_from_pointer (lookup_pointer_type (arg1->type ()), - value_address (arg1)); + arg1->address ()); return retval; } @@ -1591,7 +1591,7 @@ value_addr (struct value *arg1) /* Get target memory address. */ arg2 = value_from_pointer (lookup_pointer_type (arg1->type ()), - (value_address (arg1) + (arg1->address () + arg1->embedded_offset ())); /* This may be a pointer to a base subobject; so remember the @@ -2085,7 +2085,7 @@ struct_field_searcher::search (struct value *arg1, LONGEST offset, boffset = baseclass_offset (type, i, value_contents_for_printing (arg1).data (), arg1->embedded_offset () + offset, - value_address (arg1), + arg1->address (), arg1); /* The virtual base class pointer might have been clobbered @@ -2098,7 +2098,7 @@ struct_field_searcher::search (struct value *arg1, LONGEST offset, { CORE_ADDR base_addr; - base_addr = value_address (arg1) + boffset; + base_addr = arg1->address () + boffset; v2 = value_at_lazy (basetype, base_addr); if (target_read_memory (base_addr, value_contents_raw (v2).data (), @@ -2278,7 +2278,7 @@ search_struct_method (const char *name, struct value **arg1p, CORE_ADDR address; gdb::byte_vector tmp (baseclass->length ()); - address = value_address (*arg1p); + address = (*arg1p)->address (); if (target_read_memory (address + offset, tmp.data (), baseclass->length ()) != 0) @@ -2298,7 +2298,7 @@ search_struct_method (const char *name, struct value **arg1p, } base_offset = baseclass_offset (type, i, base_valaddr, - this_offset, value_address (base_val), + this_offset, base_val->address (), base_val); } else @@ -2560,7 +2560,7 @@ find_method_list (struct value **argp, const char *method, base_offset = baseclass_offset (type, i, value_contents_for_printing (*argp).data (), (*argp)->offset () + offset, - value_address (*argp), *argp); + (*argp)->address (), *argp); } else /* Non-virtual base, simply use bit position from debug info. */ @@ -3766,7 +3766,7 @@ value_struct_elt_for_reference (struct type *domain, int offset, result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j))); cplus_make_method_ptr (result->type (), value_contents_writeable (result).data (), - value_address (v), 0); + v->address (), 0); } } return result; @@ -3977,7 +3977,7 @@ value_full_object (struct value *argp, /* Go back by the computed top_offset from the beginning of the object, adjusting for the embedded offset of argp if that's what value_rtti_type used for its computation. */ - new_val = value_at_lazy (real_type, value_address (argp) - top + + new_val = value_at_lazy (real_type, argp->address () - top + (using_enc ? 0 : argp->embedded_offset ())); new_val->deprecated_set_type (argp->type ()); new_val->set_embedded_offset ((using_enc diff --git a/gdb/valprint.c b/gdb/valprint.c index d2fbc93284f..20cf64ad2c4 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -494,7 +494,7 @@ generic_val_print_array (struct value *val, else { /* Array of unspecified length: treat like pointer to first elt. */ - print_unpacked_pointer (type, elttype, value_address (val), + print_unpacked_pointer (type, elttype, val->address (), stream, options); } @@ -965,7 +965,7 @@ generic_value_print (struct value *val, struct ui_file *stream, int recurse, if (options->format) value_print_scalar_formatted (val, options, 0, stream); else - generic_val_print_func (type, 0, value_address (val), stream, + generic_val_print_func (type, 0, val->address (), stream, val, options); break; diff --git a/gdb/value.c b/gdb/value.c index c7a6b689e58..fa725b1d8af 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1269,34 +1269,34 @@ value::computed_closure () const } CORE_ADDR -value_address (const struct value *value) +value::address () const { - if (value->m_lval != lval_memory) + if (m_lval != lval_memory) return 0; - if (value->m_parent != NULL) - return value_address (value->m_parent.get ()) + value->m_offset; - if (NULL != TYPE_DATA_LOCATION (value->type ())) + if (m_parent != NULL) + return m_parent.get ()->address () + m_offset; + if (NULL != TYPE_DATA_LOCATION (type ())) { - gdb_assert (PROP_CONST == TYPE_DATA_LOCATION_KIND (value->type ())); - return TYPE_DATA_LOCATION_ADDR (value->type ()); + gdb_assert (PROP_CONST == TYPE_DATA_LOCATION_KIND (type ())); + return TYPE_DATA_LOCATION_ADDR (type ()); } - return value->m_location.address + value->m_offset; + return m_location.address + m_offset; } CORE_ADDR -value_raw_address (const struct value *value) +value::raw_address () const { - if (value->m_lval != lval_memory) + if (m_lval != lval_memory) return 0; - return value->m_location.address; + return m_location.address; } void -set_value_address (struct value *value, CORE_ADDR addr) +value::set_address (CORE_ADDR addr) { - gdb_assert (value->m_lval == lval_memory); - value->m_location.address = addr; + gdb_assert (m_lval == lval_memory); + m_location.address = addr; } struct internalvar ** @@ -1539,7 +1539,7 @@ set_value_component_location (struct value *component, type = whole->type (); if (NULL != TYPE_DATA_LOCATION (type) && TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) - set_value_address (component, TYPE_DATA_LOCATION_ADDR (type)); + component->set_address (TYPE_DATA_LOCATION_ADDR (type)); /* Similarly, if the COMPONENT value has a dynamically resolved location property then update its address. */ @@ -1571,7 +1571,7 @@ set_value_component_location (struct value *component, } else gdb_assert (VALUE_LVAL (component) == lval_memory); - set_value_address (component, TYPE_DATA_LOCATION_ADDR (type)); + component->set_address (TYPE_DATA_LOCATION_ADDR (type)); } } @@ -2491,7 +2491,7 @@ value_as_address (struct value *val) Upon entry to this function, if VAL is a value of type `function' (that is, TYPE_CODE (val->type ()) == TYPE_CODE_FUNC), then - value_address (val) is the address of the function. This is what + val->address () is the address of the function. This is what you'll get if you evaluate an expression like `main'. The call to COERCE_ARRAY below actually does all the usual unary conversions, which includes converting values of type `function' @@ -2511,7 +2511,7 @@ value_as_address (struct value *val) function, just return its address directly. */ if (val->type ()->code () == TYPE_CODE_FUNC || val->type ()->code () == TYPE_CODE_METHOD) - return value_address (val); + return val->address (); val = coerce_array (val); @@ -2824,7 +2824,7 @@ value_primitive_field (struct value *arg1, LONGEST offset, boffset = baseclass_offset (arg_type, fieldno, value_contents (arg1).data (), arg1->embedded_offset (), - value_address (arg1), + arg1->address (), arg1); else boffset = arg_type->field (fieldno).loc_bitpos () / 8; @@ -2918,7 +2918,7 @@ value_fn_field (struct value **arg1p, struct fn_field *f, VALUE_LVAL (v) = lval_memory; if (sym) { - set_value_address (v, sym->value_block ()->entry_pc ()); + v->set_address (sym->value_block ()->entry_pc ()); } else { @@ -2927,10 +2927,9 @@ value_fn_field (struct value **arg1p, struct fn_field *f, struct objfile *objfile = msym.objfile; struct gdbarch *gdbarch = objfile->arch (); - set_value_address (v, - gdbarch_convert_from_func_ptr_addr - (gdbarch, msym.value_address (), - current_inferior ()->top_target ())); + v->set_address (gdbarch_convert_from_func_ptr_addr + (gdbarch, msym.value_address (), + current_inferior ()->top_target ())); } if (arg1p) @@ -3347,7 +3346,7 @@ value_from_contents_and_address_unresolved (struct type *type, else v = value_from_contents (type, valaddr); VALUE_LVAL (v) = lval_memory; - set_value_address (v, address); + v->set_address (address); return v; } @@ -3376,7 +3375,7 @@ value_from_contents_and_address (struct type *type, && TYPE_DATA_LOCATION_KIND (resolved_type_no_typedef) == PROP_CONST) address = TYPE_DATA_LOCATION_ADDR (resolved_type_no_typedef); VALUE_LVAL (v) = lval_memory; - set_value_address (v, address); + v->set_address (address); return v; } @@ -3664,7 +3663,7 @@ value_fetch_lazy_memory (struct value *val) { gdb_assert (VALUE_LVAL (val) == lval_memory); - CORE_ADDR addr = value_address (val); + CORE_ADDR addr = val->address (); struct type *type = check_typedef (val->enclosing_type ()); if (type->length ()) @@ -3772,7 +3771,7 @@ value_fetch_lazy_register (struct value *val) else if (VALUE_LVAL (new_val) == lval_memory) gdb_printf (&debug_file, " address=%s", paddress (gdbarch, - value_address (new_val))); + new_val->address ())); else gdb_printf (&debug_file, " computed"); diff --git a/gdb/value.h b/gdb/value.h index fbbea204e97..cc7f85acbf2 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -326,6 +326,19 @@ struct value void set_initialized (int value) { m_initialized = value; } + /* If lval == lval_memory, return the address in the inferior. If + lval == lval_register, return the byte offset into the registers + structure. Otherwise, return 0. The returned address + includes the offset, if any. */ + CORE_ADDR address () const; + + /* Like address, except the result does not include value's + offset. */ + CORE_ADDR raw_address () const; + + /* Set the address of a value. */ + void set_address (CORE_ADDR); + /* Type of value; either not an lval, or one of the various different possible kinds of lval. */ @@ -668,19 +681,6 @@ extern void set_value_component_location (struct value *component, possible kinds of lval. */ #define VALUE_LVAL(val) (*((val)->deprecated_lval_hack ())) -/* If lval == lval_memory, return the address in the inferior. If - lval == lval_register, return the byte offset into the registers - structure. Otherwise, return 0. The returned address - includes the offset, if any. */ -extern CORE_ADDR value_address (const struct value *); - -/* Like value_address, except the result does not include value's - offset. */ -extern CORE_ADDR value_raw_address (const struct value *); - -/* Set the address of a value. */ -extern void set_value_address (struct value *, CORE_ADDR); - /* Pointer to internal variable. */ extern struct internalvar **deprecated_value_internalvar_hack (struct value *); #define VALUE_INTERNALVAR(val) (*deprecated_value_internalvar_hack (val))