From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4384 invoked by alias); 16 Feb 2004 19:35:03 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 4091 invoked from network); 16 Feb 2004 19:34:54 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 16 Feb 2004 19:34:54 -0000 Received: from drow by nevyn.them.org with local (Exim 4.30 #1 (Debian)) id 1AsoW5-0000Ss-9v for ; Mon, 16 Feb 2004 14:34:53 -0500 Date: Mon, 16 Feb 2004 19:35:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: [rfa/symbol readers] Clean up setting symbols' names Message-ID: <20040216193453.GA1667@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.1i X-SW-Source: 2004-02/txt/msg00421.txt.bz2 This patch does a couple of related things. 1. It adds a macro, SYMBOL_SET_LINKAGE_NAME, which is used to set a symbol's name when the name should not be demangled. Used for things like typedefs whose name comes from debug info. I did not change anything related to memory allocation when I did this - though in hpread I found a few inconsistencies. 2. It makes hpread use SYMBOL_SET_NAMES. It contained some fallback code to use the debug info if demangling failed; I've disabled it, because from the description it sounds like the right thing to do would be to fix the demangler instead. I can't tell whether the code is currently used or not, so I would appreciate HP/UX testing for this patch. In the process I also kill a couple of DEPRECATED_SYMBOL_NAME uses, and the redundant function add_psymbol_with_dem_name_to_list. No testsuite changes with DWARF2 or stabs+ on i386-linux. OK? -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer 2004-02-16 Daniel Jacobowitz * symtab.h (SYMBOL_SET_LINKAGE_NAME): Define. * ada-lang.c (add_symbols_from_enclosing_procs): Use SYMBOL_SET_LINKAGE_NAME. * dwarfread.c (enum_type, synthesize_typedef): Likewise. * jv-lang.c (add_class_symbol): Likewise. * stabsread.c (patch_block_stabs, define_symbol, read_enum_type) (common_block_end): Likewise. * xcoffread.c (process_xcoff_symbol): Likewise. * symfile.c (add_psymbol_with_dem_name_to_list): Remove. * symfile.h (add_psymbol_with_dem_name_to_list): Remove prototype. * objfiles.c (terminate_minimal_symbol_table): Remove unnecessary initializations. * hpread.c (scan_procs): Use SYMBOL_SET_NAMES. Remove calls to add_psymbol_with_dem_name_to_list. (hpread_read_enum_type, hpread_read_function_type) (hpread_read_doc_function_type): Use SYMBOL_SET_LINKAGE_NAME. (hpread_process_one_debug_symbol): Likewise. Use SYMBOL_SET_NAMES and rely on the demangler. Index: ada-lang.c =================================================================== RCS file: /cvs/src/src/gdb/ada-lang.c,v retrieving revision 1.35 diff -u -p -r1.35 ada-lang.c --- ada-lang.c 23 Jan 2004 23:03:28 -0000 1.35 +++ ada-lang.c 15 Feb 2004 23:56:24 -0000 @@ -3533,7 +3533,7 @@ add_symbols_from_enclosing_procs (const /* Initialize the local variable symbol that stands for the * static link (when it exists). */ static_link = &static_link_sym; - DEPRECATED_SYMBOL_NAME (static_link) = ""; + SYMBOL_SET_LINKAGE_NAME (static_link, ""); SYMBOL_LANGUAGE (static_link) = language_unknown; SYMBOL_CLASS (static_link) = LOC_LOCAL; SYMBOL_DOMAIN (static_link) = VAR_DOMAIN; Index: dwarfread.c =================================================================== RCS file: /cvs/src/src/gdb/dwarfread.c,v retrieving revision 1.37 diff -u -p -r1.37 dwarfread.c --- dwarfread.c 14 Feb 2004 15:46:32 -0000 1.37 +++ dwarfread.c 15 Feb 2004 23:56:27 -0000 @@ -1710,8 +1710,9 @@ enum_type (struct dieinfo *dip, struct o sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = create_name (list->field.name, - &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, + create_name (list->field.name, + &objfile->objfile_obstack)); SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_CLASS (sym) = LOC_CONST; @@ -3013,8 +3014,8 @@ synthesize_typedef (struct dieinfo *dip, obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); OBJSTAT (objfile, n_syms++); memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = create_name (dip->at_name, - &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, create_name (dip->at_name, + &objfile->objfile_obstack)); SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language); SYMBOL_TYPE (sym) = type; SYMBOL_CLASS (sym) = LOC_TYPEDEF; Index: hpread.c =================================================================== RCS file: /cvs/src/src/gdb/hpread.c,v retrieving revision 1.45 diff -u -p -r1.45 hpread.c --- hpread.c 7 Feb 2004 23:13:47 -0000 1.45 +++ hpread.c 15 Feb 2004 23:56:30 -0000 @@ -746,26 +746,24 @@ scan_procs (int *curr_pd_p, quick_proced if ((trans_lang ((enum hp_language) qPD[curr_pd].language) == language_cplus) && vt_bits[(long) qPD[curr_pd].sbAlias]) /* not a null string */ { - /* Get mangled name for the procedure, and demangle it */ + /* Get mangled name for the procedure. */ rtn_name = &vt_bits[(long) qPD[curr_pd].sbAlias]; - rtn_dem_name = cplus_demangle (rtn_name, DMGL_ANSI | DMGL_PARAMS); } else { rtn_name = &vt_bits[(long) qPD[curr_pd].sbProc]; - rtn_dem_name = NULL; } /* Hack to get around HP C/C++ compilers' insistence on providing "_MAIN_" as an alternate name for "main" */ if ((strcmp (rtn_name, "_MAIN_") == 0) && (strcmp (&vt_bits[(long) qPD[curr_pd].sbProc], "main") == 0)) - rtn_dem_name = rtn_name = main_string; + rtn_name = main_string; #ifdef DUMPING if (dumping) { - printf ("..add %s (demangled %s), index %x to this psymtab\n", rtn_name, rtn_dem_name, curr_pd); + printf ("..add %s, index %x to this psymtab\n", rtn_name, curr_pd); } #endif @@ -786,31 +784,23 @@ scan_procs (int *curr_pd_p, quick_proced the correct list in the psymtab. - RT */ dn_bufp = hpread_get_lntt (qPD[curr_pd].isym, objfile); if (dn_bufp->dfunc.global) - add_psymbol_with_dem_name_to_list (rtn_name, - strlen (rtn_name), - rtn_dem_name, - strlen (rtn_dem_name), - VAR_DOMAIN, - LOC_BLOCK, /* "I am a routine" */ - &objfile->global_psymbols, - (qPD[curr_pd].adrStart + /* Starting address of rtn */ - ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))), - 0, /* core addr?? */ - trans_lang ((enum hp_language) qPD[curr_pd].language), - objfile); + add_psymbol_to_list (rtn_name, strlen (rtn_name), VAR_DOMAIN, + LOC_BLOCK, /* "I am a routine" */ + &objfile->global_psymbols, + (qPD[curr_pd].adrStart + /* Starting address of rtn */ + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))), + 0, /* core addr?? */ + trans_lang ((enum hp_language) qPD[curr_pd].language), + objfile); else - add_psymbol_with_dem_name_to_list (rtn_name, - strlen (rtn_name), - rtn_dem_name, - strlen (rtn_dem_name), - VAR_DOMAIN, - LOC_BLOCK, /* "I am a routine" */ - &objfile->static_psymbols, - (qPD[curr_pd].adrStart + /* Starting address of rtn */ - ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))), - 0, /* core addr?? */ - trans_lang ((enum hp_language) qPD[curr_pd].language), - objfile); + add_psymbol_to_list (rtn_name, strlen (rtn_name), VAR_DOMAIN, + LOC_BLOCK, /* "I am a routine" */ + &objfile->static_psymbols, + (qPD[curr_pd].adrStart + /* Starting address of rtn */ + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))), + 0, /* core addr?? */ + trans_lang ((enum hp_language) qPD[curr_pd].language), + objfile); symbol_count++; *curr_pd_p = ++curr_pd; /* bump up count & reflect in caller */ @@ -3124,14 +3114,17 @@ hpread_read_enum_type (dnttpointer hp_ty mem = dn_bufp->denum.firstmem; while (mem.word && mem.word != DNTTNIL) { + char *sym_name; + memp = hpread_get_lntt (mem.dnttp.index, objfile); name = VT (objfile) + memp->dmember.name; sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = obsavestring (name, strlen (name), - &objfile->objfile_obstack); + sym_name = obsavestring (name, strlen (name), + &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); SYMBOL_CLASS (sym) = LOC_CONST; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_VALUE (sym) = memp->dmember.value; @@ -3229,6 +3222,8 @@ hpread_read_function_type (dnttpointer h param = dn_bufp->dfunc_template.firstparam; while (param.word && param.word != DNTTNIL) { + char *sym_name; + paramp = hpread_get_lntt (param.dnttp.index, objfile); nsyms++; param = paramp->dfparam.nextparam; @@ -3238,8 +3233,10 @@ hpread_read_function_type (dnttpointer h sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); (void) memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = obsavestring (name, strlen (name), - &objfile->objfile_obstack); + + sym_name = obsavestring (name, strlen (name), + &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); /* Figure out where it lives. */ if (paramp->dfparam.regparam) @@ -3418,7 +3415,7 @@ hpread_read_doc_function_type (dnttpoint sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); (void) memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = name; + SYMBOL_SET_LINKAGE_NAME (sym, name); /* Figure out where it lives. */ if (paramp->dfparam.regparam) @@ -5096,12 +5093,14 @@ hpread_process_one_debug_symbol (union d struct symbol *sym; struct context_stack *new; char *class_scope_name; + char *set_name; /* Allocate one GDB debug symbol and fill in some default values. */ sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = obsavestring (name, strlen (name), &objfile->objfile_obstack); + set_name = obsavestring (name, strlen (name), &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, set_name); SYMBOL_LANGUAGE (sym) = language_auto; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_LINE (sym) = 0; @@ -5278,37 +5277,25 @@ hpread_process_one_debug_symbol (union d if ((dn_bufp->dfunc.language == HP_LANGUAGE_CPLUSPLUS) && dn_bufp->dfunc.alias && /* has an alias */ *(char *) (VT (objfile) + dn_bufp->dfunc.alias)) /* not a null string */ - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->dfunc.alias; + set_name = VT (objfile) + dn_bufp->dfunc.alias; else - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->dfunc.name; + set_name = VT (objfile) + dn_bufp->dfunc.name; /* Special hack to get around HP compilers' insistence on * reporting "main" as "_MAIN_" for C/C++ */ - if ((strcmp (DEPRECATED_SYMBOL_NAME (sym), "_MAIN_") == 0) && + if ((strcmp (set_name, "_MAIN_") == 0) && (strcmp (VT (objfile) + dn_bufp->dfunc.name, "main") == 0)) - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->dfunc.name; + set_name = VT (objfile) + dn_bufp->dfunc.name; - /* The SYMBOL_CPLUS_DEMANGLED_NAME field is expected to - * be the demangled name. - */ + SYMBOL_SET_NAMES (sym, set_name, strlen (set_name), objfile); +#if 0 + /* NOTE drow/2004-02-08: The following code is terribly bogus. The + demangler should be fixed instead. */ if (dn_bufp->dfunc.language == HP_LANGUAGE_CPLUSPLUS) { - /* SYMBOL_INIT_DEMANGLED_NAME is a macro which winds up - * calling the demangler in libiberty (cplus_demangle()) to - * do the job. This generally does the job, even though - * it's intended for the GNU compiler and not the aCC compiler - * Note that SYMBOL_INIT_DEMANGLED_NAME calls the - * demangler with arguments DMGL_PARAMS | DMGL_ANSI. - * Generally, we don't want params when we display - * a demangled name, but when I took out the DMGL_PARAMS, - * some things broke, so I'm leaving it in here, and - * working around the issue in stack.c. - RT - */ - SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->objfile_obstack); - if ((DEPRECATED_SYMBOL_NAME (sym) == VT (objfile) + dn_bufp->dfunc.alias) && - (!SYMBOL_CPLUS_DEMANGLED_NAME (sym))) + if (set_name == VT (objfile) + dn_bufp->dfunc.alias + && !SYMBOL_CPLUS_DEMANGLED_NAME (sym)) { - /* Well, the symbol name is mangled, but the * demangler in libiberty failed so the demangled * field is still NULL. Try to @@ -5334,6 +5321,7 @@ hpread_process_one_debug_symbol (union d } } } +#endif /* Add the function symbol to the list of symbols in this blockvector */ if (dn_bufp->dfunc.global) @@ -5396,36 +5384,25 @@ hpread_process_one_debug_symbol (union d if ((dn_bufp->ddocfunc.language == HP_LANGUAGE_CPLUSPLUS) && dn_bufp->ddocfunc.alias && /* has an alias */ *(char *) (VT (objfile) + dn_bufp->ddocfunc.alias)) /* not a null string */ - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->ddocfunc.alias; + set_name = VT (objfile) + dn_bufp->ddocfunc.alias; else - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->ddocfunc.name; + set_name = VT (objfile) + dn_bufp->ddocfunc.name; /* Special hack to get around HP compilers' insistence on * reporting "main" as "_MAIN_" for C/C++ */ if ((strcmp (DEPRECATED_SYMBOL_NAME (sym), "_MAIN_") == 0) && (strcmp (VT (objfile) + dn_bufp->ddocfunc.name, "main") == 0)) - DEPRECATED_SYMBOL_NAME (sym) = VT (objfile) + dn_bufp->ddocfunc.name; + set_name = VT (objfile) + dn_bufp->ddocfunc.name; + SYMBOL_SET_NAMES (sym, set_name, strlen (set_name), objfile); +#if 0 + /* NOTE drow/2004-02-08: The following code is terribly bogus. The + demangler should be fixed instead. */ if (dn_bufp->ddocfunc.language == HP_LANGUAGE_CPLUSPLUS) { - - /* SYMBOL_INIT_DEMANGLED_NAME is a macro which winds up - * calling the demangler in libiberty (cplus_demangle()) to - * do the job. This generally does the job, even though - * it's intended for the GNU compiler and not the aCC compiler - * Note that SYMBOL_INIT_DEMANGLED_NAME calls the - * demangler with arguments DMGL_PARAMS | DMGL_ANSI. - * Generally, we don't want params when we display - * a demangled name, but when I took out the DMGL_PARAMS, - * some things broke, so I'm leaving it in here, and - * working around the issue in stack.c. - RT - */ - SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->objfile_obstack); - - if ((DEPRECATED_SYMBOL_NAME (sym) == VT (objfile) + dn_bufp->ddocfunc.alias) && - (!SYMBOL_CPLUS_DEMANGLED_NAME (sym))) + if (set_name == VT (objfile) + dn_bufp->ddocfunc.alias + && !SYMBOL_CPLUS_DEMANGLED_NAME (sym)) { - /* Well, the symbol name is mangled, but the * demangler in libiberty failed so the demangled * field is still NULL. Try to @@ -5451,6 +5428,7 @@ hpread_process_one_debug_symbol (union d } } } +#endif /* Add the function symbol to the list of symbols in this blockvector */ if (dn_bufp->ddocfunc.global) @@ -5889,7 +5867,7 @@ hpread_process_one_debug_symbol (union d newsym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (newsym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (newsym) = name; + SYMBOL_SET_LINKAGE_NAME (newsym, name); SYMBOL_LANGUAGE (newsym) = language_auto; SYMBOL_DOMAIN (newsym) = VAR_DOMAIN; SYMBOL_LINE (newsym) = 0; Index: jv-lang.c =================================================================== RCS file: /cvs/src/src/gdb/jv-lang.c,v retrieving revision 1.29 diff -u -p -r1.29 jv-lang.c --- jv-lang.c 7 Feb 2004 23:13:47 -0000 1.29 +++ jv-lang.c 15 Feb 2004 23:56:30 -0000 @@ -142,7 +142,7 @@ add_class_symbol (struct type *type, COR obstack_alloc (&dynamics_objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); SYMBOL_LANGUAGE (sym) = language_java; - DEPRECATED_SYMBOL_NAME (sym) = TYPE_TAG_NAME (type); + SYMBOL_SET_LINKAGE_NAME (sym, TYPE_TAG_NAME (type)); SYMBOL_CLASS (sym) = LOC_TYPEDEF; /* SYMBOL_VALUE (sym) = valu; */ SYMBOL_TYPE (sym) = type; Index: objfiles.c =================================================================== RCS file: /cvs/src/src/gdb/objfiles.c,v retrieving revision 1.49 diff -u -p -r1.49 objfiles.c --- objfiles.c 14 Feb 2004 15:46:33 -0000 1.49 +++ objfiles.c 15 Feb 2004 23:56:31 -0000 @@ -283,11 +283,6 @@ terminate_minimal_symbol_table (struct o = &objfile->msymbols[objfile->minimal_symbol_count]; memset (m, 0, sizeof (*m)); - DEPRECATED_SYMBOL_NAME (m) = NULL; - SYMBOL_VALUE_ADDRESS (m) = 0; - MSYMBOL_INFO (m) = NULL; - MSYMBOL_SIZE (m) = 0; - MSYMBOL_TYPE (m) = mst_unknown; SYMBOL_INIT_LANGUAGE_SPECIFIC (m, language_unknown); } } Index: stabsread.c =================================================================== RCS file: /cvs/src/src/gdb/stabsread.c,v retrieving revision 1.74 diff -u -p -r1.74 stabsread.c --- stabsread.c 7 Feb 2004 23:13:47 -0000 1.74 +++ stabsread.c 15 Feb 2004 23:56:34 -0000 @@ -367,6 +367,8 @@ patch_block_stabs (struct pending *symbo sym = find_symbol_in_list (symbols, name, pp - name); if (!sym) { + char *sym_name; + /* FIXME-maybe: it would be nice if we noticed whether the variable was defined *anywhere*, not just whether it is defined in this compilation unit. But neither @@ -385,8 +387,9 @@ patch_block_stabs (struct pending *symbo memset (sym, 0, sizeof (struct symbol)); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT; - DEPRECATED_SYMBOL_NAME (sym) = - obsavestring (name, pp - name, &objfile->objfile_obstack); + sym_name = obsavestring (name, pp - name, + &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); pp += 2; if (*(pp - 1) == 'F' || *(pp - 1) == 'f') { @@ -641,12 +644,15 @@ define_symbol (CORE_ADDR valu, char *str if (is_cplus_marker (string[0])) { + char *sym_name; + /* Special GNU C++ names. */ switch (string[1]) { case 't': - DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"), - &objfile->objfile_obstack); + sym_name = obsavestring ("this", strlen ("this"), + &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); break; case 'v': /* $vtbl_ptr_type */ @@ -654,8 +660,9 @@ define_symbol (CORE_ADDR valu, char *str goto normal; case 'e': - DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"), - &objfile->objfile_obstack); + sym_name = obsavestring ("eh_throw", strlen ("eh_throw"), + &objfile->objfile_obstack); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); break; case '_': @@ -1130,13 +1137,15 @@ define_symbol (CORE_ADDR valu, char *str SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_VALUE_ADDRESS (sym) = valu; #ifdef STATIC_TRANSFORM_NAME - if (IS_STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym))) + if (IS_STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym))) { struct minimal_symbol *msym; - msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile); + msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile); if (msym != NULL) { - DEPRECATED_SYMBOL_NAME (sym) = STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym)); + char *sym_name + = STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym)); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); } } @@ -1276,13 +1285,16 @@ define_symbol (CORE_ADDR valu, char *str SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_VALUE_ADDRESS (sym) = valu; #ifdef STATIC_TRANSFORM_NAME - if (IS_STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym))) + } + if (IS_STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym))) { struct minimal_symbol *msym; - msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile); + msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile); if (msym != NULL) { - DEPRECATED_SYMBOL_NAME (sym) = STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym)); + char *sym_name + = STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym)); + SYMBOL_SET_LINKAGE_NAME (sym, sym_name); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); } } @@ -3493,7 +3505,7 @@ read_enum_type (char **pp, struct type * sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); - DEPRECATED_SYMBOL_NAME (sym) = name; + SYMBOL_SET_LINKAGE_NAME (sym, name); SYMBOL_LANGUAGE (sym) = current_subfile->language; SYMBOL_CLASS (sym) = LOC_CONST; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; @@ -4068,7 +4080,7 @@ common_block_end (struct objfile *objfil obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); /* Note: common_block_name already saved on objfile_obstack */ - DEPRECATED_SYMBOL_NAME (sym) = common_block_name; + SYMBOL_SET_LINKAGE_NAME (sym, common_block_name); SYMBOL_CLASS (sym) = LOC_BLOCK; /* Now we copy all the symbols which have been defined since the BCOMM. */ Index: symfile.c =================================================================== RCS file: /cvs/src/src/gdb/symfile.c,v retrieving revision 1.123 diff -u -p -r1.123 symfile.c --- symfile.c 15 Feb 2004 15:16:29 -0000 1.123 +++ symfile.c 15 Feb 2004 23:56:36 -0000 @@ -2611,75 +2611,6 @@ add_psymbol_to_list (char *name, int nam return psym; } -/* Add a symbol with a long value to a psymtab. This differs from - * add_psymbol_to_list above in taking both a mangled and a demangled - * name. */ - -void -add_psymbol_with_dem_name_to_list (char *name, int namelength, char *dem_name, - int dem_namelength, domain_enum domain, - enum address_class class, - struct psymbol_allocation_list *list, long val, /* Value as a long */ - CORE_ADDR coreaddr, /* Value as a CORE_ADDR */ - enum language language, - struct objfile *objfile) -{ - struct partial_symbol *psym; - char *buf = alloca (namelength + 1); - /* psymbol is static so that there will be no uninitialized gaps in the - structure which might contain random data, causing cache misses in - bcache. */ - static struct partial_symbol psymbol; - - /* Create local copy of the partial symbol */ - - memcpy (buf, name, namelength); - buf[namelength] = '\0'; - DEPRECATED_SYMBOL_NAME (&psymbol) = deprecated_bcache (buf, namelength + 1, - objfile->psymbol_cache); - - buf = alloca (dem_namelength + 1); - memcpy (buf, dem_name, dem_namelength); - buf[dem_namelength] = '\0'; - - switch (language) - { - case language_c: - case language_cplus: - SYMBOL_CPLUS_DEMANGLED_NAME (&psymbol) = - deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache); - break; - /* FIXME What should be done for the default case? Ignoring for now. */ - } - - /* val and coreaddr are mutually exclusive, one of them *will* be zero */ - if (val != 0) - { - SYMBOL_VALUE (&psymbol) = val; - } - else - { - SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr; - } - SYMBOL_SECTION (&psymbol) = 0; - SYMBOL_LANGUAGE (&psymbol) = language; - PSYMBOL_DOMAIN (&psymbol) = domain; - PSYMBOL_CLASS (&psymbol) = class; - SYMBOL_INIT_LANGUAGE_SPECIFIC (&psymbol, language); - - /* Stash the partial symbol away in the cache */ - psym = deprecated_bcache (&psymbol, sizeof (struct partial_symbol), - objfile->psymbol_cache); - - /* Save pointer to partial symbol in psymtab, growing symtab if needed. */ - if (list->next >= list->list + list->size) - { - extend_psymbol_list (list, objfile); - } - *list->next++ = psym; - OBJSTAT (objfile, n_psyms++); -} - /* Initialize storage for partial symbols. */ void Index: symfile.h =================================================================== RCS file: /cvs/src/src/gdb/symfile.h,v retrieving revision 1.27 diff -u -p -r1.27 symfile.h --- symfile.h 14 Feb 2004 15:46:33 -0000 1.27 +++ symfile.h 15 Feb 2004 23:56:36 -0000 @@ -159,15 +159,6 @@ struct partial_symbol *add_psymbol_to_li long, CORE_ADDR, enum language, struct objfile *); -extern void add_psymbol_with_dem_name_to_list (char *, int, char *, int, - domain_enum, - enum address_class, - struct psymbol_allocation_list - *, long, CORE_ADDR, - enum language, - struct objfile *); - - extern void init_psymbol_list (struct objfile *, int); extern void sort_pst_symbols (struct partial_symtab *); Index: symtab.h =================================================================== RCS file: /cvs/src/src/gdb/symtab.h,v retrieving revision 1.87 diff -u -p -r1.87 symtab.h --- symtab.h 7 Feb 2004 23:13:47 -0000 1.87 +++ symtab.h 15 Feb 2004 23:56:37 -0000 @@ -195,6 +195,11 @@ extern void symbol_set_names (struct gen const char *linkage_name, int len, struct objfile *objfile); +#define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \ + do { \ + (symbol)->ginfo.name = (linkage_name); \ + } while (0) + /* Now come lots of name accessor macros. Short version as to when to use which: Use SYMBOL_NATURAL_NAME to refer to the name of the symbol in the original source code. Use SYMBOL_LINKAGE_NAME if you Index: xcoffread.c =================================================================== RCS file: /cvs/src/src/gdb/xcoffread.c,v retrieving revision 1.40 diff -u -p -r1.40 xcoffread.c --- xcoffread.c 14 Feb 2004 15:46:33 -0000 1.40 +++ xcoffread.c 15 Feb 2004 23:56:38 -0000 @@ -1477,7 +1477,8 @@ process_xcoff_symbol (struct coff_symbol will be patched with the type from its stab entry later on in patch_block_stabs (), unless the file was compiled without -g. */ - DEPRECATED_SYMBOL_NAME (sym) = SYMNAME_ALLOC (name, symname_alloced); + SYMBOL_SET_LINKAGE_NAME (sym, + SYMNAME_ALLOC (name, symname_alloced)); SYMBOL_TYPE (sym) = func_symbol_type; SYMBOL_CLASS (sym) = LOC_BLOCK;