* hpread.c (struct hpread_symfile_info): Delete have_module field

and accessor macro.  Minor indentation fix.
	(hpread_build_psymtabs, case K_MODULE):  Only start a new psymtab
	and reset state variables have_name & texthigh if pst is NULL.
	(hpread_build_psymtabs, case K_SRCFILE): Only reset the name of a
	partial symbol table if pst is non-NULL.  If pst is NULL, then
	start a new psymtab.
	(hpread_process_one_debug_symbol, case K_MODULE): Now empty.
	(hpread_process_one_debug_symbol, case K_SRCFILE): Simplify and
	correct handling of subfiles.
This commit is contained in:
Jeff Law 1994-09-28 06:42:24 +00:00
parent fd5032fd95
commit 38ab0632d6
2 changed files with 40 additions and 46 deletions

View File

@ -1,3 +1,16 @@
Wed Sep 28 00:35:23 1994 Jeff Law (law@snake.cs.utah.edu)
* hpread.c (struct hpread_symfile_info): Delete have_module field
and accessor macro. Minor indentation fix.
(hpread_build_psymtabs, case K_MODULE): Only start a new psymtab
and reset state variables have_name & texthigh if pst is NULL.
(hpread_build_psymtabs, case K_SRCFILE): Only reset the name of a
partial symbol table if pst is non-NULL. If pst is NULL, then
start a new psymtab.
(hpread_process_one_debug_symbol, case K_MODULE): Now empty.
(hpread_process_one_debug_symbol, case K_SRCFILE): Simplify and
correct handling of subfiles.
Fri Aug 19 10:36:15 1994 Jeff Law (law@snake.cs.utah.edu)
* Makefile.in (ALLDEPFILES): Add hpread.c.

View File

@ -60,12 +60,11 @@ struct hpread_symfile_info
SLTPOINTER sl_index;
/* Some state variables we'll need. */
int have_module;
int within_function;
/* Keep track of the current function's address. We may need to look
up something based on this address. */
unsigned int current_function_value;
/* Keep track of the current function's address. We may need to look
up something based on this address. */
unsigned int current_function_value;
};
@ -82,7 +81,6 @@ struct hpread_symfile_info
#define TYPE_VECTOR(o) (HPUX_SYMFILE_INFO(o)->type_vector)
#define TYPE_VECTOR_LENGTH(o) (HPUX_SYMFILE_INFO(o)->type_vector_length)
#define SL_INDEX(o) (HPUX_SYMFILE_INFO(o)->sl_index)
#define HAVE_MODULE(o) (HPUX_SYMFILE_INFO(o)->have_module)
#define WITHIN_FUNCTION(o) (HPUX_SYMFILE_INFO(o)->within_function)
#define CURRENT_FUNCTION_VALUE(o) (HPUX_SYMFILE_INFO(o)->current_function_value)
@ -430,12 +428,13 @@ hpread_build_psymtabs (objfile, section_offsets, mainline)
}
if (HAVE_MODULE (objfile))
if (pst)
{
if (!have_name)
{
pst->filename =
(char *) obstack_alloc (&pst->objfile->psymbol_obstack, strlen (namestring) + 1);
pst->filename = (char *)
obstack_alloc (&pst->objfile->psymbol_obstack,
strlen (namestring) + 1);
strcpy (pst->filename, namestring);
have_name = 1;
continue;
@ -468,6 +467,7 @@ hpread_build_psymtabs (objfile, section_offsets, mainline)
objfile->global_psymbols.next,
objfile->static_psymbols.next);
texthigh = valu;
have_name = 1;
continue;
}
@ -478,14 +478,16 @@ hpread_build_psymtabs (objfile, section_offsets, mainline)
SET_NAMESTRING (dn_bufp, &namestring, objfile);
valu = hpread_get_textlow (i, hp_symnum, objfile);
valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
pst = hpread_start_psymtab (objfile, section_offsets,
namestring, valu,
hp_symnum * DNTTBLOCKSIZE,
objfile->global_psymbols.next,
objfile->static_psymbols.next);
texthigh = valu;
HAVE_MODULE (objfile) = 1;
have_name = 0;
if (!pst)
{
pst = hpread_start_psymtab (objfile, section_offsets,
namestring, valu,
hp_symnum * DNTTBLOCKSIZE,
objfile->global_psymbols.next,
objfile->static_psymbols.next);
texthigh = valu;
have_name = 0;
}
continue;
case K_FUNCTION:
case K_ENTRY:
@ -515,7 +517,6 @@ hpread_build_psymtabs (objfile, section_offsets, mainline)
pst = (struct partial_symtab *) 0;
includes_used = 0;
dependencies_used = 0;
HAVE_MODULE (objfile) = 0;
have_name = 0;
}
if (dn_bufp->dend.endkind == K_FUNCTION)
@ -1762,7 +1763,6 @@ hpread_process_one_debug_symbol (dn_bufp, name, section_offsets, objfile,
DNTTPOINTER hp_type;
struct symbol *sym;
struct context_stack *new;
char *p;
/* Allocate one GDB debug symbol and fill in some default values. */
sym = (struct symbol *) obstack_alloc (&objfile->symbol_obstack,
@ -1793,37 +1793,18 @@ hpread_process_one_debug_symbol (dn_bufp, name, section_offsets, objfile,
(if any) and start accumulating a new symbol table. */
valu = text_offset + offset; /* Relocate for dynamic loading */
p = strrchr (name, '.');
if (!strcmp (p, ".h") || HAVE_MODULE (objfile)
|| (last_source_file && !strcmp (name, last_source_file)))
{
SL_INDEX (objfile) = hpread_record_lines (current_subfile,
SL_INDEX (objfile),
dn_bufp->dsfile.address,
objfile);
start_subfile (name, NULL);
break;
}
if (!last_source_file)
start_symtab (name, NULL, valu);
if (last_source_file)
{
SL_INDEX (objfile) = hpread_record_lines (current_subfile,
SL_INDEX (objfile),
dn_bufp->dsfile.address,
objfile);
end_symtab (valu + text_size, 0, 0, objfile, 0);
}
SL_INDEX (objfile) = dn_bufp->dsfile.address;
start_symtab (name, NULL, valu);
SL_INDEX (objfile) = hpread_record_lines (current_subfile,
SL_INDEX (objfile),
dn_bufp->dsfile.address,
objfile);
start_subfile (name, NULL);
break;
case K_MODULE:
/* This kind of symbol indicates the start of a module or C source
file */
valu = text_offset + offset; /* Relocate for dynamic loading */
SL_INDEX (objfile) = dn_bufp->dmodule.address;
start_symtab (filename, NULL, valu);
/* No need to do anything with these K_MODULE symbols anymore. */
break;
case K_FUNCTION: