From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd30.google.com (mail-io1-xd30.google.com [IPv6:2607:f8b0:4864:20::d30]) by sourceware.org (Postfix) with ESMTPS id A281F3858C83 for ; Fri, 7 Apr 2023 16:39:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A281F3858C83 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd30.google.com with SMTP id o10so10743742iou.5 for ; Fri, 07 Apr 2023 09:39:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1680885598; x=1683477598; h=to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=JaK+wZAH1T/5WThjHTNFAIi14X8IxTArPcvcrt4iVHc=; b=IMIywP0vqgZeVBFI6wL3gMM0WIFffVtLnnvnzcH/mWfVwEYExh7JlzolNMYa+wdzsl y1Aa2ie3hKFu6UGvJVCCkRWo3x6h+ARgf2LG8yjh3S6QRF0f23vr2y5hQ9Kxo9EzjcB6 pCp/CcZJGK545JZGDwA1rXfQlYfnJ+EQXuIEps2CQv+GGvLffhGvIKwrnzbA0Un6V1WF hdTcqWu/ieRmAbyqU7sJK4VU+Y5fS4TCOEzxzCcpzjwmO9kyHFAMQ8Stg9oZ75A3cUwL P/dyaQ790IQFH+9trJtkKjSijFszNUGu/sIQzSE+gQSJtGR1W/RjM5zXoQ69NdZb02y5 BHIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680885598; x=1683477598; h=to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JaK+wZAH1T/5WThjHTNFAIi14X8IxTArPcvcrt4iVHc=; b=kHojJF5u4wkSkR28ruI/K5Iioa5d3WMFKEfTKA0zB8H2rc0RZD6gccCdPZSqd55zQC dzyrgRfbNAK7hmccLmKu3qAplOcVwcH9qMYcBT9+xTNmAlKPzknJHmSmrruYkiWSUrwk D2/bUz+XFbA2YNvoo8QD6DXVUM5WWI3wuqrDLh99nHVEMIp063+FYfVnkx4Itq4h+zqw waTRV37W2pU/K+PyoAZ7Pxvj0eZi8RmDkZNE6MSTXM08usrd77fkG0dd2pzsbE8mDjwy XUJC8+rOU72RNAIZfCMVvYVJ53Fe6Y5Th/1EFv2lTRS2ILuPNrzYhFgZdErnWDrQsi5N yK2Q== X-Gm-Message-State: AAQBX9d6kD3GofjkpMa/PJ2JCoJte7UH6C2xppN8LbJiU+kJIxTQSzM0 FvrMdjreob7klC42PVAczRKQegdDc7kYhrDBWq7YBw== X-Google-Smtp-Source: AKy350YhT8VJEPUgqivw6euQyrF/s3okSRnkfuVJkfLHBX+evt60P8/SPV/rsqqdshddKtWV76xtww== X-Received: by 2002:a5e:c913:0:b0:758:a91a:aa82 with SMTP id z19-20020a5ec913000000b00758a91aaa82mr2464115iol.11.1680885597839; Fri, 07 Apr 2023 09:39:57 -0700 (PDT) Received: from localhost.localdomain (75-166-159-36.hlrn.qwest.net. [75.166.159.36]) by smtp.gmail.com with ESMTPSA id c62-20020a029644000000b00406431d0fb5sm1171452jai.72.2023.04.07.09.39.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Apr 2023 09:39:57 -0700 (PDT) From: Tom Tromey Date: Fri, 07 Apr 2023 10:39:57 -0600 Subject: [PATCH v2 4/8] Introduce symbol_block_ops::get_block_value MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20230314-submit-pragma-import-export-v2-4-dcff927191fb@adacore.com> References: <20230314-submit-pragma-import-export-v2-0-dcff927191fb@adacore.com> In-Reply-To: <20230314-submit-pragma-import-export-v2-0-dcff927191fb@adacore.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.2 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,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 List-Id: This adds a new callback to symbol_block_ops. This callback lets a LOC_BLOCK symbol implement its own function to find the underlying block. --- gdb/symtab.c | 3 ++- gdb/symtab.h | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gdb/symtab.c b/gdb/symtab.c index b7b77818fbe..d940abbd4ed 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -6404,7 +6404,8 @@ register_symbol_block_impl (enum address_class aclass, /* Sanity check OPS. */ gdb_assert (ops != NULL); - gdb_assert (ops->find_frame_base_location != NULL); + gdb_assert (ops->find_frame_base_location != nullptr + || ops->get_block_value != nullptr); return result; } diff --git a/gdb/symtab.h b/gdb/symtab.h index 8d3f5610bd3..d8e3c273f85 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1182,6 +1182,12 @@ struct symbol_block_ops the corresponding DW_AT_frame_base attribute. */ CORE_ADDR (*get_frame_base) (struct symbol *framefunc, frame_info_ptr frame); + + /* Return the block for this function. So far, this is used to + implement function aliases. So, if this is set, then it's not + necessary to set the other functions in this structure; and vice + versa. */ + const block *(*get_block_value) (const struct symbol *sym); }; /* Functions used with LOC_REGISTER and LOC_REGPARM_ADDR. */ @@ -1536,6 +1542,9 @@ struct block_symbol inline const block * symbol::value_block () const { + if (SYMBOL_BLOCK_OPS (this) != nullptr + && SYMBOL_BLOCK_OPS (this)->get_block_value != nullptr) + return SYMBOL_BLOCK_OPS (this)->get_block_value (this); return m_value.block; } -- 2.39.1