From patchwork Tue Nov 26 20:43:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Terekhov, Mikhail via Gdb-patches" X-Patchwork-Id: 36243 Received: (qmail 76312 invoked by alias); 26 Nov 2019 20:43:59 -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 76304 invoked by uid 89); 26 Nov 2019 20:43:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=games, HX-HELO:sk:mail-yb, *linkage_name, permanently X-HELO: mail-yb1-f201.google.com Received: from mail-yb1-f201.google.com (HELO mail-yb1-f201.google.com) (209.85.219.201) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 26 Nov 2019 20:43:57 +0000 Received: by mail-yb1-f201.google.com with SMTP id t9so13820205ybk.6 for ; Tue, 26 Nov 2019 12:43:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=uzyyj3xAL+460K/pvWYc8gDIOTnZFcaWlxyMeGiy8nM=; b=T+iIs8WC3SWOfKBUY0dxZUYnAtQaCjORPlT80WX0NE9xJl0bH2TlixignXAB4Znehh IlHmhHEfoWa1wXY6t0psuu2az/0rNHn0ajF5mTMziKOfPGBQbsCnth8HLg2YMnI9sygl qcjrP8GUcq98O9HRzS+ZEsiH+Y8JnIH+QZHdqh7M860gGUPRFSZav+fdNcbqUUZeGiRX eT2NLQo6FUdKp63rNJgdb8SdxABgv4t50Hp41b5trl4t/HzESSrFHA0BR+IR6Db/tjKS 8yoVd+XVVgIbaR/ExXegdVmBiQZVdvvWpOOf2jJeGqThw5BNIEBhQTZ/8X+jGMmZ6yh+ lwlw== Date: Tue, 26 Nov 2019 14:43:51 -0600 Message-Id: <20191126204351.83076-1-cbiesinger@google.com> Mime-Version: 1.0 Subject: [PATCH] Replace SYMBOL_SET_LINKAGE_NAME with a member function X-Patchwork-Original-From: "Christian Biesinger via gdb-patches" From: "Terekhov, Mikhail via Gdb-patches" Reply-To: Christian Biesinger To: gdb-patches@sourceware.org Cc: Christian Biesinger X-IsSubscribed: yes Easier to read, shorter, and will later make it possible to make the name field private. gdb/ChangeLog: 2019-11-26 Christian Biesinger * ada-exp.y (write_ambiguous_var): Replace SYMBOL_SET_LINKAGE_NAME with sym->set_linkage_name. * coffread.c (coff_read_enum_type): Likewise. * mdebugread.c (parse_symbol): Likewise. * stabsread.c (patch_block_stabs): Likewise. (define_symbol): Likewise. (read_enum_type): Likewise. (common_block_end): Likewise. * symtab.h (struct general_symbol_info) : New function. (SYMBOL_SET_LINKAGE_NAME): Remove. * xcoffread.c (process_xcoff_symbol): Replace SYMBOL_SET_LINKAGE_NAME with sym->set_linkage_name. Change-Id: I174a0542c014f1b035070068076308bb8ae79abb --- gdb/ada-exp.y | 3 +-- gdb/coffread.c | 2 +- gdb/mdebugread.c | 5 ++--- gdb/stabsread.c | 20 +++++++++----------- gdb/symtab.h | 19 +++++++++---------- gdb/xcoffread.c | 2 +- 6 files changed, 23 insertions(+), 28 deletions(-) diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y index 5e9d3e70b9..00020cd067 100644 --- a/gdb/ada-exp.y +++ b/gdb/ada-exp.y @@ -1105,8 +1105,7 @@ write_ambiguous_var (struct parser_state *par_state, struct symbol *sym = new (&temp_parse_space) symbol (); SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN; - SYMBOL_SET_LINKAGE_NAME (sym, - obstack_strndup (&temp_parse_space, name, len)); + sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len)); SYMBOL_LANGUAGE (sym) = language_ada; write_exp_elt_opcode (par_state, OP_VAR_VALUE); diff --git a/gdb/coffread.c b/gdb/coffread.c index ac00e1c1e3..d0a9233de7 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -2106,7 +2106,7 @@ coff_read_enum_type (int index, int length, int lastsym, sym = allocate_symbol (objfile); name = obstack_strdup (&objfile->objfile_obstack, name); - SYMBOL_SET_LINKAGE_NAME (sym, name); + sym->set_linkage_name (name); SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_VALUE (sym) = ms->c_value; diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index c58e40c94a..f279f13171 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -1066,9 +1066,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, FIELD_BITSIZE (*f) = 0; enum_sym = allocate_symbol (mdebugread_objfile); - SYMBOL_SET_LINKAGE_NAME - (enum_sym, - obstack_strdup (&mdebugread_objfile->objfile_obstack, + enum_sym->set_linkage_name + (obstack_strdup (&mdebugread_objfile->objfile_obstack, f->name)); SYMBOL_ACLASS_INDEX (enum_sym) = LOC_CONST; SYMBOL_TYPE (enum_sym) = t; diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 6ec9f971e1..3f3f0a624f 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -399,8 +399,7 @@ patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs, /* for all the stab entries, find their corresponding symbols and patch their types! */ - for (ii = 0; ii < stabs->count; ++ii) - { + for (ii = 0; ii < stabs->count; ++ii) { name = stabs->stab[ii]; pp = (char *) strchr (name, ':'); gdb_assert (pp); /* Must find a ':' or game's over. */ @@ -426,9 +425,8 @@ patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs, sym = allocate_symbol (objfile); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT; - SYMBOL_SET_LINKAGE_NAME - (sym, obstack_strndup (&objfile->objfile_obstack, - name, pp - name)); + sym->set_linkage_name + (obstack_strndup (&objfile->objfile_obstack, name, pp - name)); pp += 2; if (*(pp - 1) == 'F' || *(pp - 1) == 'f') { @@ -710,14 +708,14 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, switch (string[1]) { case 't': - SYMBOL_SET_LINKAGE_NAME (sym, "this"); + sym->set_linkage_name ("this"); break; case 'v': /* $vtbl_ptr_type */ goto normal; case 'e': - SYMBOL_SET_LINKAGE_NAME (sym, "eh_throw"); + sym->set_linkage_name ("eh_throw"); break; case '_': @@ -1202,7 +1200,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, const char *new_name = gdbarch_static_transform_name (gdbarch, sym->linkage_name ()); - SYMBOL_SET_LINKAGE_NAME (sym, new_name); + sym->set_linkage_name (new_name); SET_SYMBOL_VALUE_ADDRESS (sym, BMSYMBOL_VALUE_ADDRESS (msym)); } @@ -1385,7 +1383,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, const char *new_name = gdbarch_static_transform_name (gdbarch, sym->linkage_name ()); - SYMBOL_SET_LINKAGE_NAME (sym, new_name); + sym->set_linkage_name (new_name); SET_SYMBOL_VALUE_ADDRESS (sym, BMSYMBOL_VALUE_ADDRESS (msym)); } } @@ -3638,7 +3636,7 @@ read_enum_type (const char **pp, struct type *type, return error_type (pp, objfile); sym = allocate_symbol (objfile); - SYMBOL_SET_LINKAGE_NAME (sym, name); + sym->set_linkage_name (name); SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language, &objfile->objfile_obstack); SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; @@ -4306,7 +4304,7 @@ common_block_end (struct objfile *objfile) sym = allocate_symbol (objfile); /* Note: common_block_name already saved on objfile_obstack. */ - SYMBOL_SET_LINKAGE_NAME (sym, common_block_name); + sym->set_linkage_name (common_block_name); SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK; /* Now we copy all the symbols which have been defined since the BCOMM. */ diff --git a/gdb/symtab.h b/gdb/symtab.h index 897ffda76e..ff51069b6c 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -407,8 +407,7 @@ struct general_symbol_info /* Return the demangled name for a symbol based on the language for that symbol. If no demangled name exists, return NULL. */ - const char *demangled_name () const; - + const char *demangled_name () const; /* Returns the name to be used when sorting and searching symbols. In C++, we search for the demangled form of a name, and so sort symbols accordingly. In Ada, however, we search by mangled @@ -416,6 +415,14 @@ struct general_symbol_info returns the same value (same pointer) as linkage_name (). */ const char *search_name () const; + /* Set just the linkage name of a symbol; do not try to demangle + it. Used for constructs which do not have a mangled name, + e.g. struct tags. Unlike SYMBOL_SET_NAMES, linkage_name must + be terminated and either already on the objfile's obstack or + permanently allocated. */ + void set_linkage_name (const char *linkage_name) + { name = linkage_name; } + /* Name of the symbol. This is a required field. Storage for the name is allocated on the objfile_obstack for the associated objfile. For languages like C++ that make a distinction between @@ -528,14 +535,6 @@ extern void symbol_set_language (struct general_symbol_info *symbol, enum language language, struct obstack *obstack); -/* Set just the linkage name of a symbol; do not try to demangle - it. Used for constructs which do not have a mangled name, - e.g. struct tags. Unlike SYMBOL_SET_NAMES, linkage_name must - be terminated and either already on the objfile's obstack or - permanently allocated. */ -#define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \ - (symbol)->name = (linkage_name) - /* Set the linkage and natural names of a symbol, by demangling the linkage name. If linkage_name may not be nullterminated, copy_name must be set to true. */ diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 4ea9b0b5bd..eaa77fd491 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1574,7 +1574,7 @@ process_xcoff_symbol (struct coff_symbol *cs, struct objfile *objfile) will be patched with the type from its stab entry later on in patch_block_stabs (), unless the file was compiled without -g. */ - SYMBOL_SET_LINKAGE_NAME (sym, SYMNAME_ALLOC (name, symname_alloced)); + sym->set_linkage_name (SYMNAME_ALLOC (name, symname_alloced)); SYMBOL_TYPE (sym) = objfile_type (objfile)->nodebug_text_symbol; SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;