You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
Written by the Center for Software Science at the University of Utah
and by Cygnus Support. */
/* #define DUMPING 1 */
/* To use the quick look-up tables, uncomment this define. */
-#define QUICK_LOOK_UP 0
+#define QUICK_LOOK_UP 1
/* To call PXDB to process un-processed files, uncomment this define. */
#define USE_PXDB 1
void hpread_symfile_init
PARAMS ((struct objfile *));
+void
+do_pxdb PARAMS ((bfd *));
+
void hpread_build_psymtabs
- PARAMS ((struct objfile *, struct section_offsets *, int));
+ PARAMS ((struct objfile *, int));
void hpread_symfile_finish
PARAMS ((struct objfile *));
PARAMS ((int, int, struct objfile *, int));
static struct partial_symtab *hpread_start_psymtab
- PARAMS ((struct objfile *, struct section_offsets *, char *, CORE_ADDR, int,
+ PARAMS ((struct objfile *, char *, CORE_ADDR, int,
struct partial_symbol **, struct partial_symbol **));
static struct partial_symtab *hpread_end_psymtab
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
/* check for the existance of a file, given its full pathname */
int
else if (in_lang == HP_LANGUAGE_CPLUSPLUS)
return language_cplus;
- else if (in_lang == HP_LANGUAGE_F77)
+ else if (in_lang == HP_LANGUAGE_FORTRAN)
return language_fortran;
else
#endif
-#ifdef QUICK_LOOK_UP
+/* Check whether the file needs to be preprocessed by pxdb.
+ If so, call pxdb. */
+
+void
+do_pxdb (sym_bfd)
+ bfd *sym_bfd;
+{
+ /* The following code is HP-specific. The "right" way of
+ doing this is unknown, but we bet would involve a target-
+ specific pre-file-load check using a generic mechanism. */
-/* This flag can be set to zero to use the old
- style psymtab (build from a scan of the LNTT)
- or to one to try to use the quick look-up
- tables. */
-int psym_new_style = 1;
+ /* This code will not be executed if the file is not in SOM
+ format (i.e. if compiled with gcc) */
+ if (hpread_pxdb_needed (sym_bfd))
+ {
+ /*This file has not been pre-processed. Preprocess now */
+
+ if (hpread_call_pxdb (sym_bfd->filename))
+ {
+ /* The call above has changed the on-disk file,
+ we can close the file anyway, because the
+ symbols will be reread in when the target is run */
+ bfd_close (sym_bfd);
+ }
+ }
+}
\f
-/* Code to handle quick lookup-tables follows */
+#ifdef QUICK_LOOK_UP
+
+/* Code to handle quick lookup-tables follows. */
/* Some useful macros */
psymtabs created so far */
typedef struct
- {
- int start;
- int end;
- }
+{
+ int start;
+ int end;
+}
pst_syms_struct;
static pst_syms_struct *pst_syms_array = 0;
organized in a separate routine, although it does take lots of arguments. pai/1997-10-08 */
static int
-scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile, section_offsets)
+scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile)
int *curr_pd_p; /* pointer to current proc index */
quick_procedure_entry *qPD; /* the procedure quick lookup table */
int max_procs; /* number of entries in proc. table */
struct partial_symtab *pst; /* current psymtab */
char *vt_bits; /* strings table of SOM debug space */
struct objfile *objfile; /* current object file */
- struct section_offsets *section_offsets; /* not really used for HP-UX currently */
{
union dnttentry *dn_bufp;
int symbol_count = 0; /* Total number of symbols in this psymtab */
warning ("Procedure \"%s\" [0x%x] spans file or module boundaries.", rtn_name, curr_pd);
}
-/* I asked for this in the hope it would fix bug CHFts22228, but
- later decided it's not the right fix. I'm leaving the code
- commented out for now in case we decide we actually want to do this.
- - RT */
-#if 0
- /* Check this routine--if it's a class member function,
- add the class to the psymtab. We only need to add
- the class once in each module, so check. */
- if (qPD[curr_pd].member)
- {
-
- class = qPD[curr_pd].icd;
- if (!B_TST (class_entered, class))
- { /* pai: (temp) class_entered not a parameter */
-
- class_name = &vt_bits[(long) qCD[class].sbClass];
-
- /* Add to both the struct and var namespace */
-
- add_psymbol_to_list (class_name,
- strlen (class_name),
- STRUCT_NAMESPACE,
- LOC_UNDEF, /* "I have no storage" */
- &objfile->global_psymbols, /* assume classname is global */
- 0, 0,
- trans_lang ((enum hp_language) qPD[curr_pd].language),
- objfile);
-
- add_psymbol_to_list (class_name,
- strlen (class_name),
- VAR_NAMESPACE,
- LOC_UNDEF, /* "I have no storage" */
- &objfile->global_psymbols, /* assume classname is global */
- 0, 0,
- trans_lang ((enum hp_language) qPD[curr_pd].language),
- objfile);
-
- B_SET (class_entered, class); /* pai: (temp) class_entered not a parameter */
- symbol_count++;
- }
- }
-#endif
-
/* Add this routine symbol to the list in the objfile.
Unfortunately we have to go to the LNTT to determine the
correct list to put it on. An alternative (which the
VAR_NAMESPACE,
LOC_BLOCK, /* "I am a routine" */
&objfile->global_psymbols,
- (qPD[curr_pd].adrStart + /* Starting address of rtn */
- ANOFFSET (section_offsets, SECT_OFF_TEXT)),
+ (qPD[curr_pd].adrStart + /* Starting address of rtn */
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
0, /* core addr?? */
- trans_lang ((enum hp_language) qPD[curr_pd].language),
+ trans_lang ((enum hp_language) qPD[curr_pd].language),
objfile);
else
add_psymbol_with_dem_name_to_list (rtn_name,
VAR_NAMESPACE,
LOC_BLOCK, /* "I am a routine" */
&objfile->static_psymbols,
- (qPD[curr_pd].adrStart + /* Starting address of rtn */
- ANOFFSET (section_offsets, SECT_OFF_TEXT)),
+ (qPD[curr_pd].adrStart + /* Starting address of rtn */
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
0, /* core addr?? */
- trans_lang ((enum hp_language) qPD[curr_pd].language),
+ trans_lang ((enum hp_language) qPD[curr_pd].language),
objfile);
symbol_count++;
entry for it, so in such cases we create a psymtab for the file. */
int
-hpread_quick_traverse (objfile, section_offsets, gntt_bits, vt_bits, pxdb_header_p)
- struct objfile *objfile; /* The object file descriptor */
- struct section_offsets *section_offsets; /* ?? Null for HP */
- char *gntt_bits; /* GNTT entries, loaded in from the file */
- char *vt_bits; /* VT (string) entries ditto. */
- PXDB_header_ptr pxdb_header_p; /* Pointer to pxdb header ditto */
+hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
+ struct objfile *objfile; /* The object file descriptor */
+ char *gntt_bits; /* GNTT entries, loaded in from the file */
+ char *vt_bits; /* VT (string) entries ditto. */
+ PXDB_header_ptr pxdb_header_p; /* Pointer to pxdb header ditto */
{
struct partial_symtab *pst;
struct partial_symbol **global_syms; /* We'll be filling in the "global" */
struct partial_symbol **static_syms; /* and "static" tables in the objfile
- as we go, so we need a pair of
- current pointers. */
+ as we go, so we need a pair of
+ current pointers. */
#ifdef DUMPING
/* Turn this on for lots of debugging information in this routine.
global_syms = objfile->global_psymbols.list;
static_syms = objfile->static_psymbols.list;
-#if 0 /* pai: (temp) we don't need this any more */
- /* elz: if the first module we see in the table is for
- end.c, then return immediately with false. This happens
- for F77 programs, for which there is no MODULE information
- produced in the debug info.
- Returning false from this function will make the caller
- (build_psymbols) scan the table from the beginning and
- not use the quick lookup tables.
- F90 has modules so this poses no problem. */
- if (!strcmp (&vt_bits[(long) qMD[0].sbMod], "end.c"))
- return 0;
-#endif
/* First skip over pseudo-entries with address 0. These represent inlined
routines and abstract (uninstantiated) template routines.
in them but still have qMD entries. They also have no qFD or
qPD entries. Their start address is -1 and their end address
is 0. */
- if (VALID_CURR_MODULE && (CURR_MODULE_START == -1) && (CURR_MODULE_END == NULL))
+ if (VALID_CURR_MODULE && (CURR_MODULE_START == -1) && (CURR_MODULE_END == 0))
{
mod_name_string = &vt_bits[(long) qMD[curr_md].sbMod];
might help. */
pst = hpread_start_psymtab (objfile,
- section_offsets, /* ?? */
mod_name_string,
CURR_MODULE_START, /* Low text address: bogus! */
- (CURR_MODULE_ISYM * sizeof (struct dntt_type_block)),
- /* ldsymoff */
+ (CURR_MODULE_ISYM * sizeof (struct dntt_type_block)),
+ /* ldsymoff */
global_syms,
static_syms);
pst = hpread_end_psymtab (pst,
NULL, /* psymtab_include_list */
- 0, /* includes_used */
- end_sym * sizeof (struct dntt_type_block),
- /* byte index in LNTT of end
- = capping symbol offset
- = LDSYMOFF of nextfile */
- NULL, /* text high */
- NULL, /* dependency_list */
- 0); /* dependencies_used */
+ 0, /* includes_used */
+ end_sym * sizeof (struct dntt_type_block),
+ /* byte index in LNTT of end
+ = capping symbol offset
+ = LDSYMOFF of nextfile */
+ 0, /* text high */
+ NULL, /* dependency_list */
+ 0); /* dependencies_used */
global_syms = objfile->global_psymbols.next;
static_syms = objfile->static_psymbols.next;
And it's not even the right byte offset, as we're using
the size of a union! FIXME! */
pst = hpread_start_psymtab (objfile,
- section_offsets, /* ?? */
full_name_string,
- start_adr, /* Low text address */
- (start_sym * sizeof (struct dntt_type_block)),
- /* ldsymoff */
+ start_adr, /* Low text address */
+ (start_sym * sizeof (struct dntt_type_block)),
+ /* ldsymoff */
global_syms,
static_syms);
file, based on the starting addresses. */
syms_in_pst = scan_procs (&curr_pd, qPD, pxdb_header_p->pd_entries,
- start_adr, end_adr,
- pst, vt_bits, objfile, section_offsets);
+ start_adr, end_adr, pst, vt_bits, objfile);
/* Get ending symbol offset */
pst = hpread_end_psymtab (pst,
NULL, /* psymtab_include_list */
0, /* includes_used */
- end_sym * sizeof (struct dntt_type_block),
- /* byte index in LNTT of end
- = capping symbol offset
- = LDSYMOFF of nextfile */
+ end_sym * sizeof (struct dntt_type_block),
+ /* byte index in LNTT of end
+ = capping symbol offset
+ = LDSYMOFF of nextfile */
end_adr, /* text high */
NULL, /* dependency_list */
0); /* dependencies_used */
And it's not even the right byte offset, as we're using
the size of a union! FIXME! */
pst = hpread_start_psymtab (objfile,
- section_offsets, /* ?? */
full_name_string,
start_adr, /* Low text address */
- (start_sym * sizeof (struct dntt_type_block)),
- /* ldsymoff */
+ (start_sym * sizeof (struct dntt_type_block)),
+ /* ldsymoff */
global_syms,
static_syms);
module, based on the starting addresses. */
syms_in_pst = scan_procs (&curr_pd, qPD, pxdb_header_p->pd_entries,
- start_adr, end_adr,
- pst, vt_bits, objfile, section_offsets);
+ start_adr, end_adr, pst, vt_bits, objfile);
/* Get ending symbol offset */
pst = hpread_end_psymtab (pst,
NULL, /* psymtab_include_list */
0, /* includes_used */
- end_sym * sizeof (struct dntt_type_block),
- /* byte index in LNTT of end
- = capping symbol offset
- = LDSYMOFF of nextfile */
+ end_sym * sizeof (struct dntt_type_block),
+ /* byte index in LNTT of end
+ = capping symbol offset
+ = LDSYMOFF of nextfile */
end_adr, /* text high */
NULL, /* dependency_list */
0); /* dependencies_used */
}
#endif
pst = hpread_start_psymtab (objfile,
- section_offsets, /* ?? */
"orphans",
start_adr, /* Low text address */
- (CURR_PROC_ISYM * sizeof (struct dntt_type_block)),
- /* ldsymoff */
+ (CURR_PROC_ISYM * sizeof (struct dntt_type_block)),
+ /* ldsymoff */
global_syms,
static_syms);
scan_procs (&curr_pd, qPD, pxdb_header_p->pd_entries,
- start_adr, end_adr,
- pst, vt_bits, objfile, section_offsets);
+ start_adr, end_adr, pst, vt_bits, objfile);
pst = hpread_end_psymtab (pst,
NULL, /* psymtab_include_list */
0, /* includes_used */
- pxdb_header_p->globals * sizeof (struct dntt_type_block),
- /* byte index in LNTT of end
- = capping symbol offset
- = LDSYMOFF of nextfile */
+ pxdb_header_p->globals * sizeof (struct dntt_type_block),
+ /* byte index in LNTT of end
+ = capping symbol offset
+ = LDSYMOFF of nextfile */
end_adr, /* text high */
NULL, /* dependency_list */
0); /* dependencies_used */
If null psts were kept on the chain, this would be
a solution. FIXME */
pst = hpread_start_psymtab (objfile,
- section_offsets,
"globals",
0,
(pxdb_header_p->globals
bfd_section_size (objfile->obfd, gntt_section));
bfd_get_section_contents (objfile->obfd, gntt_section, GNTT (objfile),
- 0, bfd_section_size (objfile->obfd, gntt_section));
+ 0, bfd_section_size (objfile->obfd, gntt_section));
GNTT_SYMCOUNT (objfile)
= bfd_section_size (objfile->obfd, gntt_section)
bfd_section_size (objfile->obfd, lntt_section));
bfd_get_section_contents (objfile->obfd, lntt_section, LNTT (objfile),
- 0, bfd_section_size (objfile->obfd, lntt_section));
+ 0, bfd_section_size (objfile->obfd, lntt_section));
LNTT_SYMCOUNT (objfile)
= bfd_section_size (objfile->obfd, lntt_section)
bfd_section_size (objfile->obfd, slt_section));
bfd_get_section_contents (objfile->obfd, slt_section, SLT (objfile),
- 0, bfd_section_size (objfile->obfd, slt_section));
+ 0, bfd_section_size (objfile->obfd, slt_section));
/* Read in data from the $VT$ subspace. $VT$ contains things like
names and constants. Keep track of the number of symbols in the VT. */
We assume hpread_symfile_init has been called to initialize the
symbol reader's private data structures.
- SECTION_OFFSETS contains offsets relative to which the symbols in the
- various sections are (depending where the sections were actually loaded).
MAINLINE is true if we are reading the main symbol table (as
opposed to a shared lib or dynamically loaded file). */
+
void
-hpread_build_psymtabs (objfile, section_offsets, mainline)
+hpread_build_psymtabs (objfile, mainline)
struct objfile *objfile;
- struct section_offsets *section_offsets;
int mainline;
{
struct cleanup *old_chain;
int hp_symnum, symcount, i;
- int scan_start;
+ int scan_start = 0;
union dnttentry *dn_bufp;
unsigned long valu;
(struct partial_symtab **) alloca (dependencies_allocated *
sizeof (struct partial_symtab *));
- old_chain = make_cleanup (free_objfile, objfile);
+ old_chain = make_cleanup ((make_cleanup_func) free_objfile, objfile);
last_source_file = 0;
anyway, but it turns out to be not so easy. So this could
actually be commented out, but I leave it in, just in case
we decide to add support for non-pxdb-ed stuff in the future. */
- bfd *abfd;
- abfd = symfile_bfd_open (objfile->name);
- if (!hpread_pxdb_needed (abfd))
- {
- if (psym_new_style)
- {
- PXDB_header pxdb_header;
- int found_modules_in_program;
+ PXDB_header pxdb_header;
+ int found_modules_in_program;
- if (hpread_get_header (objfile, &pxdb_header))
- {
- /* Build a minimal table. No types, no global variables,
- no include files.... */
+ if (hpread_get_header (objfile, &pxdb_header))
+ {
+ /* Build a minimal table. No types, no global variables,
+ no include files.... */
#ifdef DUMPING
- if (dumping)
- printf ("\nNew method for %s\n", objfile->name);
+ if (dumping)
+ printf ("\nNew method for %s\n", objfile->name);
#endif
- /* elz: quick_traverse returns true if it found
- some modules in the main source file, other
- than those in end.c
- In C and C++, all the files have MODULES entries
- in the LNTT, and the quick table traverse is all
- based on finding these MODULES entries. Without
- those it cannot work.
- It happens that F77 programs don't have MODULES
- so the quick traverse gets confused. F90 programs
- have modules, and the quick method still works.
- So, if modules (other than those in end.c) are
- not found we give up on the quick table stuff,
- and fall back on the slower method */
- found_modules_in_program = hpread_quick_traverse (objfile,
- section_offsets,
- GNTT (objfile),
- VT (objfile),
- &pxdb_header);
-
- discard_cleanups (old_chain);
-
- /* Set up to scan the global section of the LNTT.
-
- This field is not always correct: if there are
- no globals, it will point to the last record in
- the regular LNTT, which is usually an END MODULE.
-
- Since it might happen that there could be a file
- with just one global record, there's no way to
- tell other than by looking at the record, so that's
- done below. */
- if (found_modules_in_program)
- scan_start = pxdb_header.globals;
- else
- scan_start = 0;
- }
-
+ /* elz: quick_traverse returns true if it found
+ some modules in the main source file, other
+ than those in end.c
+ In C and C++, all the files have MODULES entries
+ in the LNTT, and the quick table traverse is all
+ based on finding these MODULES entries. Without
+ those it cannot work.
+ It happens that F77 programs don't have MODULES
+ so the quick traverse gets confused. F90 programs
+ have modules, and the quick method still works.
+ So, if modules (other than those in end.c) are
+ not found we give up on the quick table stuff,
+ and fall back on the slower method */
+ found_modules_in_program = hpread_quick_traverse (objfile,
+ GNTT (objfile),
+ VT (objfile),
+ &pxdb_header);
+
+ discard_cleanups (old_chain);
+
+ /* Set up to scan the global section of the LNTT.
+
+ This field is not always correct: if there are
+ no globals, it will point to the last record in
+ the regular LNTT, which is usually an END MODULE.
+
+ Since it might happen that there could be a file
+ with just one global record, there's no way to
+ tell other than by looking at the record, so that's
+ done below. */
+ if (found_modules_in_program)
+ scan_start = pxdb_header.globals;
+ }
#ifdef DUMPING
- else
- {
- if (dumping)
- printf ("\nGoing on to old method for %s\n", objfile->name);
- }
-#endif
-
- } /* End of new method code */
- } /* end of if pxdb exists */
- /* elz: if pxdb does not exists on the system, then scan the whole debug info
- Actually this will never be reached because we error out in case there
- is no pxdb on the system. It turns out that the debug info cannot be
- handled the same way as after bxdb has been run, and gdb gets very
- very confused. Ileave this in anyway, in case one day we want to
- support non pxdb-ed files. */
else
- scan_start = 0;
-
- bfd_close (abfd); /* close the bfd we opened to check for pxdb */
-
- } /* end of ifdef QUICK_LOOK_UP */
-#else
- scan_start = 0; /* if we don't want quick lookup tables start
- from the beginning */
+ {
+ if (dumping)
+ printf ("\nGoing on to old method for %s\n", objfile->name);
+ }
#endif
+ }
+#endif /* QUICK_LOOK_UP */
/* Make two passes, one over the GNTT symbols, the other for the
LNTT symbols.
ignore it and be done! */
continue;
}
-#endif
+#endif /* QUICK_LOOK_UP */
/* A source file of some kind. Note this may simply
be an included file. */
past_first_source_file = 1;
valu = hpread_get_textlow (i, hp_symnum, objfile, symcount);
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
- pst = hpread_start_psymtab (objfile, section_offsets,
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ pst = hpread_start_psymtab (objfile,
namestring, valu,
(hp_symnum
- * sizeof (struct dntt_type_block)),
+ * sizeof (struct dntt_type_block)),
objfile->global_psymbols.next,
objfile->static_psymbols.next);
texthigh = valu;
/* 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 (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
if (!pst)
{
- pst = hpread_start_psymtab (objfile, section_offsets,
+ pst = hpread_start_psymtab (objfile,
namestring, valu,
(hp_symnum
- * sizeof (struct dntt_type_block)),
+ * sizeof (struct dntt_type_block)),
objfile->global_psymbols.next,
objfile->static_psymbols.next);
texthigh = valu;
case DNTT_TYPE_ENTRY:
/* The beginning of a function. DNTT_TYPE_ENTRY may also denote
a secondary entry point. */
- valu = dn_bufp->dfunc.hiaddr + ANOFFSET (section_offsets,
+ valu = dn_bufp->dfunc.hiaddr + ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT);
if (valu > texthigh)
texthigh = valu;
valu = dn_bufp->dfunc.lowaddr +
- ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (dn_bufp->dfunc.global)
add_psymbol_to_list (namestring, strlen (namestring),
continue;
case DNTT_TYPE_DOC_FUNCTION:
- valu = dn_bufp->ddocfunc.hiaddr + ANOFFSET (section_offsets,
+ valu = dn_bufp->ddocfunc.hiaddr + ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT);
if (valu > texthigh)
texthigh = valu;
valu = dn_bufp->ddocfunc.lowaddr +
- ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (dn_bufp->ddocfunc.global)
add_psymbol_to_list (namestring, strlen (namestring),
ignore it and be done! */
continue;
}
-#endif
+#endif /* QUICK_LOOK_UP */
+
/* Scope block begin/end. We only care about function
and file blocks right now. */
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (!pst)
{
- pst = hpread_start_psymtab (objfile, section_offsets,
+ pst = hpread_start_psymtab (objfile,
"globals", 0,
(hp_symnum
- * sizeof (struct dntt_type_block)),
- objfile->global_psymbols.next,
- objfile->static_psymbols.next);
+ * sizeof (struct dntt_type_block)),
+ objfile->global_psymbols.next,
+ objfile->static_psymbols.next);
}
/* Compute address of the data symbol */
valu = dn_bufp->dsvar.location;
/* Relocate in case it's in a shared library */
if (storage == LOC_STATIC)
- valu += ANOFFSET (section_offsets, SECT_OFF_DATA);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
/* Luckily, dvar, svar, typedef, and tagdef all
have their "global" bit in the same place, so it works
VAR_NAMESPACE, storage,
&objfile->global_psymbols,
dn_bufp->dsvar.location,
- 0, language_unknown, objfile);
+ 0, language_unknown, objfile);
}
else
{
VAR_NAMESPACE, storage,
&objfile->static_psymbols,
dn_bufp->dsvar.location,
- 0, language_unknown, objfile);
+ 0, language_unknown, objfile);
}
}
}
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (!pst)
{
- pst = hpread_start_psymtab (objfile, section_offsets,
+ pst = hpread_start_psymtab (objfile,
"globals", 0,
(hp_symnum
- * sizeof (struct dntt_type_block)),
+ * sizeof (struct dntt_type_block)),
objfile->global_psymbols.next,
objfile->static_psymbols.next);
}
(normal). */
static struct partial_symtab *
-hpread_start_psymtab (objfile, section_offsets,
+hpread_start_psymtab (objfile,
filename, textlow, ldsymoff, global_syms, static_syms)
struct objfile *objfile;
- struct section_offsets *section_offsets;
char *filename;
CORE_ADDR textlow;
int ldsymoff;
struct partial_symbol **global_syms;
struct partial_symbol **static_syms;
{
- int offset = ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ int offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
extern void hpread_psymtab_to_symtab ();
struct partial_symtab *result =
- start_psymtab_common (objfile, section_offsets,
+ start_psymtab_common (objfile, objfile->section_offsets,
filename, textlow, global_syms, static_syms);
result->textlow += offset;
{
pst->dependencies = (struct partial_symtab **)
obstack_alloc (&objfile->psymbol_obstack,
- number_dependencies * sizeof (struct partial_symtab *));
+ number_dependencies * sizeof (struct partial_symtab *));
memcpy (pst->dependencies, dependency_list,
number_dependencies * sizeof (struct partial_symtab *));
}
***c - basic - offset:4
*** End:
#endif
-
-