From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id EAuRNUgAV2GhfAAAWB0awg (envelope-from ) for ; Fri, 01 Oct 2021 08:34:16 -0400 Received: by simark.ca (Postfix, from userid 112) id D7E1E1EDF0; Fri, 1 Oct 2021 08:34:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 096751E813 for ; Fri, 1 Oct 2021 08:34:16 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5545B3857C59 for ; Fri, 1 Oct 2021 12:34:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5545B3857C59 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633091655; bh=SX74VwfpIfn6YAvIeBRdKLeAfekFyumYhkOxTt5tQB0=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=ylSJMs4pKf6N1BgVyEZdSztsvFA1dVwySJ1Dobh5RI3U13MMCuw8+forTGmH6ydRK HiC48URbeb6xvlCl2pWu8dKsSLBuwJPCPF9zwichQZvwyekFujjOYX5AeygPW0FAgo i606uR1ZtP9mJOnHvP2jIQurbvPkFhLt9aAwRDAA= Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id A4ACD3858422 for ; Fri, 1 Oct 2021 12:33:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A4ACD3858422 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B787A22680 for ; Fri, 1 Oct 2021 12:33:28 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id A6DFE13C59 for ; Fri, 1 Oct 2021 12:33:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id ECW3JxgAV2ENXwAAMHmgww (envelope-from ) for ; Fri, 01 Oct 2021 12:33:28 +0000 To: gdb-patches@sourceware.org Subject: [PATCH 2/4] [gdb/symtab] Remove COMPUNIT_CALL_SITE_HTAB Date: Fri, 1 Oct 2021 14:33:26 +0200 Message-Id: <20211001123328.22314-2-tdevries@suse.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20211001123328.22314-1-tdevries@suse.de> References: <20211001123328.22314-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" From: Simon Marchi Remove macro COMPUNIT_CALL_SITE_HTAB, and provide access to the htab using member functions: - compunit_symtab::find_call_site - compunit_symtab::set_call_site_htab Tested on x86_64-linux. Co-Authored-By: Tom de Vries --- gdb/block.c | 10 +++++----- gdb/dwarf2/read.c | 2 +- gdb/symtab.c | 24 ++++++++++++++++++++++++ gdb/symtab.h | 9 +++++++-- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/gdb/block.c b/gdb/block.c index 4cb95731396..90c0c5b3250 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -225,15 +225,15 @@ struct call_site * call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) { struct compunit_symtab *cust; - void **slot = NULL; + call_site *cs = nullptr; /* -1 as tail call PC can be already after the compilation unit range. */ cust = find_pc_compunit_symtab (pc - 1); - if (cust != NULL && COMPUNIT_CALL_SITE_HTAB (cust) != NULL) - slot = htab_find_slot (COMPUNIT_CALL_SITE_HTAB (cust), &pc, NO_INSERT); + if (cust != nullptr) + cs = cust->find_call_site (pc); - if (slot == NULL) + if (cs == nullptr) { struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (pc); @@ -247,7 +247,7 @@ call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) : msym.minsym->print_name ())); } - return (struct call_site *) *slot; + return cs; } /* Return the blockvector immediately containing the innermost lexical block diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 23870c04e74..ac8460df9a4 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -9510,7 +9510,7 @@ process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language) if (gcc_4_minor >= 5) cust->epilogue_unwind_valid = 1; - cust->call_site_htab = cu->call_site_htab; + cust->set_call_site_htab (cu->call_site_htab); } per_objfile->set_symtab (cu->per_cu, cust); diff --git a/gdb/symtab.c b/gdb/symtab.c index a30d900cf8d..b7a00709d00 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -331,6 +331,30 @@ search_domain_name (enum search_domain e) /* See symtab.h. */ +call_site * +compunit_symtab::find_call_site (CORE_ADDR pc) const +{ + if (m_call_site_htab == nullptr) + return nullptr; + + void **slot = htab_find_slot (m_call_site_htab, &pc, NO_INSERT); + if (slot == nullptr) + return nullptr; + + return (call_site *) *slot; +} + +/* See symtab.h. */ + +void +compunit_symtab::set_call_site_htab (htab_t call_site_htab) +{ + gdb_assert (m_call_site_htab == nullptr); + m_call_site_htab = call_site_htab; +} + +/* See symtab.h. */ + struct symtab * compunit_primary_filetab (const struct compunit_symtab *cust) { diff --git a/gdb/symtab.h b/gdb/symtab.h index 5182f51672e..6a6cf8201bc 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1449,6 +1449,12 @@ struct symtab struct compunit_symtab { + /* Set m_call_site_htab. */ + void set_call_site_htab (htab_t call_site_htab); + + /* Find call_site info for PC. */ + call_site *find_call_site (CORE_ADDR pc) const; + /* Unordered chain of all compunit symtabs of this objfile. */ struct compunit_symtab *next; @@ -1503,7 +1509,7 @@ struct compunit_symtab unsigned int epilogue_unwind_valid : 1; /* struct call_site entries for this compilation unit or NULL. */ - htab_t call_site_htab; + htab_t m_call_site_htab; /* The macro table for this symtab. Like the blockvector, this is shared between different symtabs in a given compilation unit. @@ -1538,7 +1544,6 @@ using compunit_symtab_range = next_range; #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section) #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid) #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid) -#define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab) #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table) /* A range adapter to allowing iterating over all the file tables -- 2.26.2