From patchwork Sun Nov 25 19:20:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 30294 Received: (qmail 29877 invoked by alias); 25 Nov 2018 19:20:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 29546 invoked by uid 89); 25 Nov 2018 19:20:52 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Point X-HELO: gateway32.websitewelcome.com Received: from gateway32.websitewelcome.com (HELO gateway32.websitewelcome.com) (192.185.145.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 25 Nov 2018 19:20:48 +0000 Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway32.websitewelcome.com (Postfix) with ESMTP id DBC2B1E2C0 for ; Sun, 25 Nov 2018 13:20:46 -0600 (CST) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id QzxWg1ITSRPojQzxWgAOQE; Sun, 25 Nov 2018 13:20:46 -0600 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=b7HJ5z+PLehHKsVI6bbGSHRiR8kU5/ucNuB6qJqjWbE=; b=Kr2l0IdGlj8svuGbSXwCs7ewtk M7iXIC2Y1JB48oAcxnq/cWCI0VGQFalDUkdrY8jKPwxOKJVcUmH4IvOxhkNISu+v2NAGIXoNhLAGp fgY2KeiKu9A+lGMp23twkhJn6; Received: from 97-122-190-66.hlrn.qwest.net ([97.122.190.66]:52060 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1gQzxW-001TOx-LK; Sun, 25 Nov 2018 13:20:46 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v2 02/12] Change add_psymbol_to_list to use an enum Date: Sun, 25 Nov 2018 12:20:33 -0700 Message-Id: <20181125192043.8405-3-tom@tromey.com> In-Reply-To: <20181125192043.8405-1-tom@tromey.com> References: <20181125192043.8405-1-tom@tromey.com> This changes add_psymbol_to_list to use an enum, rather than a pointer to a vector, to decide where to put the new symbol. This reduces the number of direct references to the static_psymbols and global_psymbols members of the objfile, which is handy in a later patch. gdb/ChangeLog 2018-11-25 Tom Tromey * xcoffread.c (scan_xcoff_symtab): Update. * psymtab.c (add_psymbol_to_list): Replace "list" parameter with "where". * mdebugread.c (parse_partial_symbols) (handle_psymbol_enumerators): Update. * dwarf2read.c (add_partial_symbol, load_partial_dies): Update. * dbxread.c (read_dbx_symtab): Update. * psympriv.h (psymbol_placement): New enum. (add_psymbol_to_list): Update. --- gdb/ChangeLog | 12 ++++++++++++ gdb/dbxread.c | 18 +++++++++--------- gdb/dwarf2read.c | 45 ++++++++++++++++++++------------------------- gdb/mdebugread.c | 30 +++++++++++++++--------------- gdb/psympriv.h | 11 ++++++++++- gdb/psymtab.c | 9 ++++++--- gdb/xcoffread.c | 18 +++++++++--------- 7 files changed, 81 insertions(+), 62 deletions(-) diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 3cf140381f..abcd2f9048 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -1476,7 +1476,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_STATIC, data_sect_index, - &objfile->static_psymbols, + psymbol_placement::STATIC, nlist.n_value, psymtab_language, objfile); continue; @@ -1486,7 +1486,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_STATIC, data_sect_index, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, nlist.n_value, psymtab_language, objfile); continue; @@ -1503,14 +1503,14 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) { add_psymbol_to_list (sym_name, sym_len, 1, STRUCT_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); if (p[2] == 't') { /* Also a typedef with the same name. */ add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); p += 1; } @@ -1522,7 +1522,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) { add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); } check_enum: @@ -1583,7 +1583,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) enum constants in psymtabs, just in symtabs. */ add_psymbol_to_list (p, q - p, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, 0, + psymbol_placement::STATIC, 0, psymtab_language, objfile); /* Point past the name. */ p = q; @@ -1601,7 +1601,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) /* Constant, e.g. from "const" in Pascal. */ add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, 0, + psymbol_placement::STATIC, 0, psymtab_language, objfile); continue; @@ -1657,7 +1657,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, nlist.n_value, psymtab_language, objfile); continue; @@ -1716,7 +1716,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile) add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, nlist.n_value, psymtab_language, objfile); continue; diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index f316250f41..355015865d 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -8882,7 +8882,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, addr, cu->language, objfile); } @@ -8892,7 +8892,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, addr, cu->language, objfile); } @@ -8900,17 +8900,12 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) set_objfile_main_name (objfile, actual_name, cu->language); break; case DW_TAG_constant: - { - std::vector *list; - - if (pdi->is_external) - list = &objfile->global_psymbols; - else - list = &objfile->static_psymbols; - add_psymbol_to_list (actual_name, strlen (actual_name), - built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC, - -1, list, 0, cu->language, objfile); - } + add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC, + -1, (pdi->is_external + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC), + 0, cu->language, objfile); break; case DW_TAG_variable: if (pdi->d.locdesc) @@ -8945,7 +8940,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC, SECT_OFF_TEXT (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, addr, cu->language, objfile); } else @@ -8964,7 +8959,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC, SECT_OFF_TEXT (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, has_loc ? addr : 0, cu->language, objfile); } @@ -8975,7 +8970,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) add_psymbol_to_list (actual_name, strlen (actual_name), built_actual_name != NULL, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, cu->language, objfile); break; case DW_TAG_imported_declaration: @@ -8983,14 +8978,14 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) add_psymbol_to_list (actual_name, strlen (actual_name), built_actual_name != NULL, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, 0, cu->language, objfile); break; case DW_TAG_module: add_psymbol_to_list (actual_name, strlen (actual_name), built_actual_name != NULL, MODULE_DOMAIN, LOC_TYPEDEF, -1, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, 0, cu->language, objfile); break; case DW_TAG_class_type: @@ -9015,8 +9010,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, STRUCT_DOMAIN, LOC_TYPEDEF, -1, cu->language == language_cplus - ? &objfile->global_psymbols - : &objfile->static_psymbols, + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC, 0, cu->language, objfile); break; @@ -9025,8 +9020,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) built_actual_name != NULL, VAR_DOMAIN, LOC_CONST, -1, cu->language == language_cplus - ? &objfile->global_psymbols - : &objfile->static_psymbols, + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC, 0, cu->language, objfile); break; default: @@ -18434,7 +18429,7 @@ load_partial_dies (const struct die_reader_specs *reader, if (building_psymtab && pdi.name != NULL) add_psymbol_to_list (pdi.name, strlen (pdi.name), 0, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, cu->language, objfile); info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr); continue; @@ -18469,8 +18464,8 @@ load_partial_dies (const struct die_reader_specs *reader, add_psymbol_to_list (pdi.name, strlen (pdi.name), 0, VAR_DOMAIN, LOC_CONST, -1, cu->language == language_cplus - ? &objfile->global_psymbols - : &objfile->static_psymbols, + ? psymbol_placement::GLOBAL + : psymbol_placement::STATIC, 0, cu->language, objfile); info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr); diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index ba8906a1af..e93f1edc08 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -3048,7 +3048,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, SECT_OFF_DATA (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, sh.value, psymtab_language, objfile); continue; @@ -3059,7 +3059,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, SECT_OFF_DATA (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, sh.value, psymtab_language, objfile); continue; @@ -3078,7 +3078,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, STRUCT_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); if (p[2] == 't') { @@ -3087,7 +3087,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, p - namestring, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); p += 1; @@ -3101,7 +3101,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); } check_enum: @@ -3166,7 +3166,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (p, q - p, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); /* Point past the name. */ @@ -3184,7 +3184,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, /* Constant, e.g. from "const" in Pascal. */ add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); continue; @@ -3198,7 +3198,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, sh.value, psymtab_language, objfile); continue; @@ -3217,7 +3217,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, sh.value, psymtab_language, objfile); continue; @@ -3455,13 +3455,13 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (sym_name, strlen (sym_name), 1, VAR_DOMAIN, LOC_BLOCK, section, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, sh.value, psymtab_language, objfile); else add_psymbol_to_list (sym_name, strlen (sym_name), 1, VAR_DOMAIN, LOC_BLOCK, section, - &objfile->static_psymbols, + psymbol_placement::STATIC, sh.value, psymtab_language, objfile); procaddr = sh.value; @@ -3527,7 +3527,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, { add_psymbol_to_list (sym_name, strlen (sym_name), 1, STRUCT_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); } handle_psymbol_enumerators (objfile, fh, sh.st, sh.value); @@ -3567,7 +3567,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, /* Use this gdb symbol. */ add_psymbol_to_list (sym_name, strlen (sym_name), 1, VAR_DOMAIN, theclass, section, - &objfile->static_psymbols, + psymbol_placement::STATIC, sh.value, psymtab_language, objfile); skip: cur_sdx++; /* Go to next file symbol. */ @@ -3647,7 +3647,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (sym_name, strlen (sym_name), 1, VAR_DOMAIN, theclass, section, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, svalue, psymtab_language, objfile); } } @@ -3808,7 +3808,7 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype, in psymtabs, just in symtabs. */ add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, 0, + psymbol_placement::STATIC, 0, psymtab_language, objfile); ext_sym += external_sym_size; } diff --git a/gdb/psympriv.h b/gdb/psympriv.h index dd495f4cbe..03d666740e 100644 --- a/gdb/psympriv.h +++ b/gdb/psympriv.h @@ -271,13 +271,22 @@ struct partial_symtab void *read_symtab_private; }; +/* Specify whether a partial psymbol should be allocated on the global + list or the static list. */ + +enum class psymbol_placement +{ + STATIC, + GLOBAL +}; + /* Add any kind of symbol to a partial_symbol vector. */ extern void add_psymbol_to_list (const char *, int, int, domain_enum, enum address_class, short /* section */, - std::vector *, + enum psymbol_placement, CORE_ADDR, enum language, struct objfile *); diff --git a/gdb/psymtab.c b/gdb/psymtab.c index c850404887..b157603396 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1680,7 +1680,7 @@ add_psymbol_to_list (const char *name, int namelength, int copy_name, domain_enum domain, enum address_class theclass, short section, - std::vector *list, + psymbol_placement where, CORE_ADDR coreaddr, enum language language, struct objfile *objfile) { @@ -1693,11 +1693,14 @@ add_psymbol_to_list (const char *name, int namelength, int copy_name, section, coreaddr, language, objfile, &added); /* Do not duplicate global partial symbols. */ - if (list == &objfile->global_psymbols - && !added) + if (where == psymbol_placement::GLOBAL && !added) return; /* Save pointer to partial symbol in psymtab, growing symtab if needed. */ + std::vector *list + = (where == psymbol_placement::STATIC + ? &objfile->static_psymbols + : &objfile->global_psymbols); append_psymbol_to_list (list, psym, objfile); } diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 6236874233..029f3546aa 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -2654,7 +2654,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, SECT_OFF_DATA (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, symbol.n_value, psymtab_language, objfile); continue; @@ -2665,7 +2665,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, SECT_OFF_DATA (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, symbol.n_value, psymtab_language, objfile); continue; @@ -2683,14 +2683,14 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, { add_psymbol_to_list (namestring, p - namestring, 1, STRUCT_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); if (p[2] == 't') { /* Also a typedef with the same name. */ add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); p += 1; } @@ -2702,7 +2702,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, { add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_TYPEDEF, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); } check_enum: @@ -2764,7 +2764,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, enum constants in psymtabs, just in symtabs. */ add_psymbol_to_list (p, q - p, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); /* Point past the name. */ p = q; @@ -2782,7 +2782,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, /* Constant, e.g. from "const" in Pascal. */ add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_CONST, -1, - &objfile->static_psymbols, + psymbol_placement::STATIC, 0, psymtab_language, objfile); continue; @@ -2800,7 +2800,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->static_psymbols, + psymbol_placement::STATIC, symbol.n_value, psymtab_language, objfile); continue; @@ -2830,7 +2830,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader, add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, SECT_OFF_TEXT (objfile), - &objfile->global_psymbols, + psymbol_placement::GLOBAL, symbol.n_value, psymtab_language, objfile); continue;