static int line_vector_length;
-struct pending_block *pending_blocks;
-
static struct blockvector *
make_blockvector PARAMS ((struct objfile *));
dst_symfile_finish PARAMS ((struct objfile *));
static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, enum minimal_symbol_type));
+record_minimal_symbol PARAMS ((char *, CORE_ADDR, enum minimal_symbol_type,
+ struct objfile *));
static void
dst_end_symtab PARAMS ((struct objfile *));
}
\f
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;
{
prim_record_minimal_symbol (savestring (name, strlen (name)),
- address,
- type);
+ address,
+ type,
+ objfile);
}
\f
/* dst_symfile_init ()
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 */
/* Read the line number table, all at once. */
bfd_map_over_sections (abfd, find_dst_sections, (PTR)NULL);
/* Sort symbols alphabetically within each block. */
- sort_all_symtab_syms ();
+ {
+ struct symtab *s;
+ for (s = objfile -> symtabs; s != NULL; s = s -> next)
+ {
+ sort_symtab_syms (s);
+ }
+ }
/* Install any minimal symbols that have been collected as the current
minimal symbols for this objfile. */
}
if (size == -1)
{
- fprintf(stderr, "Warning: unexpected DST entry type (%d) found\nLast valid entry was of type: %d\n",
+ fprintf_unfiltered(gdb_stderr, "Warning: unexpected DST entry type (%d) found\nLast valid entry was of type: %d\n",
(int) entry->rec_type,
last_type);
- fprintf(stderr, "Last unknown_3 value: %d\n", lu3);
+ fprintf_unfiltered(gdb_stderr, "Last unknown_3 value: %d\n", lu3);
size = 0;
}
else
{
if (count++ == 100)
{
- fprintf(stderr, "Error reading locstring\n");
+ fprintf_unfiltered(gdb_stderr, "Error reading locstring\n");
break;
}
entry = (dst_loc_entry_t *) locstr;
case dst_block_function:
case dst_block_subroutine:
case dst_block_program:
- record_minimal_symbol(name, address, mst_text);
+ record_minimal_symbol(name, address, mst_text, objfile);
function = process_dst_function(
objfile,
symbol_entry,
}
if (module_num)
record_minimal_symbol("<end_of_program>",
- BLOCK_END(block), mst_text);
+ BLOCK_END(block), mst_text, objfile);
/* One more faked symbol to make sure nothing can ever run off the
* end of the symbol table. This one represents the end of the
* text space. It used to be (CORE_ADDR) -1 (effectively the highest
*/
record_minimal_symbol("<end_of_text>",
(CORE_ADDR) 0x40000000,
- mst_text);
+ mst_text, objfile);
while (struct_list)
{
element = struct_list;
struct objfile *objfile;
CORE_ADDR addr;
{
+ objfile->num_sections = 1;
return &dst_symfile_faker;
}
static struct sym_fns dst_sym_fns =
{
- "apollo", /* sym_name: name or name prefix of BFD target type */
- 6, /* sym_namelen: number of significant sym_name chars */
+ /* FIXME: Can this be integrated with coffread.c? If not, should it be
+ a separate flavour like ecoff? */
+ (enum bfd_flavour)-2,
+
dst_new_init, /* sym_new_init: init anything gbl to entire symtab */
dst_symfile_init, /* sym_init: read initial info, setup for sym_read() */
dst_symfile_read, /* sym_read: read a symbol file into symtab */