aboutsummaryrefslogtreecommitdiff
path: root/gdb/coffread.c
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1994-01-18 03:42:30 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1994-01-18 03:42:30 +0000
commitaf8b79066722cbfa82508a188b0c744058789137 (patch)
treed19096b08552bc29a71e8845f4dce27727411f04 /gdb/coffread.c
parent80edc7cb3cd332077c4213f12816921c61bda4ea (diff)
downloadgdb-af8b79066722cbfa82508a188b0c744058789137.zip
gdb-af8b79066722cbfa82508a188b0c744058789137.tar.gz
gdb-af8b79066722cbfa82508a188b0c744058789137.tar.bz2
* xcoffread.c (read_xcoff_symtab, case C_FILE): Accept the name
from either the symbol name or the auxent. * coffread.c, symfile.h (coff_getfilename): Renamed from getfilename, no longer static.
Diffstat (limited to 'gdb/coffread.c')
-rw-r--r--gdb/coffread.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 26d60c1..f5e92f9 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -76,13 +76,10 @@ struct coff_symfile_info {
static CORE_ADDR cur_src_start_addr;
static CORE_ADDR cur_src_end_addr;
-/* Core address of the end of the first object file. */
-static CORE_ADDR first_object_file_end;
-
/* The addresses of the symbol table stream and number of symbols
of the object file we are reading (as copied into core). */
-static FILE *nlist_stream_global;
+static GDB_FILE *nlist_stream_global;
static int nlist_nsyms_global;
/* Vector of line number information. */
@@ -225,9 +222,6 @@ static int
init_lineno PARAMS ((int, long, int));
static char *
-getfilename PARAMS ((union internal_auxent *));
-
-static char *
getsymname PARAMS ((struct internal_syment *));
static void
@@ -258,8 +252,8 @@ coff_symfile_read PARAMS ((struct objfile *, struct section_offsets *, int));
static void
coff_symfile_finish PARAMS ((struct objfile *));
-static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, enum minimal_symbol_type));
+static void record_minimal_symbol
+ PARAMS ((char *, CORE_ADDR, enum minimal_symbol_type, struct objfile *));
static void
coff_end_symtab PARAMS ((struct objfile *));
@@ -484,15 +478,17 @@ coff_end_symtab (objfile)
}
static void
-record_minimal_symbol (name, address, type)
+record_minimal_symbol (name, address, type, objfile)
char *name;
CORE_ADDR address;
enum minimal_symbol_type type;
+ struct objfile *objfile;
{
/* We don't want TDESC entry points in the minimal symbol table */
if (name[0] == '@') return;
- prim_record_minimal_symbol (savestring (name, strlen (name)), address, type);
+ prim_record_minimal_symbol (savestring (name, strlen (name)), address, type,
+ objfile);
}
/* coff_symfile_init ()
@@ -610,7 +606,7 @@ coff_symfile_read (objfile, section_offsets, mainline)
symfile_bfd = abfd; /* Kludge for swap routines */
/* WARNING WILL ROBINSON! ACCESSING BFD-PRIVATE DATA HERE! FIXME! */
- desc = fileno ((FILE *)(abfd->iostream)); /* File descriptor */
+ desc = fileno ((GDB_FILE *)(abfd->iostream)); /* File descriptor */
num_symbols = bfd_get_symcount (abfd); /* How many syms */
symtab_offset = cdata->sym_filepos; /* Symbol table file offset */
stringtab_offset = symtab_offset + /* String table file offset */
@@ -682,7 +678,7 @@ coff_symfile_read (objfile, section_offsets, mainline)
{
/* FIXME: dubious. Why can't we use something normal like
bfd_get_section_contents? */
- fseek ((FILE *) abfd->iostream, abfd->where, 0);
+ fseek ((GDB_FILE *) abfd->iostream, abfd->where, 0);
stabsize = bfd_section_size (abfd, info->stabsect);
stabstrsize = bfd_section_size (abfd, info->stabstrsect);
@@ -730,7 +726,7 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
int nsyms;
struct objfile *objfile;
{
- FILE *stream;
+ GDB_FILE *stream;
register struct context_stack *new;
struct coff_symbol coff_symbol;
register struct coff_symbol *cs = &coff_symbol;
@@ -743,7 +739,6 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
/* A .file is open. */
int in_source_file = 0;
- int num_object_files = 0;
int next_file_symnum = -1;
/* Name of the current file. */
@@ -814,7 +809,7 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
coff_end_symtab (objfile);
coff_start_symtab ();
- complete_symtab ("_globals_", 0, first_object_file_end);
+ complete_symtab ("_globals_", 0, 0);
/* done with all files, everything from here on out is globals */
}
@@ -827,7 +822,7 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
if (ISFCN (cs->c_type) && cs->c_sclass != C_TPDEF)
{
/* Record all functions -- external and static -- in minsyms. */
- record_minimal_symbol (cs->c_name, cs->c_value, mst_text);
+ record_minimal_symbol (cs->c_name, cs->c_value, mst_text, objfile);
fcn_line_ptr = main_aux.x_sym.x_fcnary.x_fcn.x_lnnoptr;
fcn_start_addr = cs->c_value;
@@ -856,7 +851,7 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
*/
next_file_symnum = cs->c_value;
if (cs->c_naux > 0)
- filestring = getfilename (&main_aux);
+ filestring = coff_getfilename (&main_aux);
else
filestring = "";
@@ -877,11 +872,6 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
if (STREQ (cs->c_name, ".text")) {
/* FIXME: don't wire in ".text" as section name
or symbol name! */
- if (++num_object_files == 1) {
- /* last address of startup file */
- first_object_file_end = cs->c_value +
- main_aux.x_scn.x_scnlen;
- }
/* Check for in_source_file deals with case of
a file with debugging symbols
followed by a later file with no symbols. */
@@ -922,11 +912,11 @@ read_coff_symtab (symtab_offset, nsyms, objfile)
But why are absolute syms recorded as functions, anyway? */
if (cs->c_secnum <= text_bfd_scnum+1) {/* text or abs */
record_minimal_symbol (cs->c_name, cs->c_value,
- mst_text);
+ mst_text, objfile);
break;
} else {
record_minimal_symbol (cs->c_name, cs->c_value,
- mst_data);
+ mst_data, objfile);
break;
}
}
@@ -1214,7 +1204,7 @@ getsymname (symbol_entry)
is only good for temporary use. */
static char *
-getfilename (aux_entry)
+coff_getfilename (aux_entry)
union internal_auxent *aux_entry;
{
static char buffer[BUFSIZ];