From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 71000 invoked by alias); 10 May 2018 22:25:22 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 42148 invoked by uid 89); 10 May 2018 22:24:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 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=UD:st, handy, 32327 X-HELO: gateway33.websitewelcome.com Received: from gateway33.websitewelcome.com (HELO gateway33.websitewelcome.com) (192.185.146.78) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 10 May 2018 22:24:08 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway33.websitewelcome.com (Postfix) with ESMTP id 1C680611B42 for ; Thu, 10 May 2018 17:24:06 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id GtyofLxNqQUwqGtyof47yN; Thu, 10 May 2018 17:24:06 -0500 X-Authority-Reason: nr=8 Received: from 97-122-176-117.hlrn.qwest.net ([97.122.176.117]:54520 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1fGtyn-001ijL-Nh; Thu, 10 May 2018 17:24:05 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 04/15] Change add_psymbol_to_list to use an enum Date: Thu, 10 May 2018 22:25:00 -0000 Message-Id: <20180510222357.27332-5-tom@tromey.com> In-Reply-To: <20180510222357.27332-1-tom@tromey.com> References: <20180510222357.27332-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1fGtyn-001ijL-Nh X-Source-Sender: 97-122-176-117.hlrn.qwest.net (bapiya.Home) [97.122.176.117]:54520 X-Source-Auth: tom+tromey.com X-Email-Count: 5 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-SW-Source: 2018-05/txt/msg00279.txt.bz2 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. 2018-05-09 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 97c4a847e3..be0483a38b 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -1528,7 +1528,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; @@ -1538,7 +1538,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; @@ -1555,14 +1555,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; } @@ -1574,7 +1574,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: @@ -1635,7 +1635,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; @@ -1653,7 +1653,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; @@ -1715,7 +1715,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; @@ -1780,7 +1780,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 664d0b0e53..823f6bfd2a 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -8820,7 +8820,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); } @@ -8830,7 +8830,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); } @@ -8839,17 +8839,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) @@ -8884,7 +8879,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); } @@ -8904,7 +8899,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); } @@ -8915,7 +8910,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: @@ -8923,14 +8918,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: @@ -8955,8 +8950,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; @@ -8965,8 +8960,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: @@ -18298,7 +18293,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; @@ -18335,8 +18330,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 7b9af6020d..29fe3455db 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -3078,7 +3078,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; @@ -3089,7 +3089,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; @@ -3108,7 +3108,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') { @@ -3117,7 +3117,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; @@ -3131,7 +3131,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: @@ -3196,7 +3196,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. */ @@ -3214,7 +3214,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; @@ -3232,7 +3232,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; @@ -3255,7 +3255,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; @@ -3496,13 +3496,13 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_BLOCK, section, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, sh.value, psymtab_language, objfile); else add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_BLOCK, section, - &objfile->static_psymbols, + psymbol_placement::STATIC, sh.value, psymtab_language, objfile); procaddr = sh.value; @@ -3568,7 +3568,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, { add_psymbol_to_list (name, strlen (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); @@ -3608,7 +3608,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, /* Use this gdb symbol. */ add_psymbol_to_list (name, strlen (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. */ @@ -3689,7 +3689,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, theclass, section, - &objfile->global_psymbols, + psymbol_placement::GLOBAL, svalue, psymtab_language, objfile); } } @@ -3854,7 +3854,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 95449e0ada..8dcd82212b 100644 --- a/gdb/psympriv.h +++ b/gdb/psympriv.h @@ -276,13 +276,22 @@ set_psymtab_texthigh (struct partial_symtab *pst, CORE_ADDR high) #define SET_PSYMTAB_TEXTLOW(PST, V) set_psymtab_textlow ((PST), (V)) #define SET_PSYMTAB_TEXTHIGH(PST, V) set_psymtab_texthigh ((PST), (V)) +/* 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 *, + psymbol_placement, CORE_ADDR, enum language, struct objfile *); diff --git a/gdb/psymtab.c b/gdb/psymtab.c index fe54f1c407..4fd47bf92b 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1701,7 +1701,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) { @@ -1714,11 +1714,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 788ea89fe4..3cb1944554 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -2662,7 +2662,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; @@ -2673,7 +2673,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; @@ -2691,14 +2691,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; } @@ -2710,7 +2710,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: @@ -2772,7 +2772,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; @@ -2790,7 +2790,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; @@ -2808,7 +2808,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; @@ -2838,7 +2838,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; -- 2.13.6