From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gateway34.websitewelcome.com (gateway34.websitewelcome.com [192.185.148.119]) by sourceware.org (Postfix) with ESMTPS id DFBCF387700E for ; Wed, 25 Mar 2020 20:07:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DFBCF387700E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=tom@tromey.com Received: from cm16.websitewelcome.com (cm16.websitewelcome.com [100.42.49.19]) by gateway34.websitewelcome.com (Postfix) with ESMTP id 8E6D120CADEF for ; Wed, 25 Mar 2020 15:07:18 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id HCJ4jkb2K8vkBHCJ4jaall; Wed, 25 Mar 2020 15:07:18 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: 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=Tb34mr+QLONB9RTZ6gjS3jHjK51MrNBYULrcGkaEjcs=; b=BX46EeY3lR5jAJaE7g7UJI0P8m uU9At4xO8448IGbI0pKQhybtQTR6+5XbOKpzi3lF9ZEkFKPmCHgFCw+eNsM0lHUJbPHlvPROza1nQ QBdINfcnnF1dMaYu0NjS7qXef; Received: from 97-118-117-21.hlrn.qwest.net ([97.118.117.21]:38026 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1jHCJ4-001VYp-CA; Wed, 25 Mar 2020 14:07:18 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 06/10] Use the new add_psymbol_to_list overload Date: Wed, 25 Mar 2020 14:07:11 -0600 Message-Id: <20200325200715.12947-7-tom@tromey.com> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20200325200715.12947-1-tom@tromey.com> References: <20200325200715.12947-1-tom@tromey.com> 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.118.117.21 X-Source-L: No X-Exim-ID: 1jHCJ4-001VYp-CA X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-118-117-21.hlrn.qwest.net (bapiya.Home) [97.118.117.21]:38026 X-Source-Auth: tom+tromey.com X-Email-Count: 7 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-24.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, JMQ_SPF_NEUTRAL, RCVD_IN_ABUSEAT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NEUTRAL, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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-List-Received-Date: Wed, 25 Mar 2020 20:07:21 -0000 This changes the DWARF reader to use the new add_psymbol_to_list overload. There should be no visible changes due to this patch. gdb/ChangeLog 2020-03-25 Tom Tromey * dwarf2/read.c (add_partial_symbol): Use new add_psymbol_to_list overload. --- gdb/ChangeLog | 5 ++ gdb/dwarf2/read.c | 127 +++++++++++++++++++++++----------------------- 2 files changed, 68 insertions(+), 64 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index a48552a4c6e..c3723684386 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -8211,6 +8211,15 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) if (actual_name == NULL) actual_name = pdi->name; + partial_symbol psymbol; + memset (&psymbol, 0, sizeof (psymbol)); + psymbol.ginfo.set_language (cu->language, &objfile->objfile_obstack); + psymbol.ginfo.section = -1; + + /* The code below indicates that the psymbol should be installed by + setting this. */ + gdb::optional where; + switch (pdi->tag) { case DW_TAG_inlined_subroutine: @@ -8227,34 +8236,25 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) But in Ada and Fortran, we want to be able to access nested procedures globally. So all Ada and Fortran subprograms are stored in the global scope. */ - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_BLOCK, - SECT_OFF_TEXT (objfile), - psymbol_placement::GLOBAL, - addr, - cu->language, objfile); + where = psymbol_placement::GLOBAL; } else - { - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_BLOCK, - SECT_OFF_TEXT (objfile), - psymbol_placement::STATIC, - addr, cu->language, objfile); - } + where = psymbol_placement::STATIC; + + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_BLOCK; + psymbol.ginfo.section = SECT_OFF_TEXT (objfile); + psymbol.ginfo.value.address = addr; if (pdi->main_subprogram && actual_name != NULL) set_objfile_main_name (objfile, actual_name, cu->language); break; case DW_TAG_constant: - add_psymbol_to_list (actual_name, - built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC, - -1, (pdi->is_external - ? psymbol_placement::GLOBAL - : psymbol_placement::STATIC), - 0, cu->language, objfile); + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_STATIC; + where = (pdi->is_external + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC); break; case DW_TAG_variable: if (pdi->d.locdesc) @@ -8285,12 +8285,13 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) table building. */ if (pdi->d.locdesc || pdi->has_type) - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_STATIC, - SECT_OFF_TEXT (objfile), - psymbol_placement::GLOBAL, - addr, cu->language, objfile); + { + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_STATIC; + psymbol.ginfo.section = SECT_OFF_TEXT (objfile); + psymbol.ginfo.value.address = addr; + where = psymbol_placement::GLOBAL; + } } else { @@ -8301,42 +8302,37 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) if (!has_loc && !pdi->has_const_value) return; - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_STATIC, - SECT_OFF_TEXT (objfile), - psymbol_placement::STATIC, - has_loc ? addr : 0, - cu->language, objfile); + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_STATIC; + psymbol.ginfo.section = SECT_OFF_TEXT (objfile); + if (has_loc) + psymbol.ginfo.value.address = addr; + where = psymbol_placement::STATIC; } break; case DW_TAG_typedef: case DW_TAG_base_type: case DW_TAG_subrange_type: - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_TYPEDEF, -1, - psymbol_placement::STATIC, - 0, cu->language, objfile); + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_TYPEDEF; + where = psymbol_placement::STATIC; break; case DW_TAG_imported_declaration: case DW_TAG_namespace: - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_TYPEDEF, -1, - psymbol_placement::GLOBAL, - 0, cu->language, objfile); + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_TYPEDEF; + where = psymbol_placement::GLOBAL; break; case DW_TAG_module: /* With Fortran 77 there might be a "BLOCK DATA" module available without any name. If so, we skip the module as it doesn't bring any value. */ if (actual_name != nullptr) - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - MODULE_DOMAIN, LOC_TYPEDEF, -1, - psymbol_placement::GLOBAL, - 0, cu->language, objfile); + { + psymbol.domain = MODULE_DOMAIN; + psymbol.aclass = LOC_TYPEDEF; + where = psymbol_placement::GLOBAL; + } break; case DW_TAG_class_type: case DW_TAG_interface_type: @@ -8353,27 +8349,30 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) /* NOTE: carlton/2003-10-07: See comment in new_symbol about static vs. global. */ - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - STRUCT_DOMAIN, LOC_TYPEDEF, -1, - cu->language == language_cplus - ? psymbol_placement::GLOBAL - : psymbol_placement::STATIC, - 0, cu->language, objfile); - + psymbol.domain = STRUCT_DOMAIN; + psymbol.aclass = LOC_TYPEDEF; + where = (cu->language == language_cplus + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC); break; case DW_TAG_enumerator: - add_psymbol_to_list (actual_name, - built_actual_name != NULL, - VAR_DOMAIN, LOC_CONST, -1, - cu->language == language_cplus - ? psymbol_placement::GLOBAL - : psymbol_placement::STATIC, - 0, cu->language, objfile); + psymbol.domain = VAR_DOMAIN; + psymbol.aclass = LOC_CONST; + where = (cu->language == language_cplus + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC); break; default: break; } + + if (where.has_value ()) + { + psymbol.ginfo.compute_and_set_names (actual_name, + built_actual_name != nullptr, + objfile->per_bfd); + add_psymbol_to_list (psymbol, *where, objfile); + } } /* Read a partial die corresponding to a namespace; also, add a symbol -- 2.17.2