From patchwork Fri Apr 7 16:39:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 67522 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 B944E38555AE for ; Fri, 7 Apr 2023 16:40:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B944E38555AE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680885652; bh=JaK+wZAH1T/5WThjHTNFAIi14X8IxTArPcvcrt4iVHc=; h=Date:Subject:References:In-Reply-To:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=ICALY/wOAIsAC2+416T+F9NlWIB+xugUjFEeFlijszOm+nIDdw8pigJOYAdb+m1Qj 5OozsY7igUD4267pglh6gZlNr39udFjmOPjOj41R5DdINMJXDSxpN8K3S+mf/mnCap Kel6r4XoUxvNugzKm7KrneZb28fJks8zNeAbh1P0= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org 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 Received: by mail-io1-xd30.google.com with SMTP id o10so10743742iou.5 for ; Fri, 07 Apr 2023 09:39:58 -0700 (PDT) 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) 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 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 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-Patchwork-Original-From: Tom Tromey via Gdb-patches From: Tom Tromey Reply-To: Tom Tromey Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" 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; }