Index: hpread.c =================================================================== RCS file: /cvs/src/src/gdb/hpread.c,v retrieving revision 1.30 diff -c -3 -p -r1.30 hpread.c *** hpread.c 11 Jan 2003 02:13:22 -0000 1.30 --- hpread.c 12 Jan 2003 11:46:03 -0000 *************** struct hpread_symfile_info *** 87,109 **** #define WITHIN_FUNCTION(o) (HPUX_SYMFILE_INFO(o)->within_function) #define CURRENT_FUNCTION_VALUE(o) (HPUX_SYMFILE_INFO(o)->current_function_value) - /* Given the native debug symbol SYM, set NAMEP to the name associated - with the debug symbol. Note we may be called with a debug symbol which - has no associated name, in that case we return an empty string. - - Also note we "know" that the name for any symbol is always in the - same place. Hence we don't have to conditionalize on the symbol type. */ - #define SET_NAMESTRING(SYM, NAMEP, OBJFILE) \ - if (! hpread_has_name ((SYM)->dblock.kind)) \ - *NAMEP = ""; \ - else if (((unsigned)(SYM)->dsfile.name) >= VT_SIZE (OBJFILE)) \ - { \ - complaint (&symfile_complaints, "bad string table offset in symbol %d", \ - symnum); \ - *NAMEP = ""; \ - } \ - else \ - *NAMEP = (SYM)->dsfile.name + VT (OBJFILE) /* We put a pointer to this structure in the read_symtab_private field of the psymtab. */ --- 87,92 ---- *************** lbrac_mismatch_complaint (int arg1) *** 155,160 **** --- 138,146 ---- /* Forward procedure declarations */ + static void set_namestring (union dnttentry *sym, char **namep, + struct objfile *objfile); + void hpread_symfile_init (struct objfile *); void do_pxdb (bfd *); *************** trans_lang (enum hp_language in_lang) *** 302,307 **** --- 288,315 ---- static char main_string[] = "main"; + + /* Given the native debug symbol SYM, set NAMEP to the name associated + with the debug symbol. Note we may be called with a debug symbol which + has no associated name, in that case we return an empty string. */ + + static void + set_namestring (union dnttentry *sym, char **namep, struct objfile *objfile) + { + /* Note that we "know" that the name for any symbol is always in the same + place. Hence we don't have to conditionalize on the symbol type. */ + if (! hpread_has_name (sym->dblock.kind)) + *namep = ""; + else if ((unsigned) sym->dsfile.name >= VT_SIZE (objfile)) + { + complaint (&symfile_complaints, "bad string table offset in symbol %d", + symnum); + *namep = ""; + } + else + *namep = sym->dsfile.name + VT (objfile); + } + /* Call PXDB to process our file. Approach copied from DDE's "dbgk_run_pxdb". Note: we *************** hpread_build_psymtabs (struct objfile *o *** 1917,1923 **** /* A source file of some kind. Note this may simply be an included file. */ ! SET_NAMESTRING (dn_bufp, &namestring, objfile); /* Check if this is the source file we are already working with. */ --- 1925,1931 ---- /* A source file of some kind. Note this may simply be an included file. */ ! set_namestring (dn_bufp, &namestring, objfile); /* Check if this is the source file we are already working with. */ *************** hpread_build_psymtabs (struct objfile *o *** 2022,2028 **** } /* Now begin a new module and a new psymtab for it */ ! SET_NAMESTRING (dn_bufp, &namestring, objfile); valu = hpread_get_textlow (i, hp_symnum, objfile, symcount); valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); if (!pst) --- 2030,2036 ---- } /* Now begin a new module and a new psymtab for it */ ! set_namestring (dn_bufp, &namestring, objfile); valu = hpread_get_textlow (i, hp_symnum, objfile, symcount); valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); if (!pst) *************** hpread_build_psymtabs (struct objfile *o *** 2048,2054 **** texthigh = valu; valu = dn_bufp->dfunc.lowaddr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); ! SET_NAMESTRING (dn_bufp, &namestring, objfile); if (dn_bufp->dfunc.global) add_psymbol_to_list (namestring, strlen (namestring), VAR_NAMESPACE, LOC_BLOCK, --- 2056,2062 ---- texthigh = valu; valu = dn_bufp->dfunc.lowaddr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); ! set_namestring (dn_bufp, &namestring, objfile); if (dn_bufp->dfunc.global) add_psymbol_to_list (namestring, strlen (namestring), VAR_NAMESPACE, LOC_BLOCK, *************** hpread_build_psymtabs (struct objfile *o *** 2069,2075 **** texthigh = valu; valu = dn_bufp->ddocfunc.lowaddr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); ! SET_NAMESTRING (dn_bufp, &namestring, objfile); if (dn_bufp->ddocfunc.global) add_psymbol_to_list (namestring, strlen (namestring), VAR_NAMESPACE, LOC_BLOCK, --- 2077,2083 ---- texthigh = valu; valu = dn_bufp->ddocfunc.lowaddr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); ! set_namestring (dn_bufp, &namestring, objfile); if (dn_bufp->ddocfunc.global) add_psymbol_to_list (namestring, strlen (namestring), VAR_NAMESPACE, LOC_BLOCK, *************** hpread_build_psymtabs (struct objfile *o *** 2143,2149 **** else storage = LOC_UNDEF; ! SET_NAMESTRING (dn_bufp, &namestring, objfile); if (!pst) { pst = hpread_start_psymtab (objfile, --- 2151,2157 ---- else storage = LOC_UNDEF; ! set_namestring (dn_bufp, &namestring, objfile); if (!pst) { pst = hpread_start_psymtab (objfile, *************** hpread_build_psymtabs (struct objfile *o *** 2227,2233 **** case DNTT_TYPE_MEMENUM: case DNTT_TYPE_CONST: /* Constants and members of enumerated types. */ ! SET_NAMESTRING (dn_bufp, &namestring, objfile); if (!pst) { pst = hpread_start_psymtab (objfile, --- 2235,2241 ---- case DNTT_TYPE_MEMENUM: case DNTT_TYPE_CONST: /* Constants and members of enumerated types. */ ! set_namestring (dn_bufp, &namestring, objfile); if (!pst) { pst = hpread_start_psymtab (objfile, *************** hpread_expand_symtab (struct objfile *ob *** 2827,2834 **** if (dn_bufp->dblock.extension) continue; ! /* Yow! We call SET_NAMESTRING on things without names! */ ! SET_NAMESTRING (dn_bufp, &namestring, objfile); hpread_process_one_debug_symbol (dn_bufp, namestring, section_offsets, objfile, text_offset, text_size, --- 2835,2842 ---- if (dn_bufp->dblock.extension) continue; ! /* Yow! We call set_namestring on things without names! */ ! set_namestring (dn_bufp, &namestring, objfile); hpread_process_one_debug_symbol (dn_bufp, namestring, section_offsets, objfile, text_offset, text_size,