static struct minimal_symbol *
record_minimal_symbol_and_info PARAMS ((char *, CORE_ADDR,
enum minimal_symbol_type, char *,
+ asection *bfd_section,
struct objfile *));
static void
#endif
static struct minimal_symbol *
-record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
+record_minimal_symbol_and_info (name, address, ms_type, info, bfd_section,
+ objfile)
char *name;
CORE_ADDR address;
enum minimal_symbol_type ms_type;
char *info; /* FIXME, is this really char *? */
+ asection *bfd_section;
struct objfile *objfile;
{
int section;
}
return prim_record_minimal_symbol_and_info
- (name, address, ms_type, info, section, objfile);
+ (name, address, ms_type, info, section, bfd_section, objfile);
}
/*
/* Name of filesym, as saved on the symbol_obstack. */
char *filesymname = obsavestring ("", 0, &objfile->symbol_obstack);
#endif
- struct dbx_symfile_info *dbx = (struct dbx_symfile_info *)
- objfile->sym_stab_info;
+ struct dbx_symfile_info *dbx = objfile->sym_stab_info;
unsigned long size;
int stripped = (bfd_get_symcount (abfd) == 0);
symaddr += addr;
msym = record_minimal_symbol_and_info
((char *) sym -> name, symaddr,
- mst_solib_trampoline, NULL, objfile);
+ mst_solib_trampoline, NULL, sym -> section, objfile);
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
if (msym != NULL)
msym->filename = filesymname;
default:
ms_type = mst_abs;
}
+
+ /* If it is an Irix dynamic symbol, skip section name
+ symbols, relocate all others. */
+ if (ms_type != mst_abs)
+ {
+ if (sym->name[0] == '.')
+ continue;
+ symaddr += addr;
+ }
}
else if (sym -> section -> flags & SEC_CODE)
{
size = ((elf_symbol_type *) sym) -> internal_elf_sym.st_size;
msym = record_minimal_symbol_and_info
((char *) sym -> name, symaddr,
- ms_type, (PTR) size, objfile);
+ ms_type, (PTR) size, sym -> section, objfile);
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
if (msym != NULL)
msym->filename = filesymname;
special ELF sections. We first have to find them... */
bfd_map_over_sections (abfd, elf_locate_sections, (PTR) &ei);
- if (dwarf2_has_info (abfd) && !offset)
+ if (dwarf2_has_info (abfd))
{
/* DWARF 2 sections */
dwarf2_build_psymtabs (objfile, section_offsets, mainline);
PTR objp;
{
struct objfile *objfile = (struct objfile *)objp;
- struct dbx_symfile_info *dbxinfo = (struct dbx_symfile_info *)
- objfile->sym_stab_info;
+ struct dbx_symfile_info *dbxinfo = objfile->sym_stab_info;
struct stab_section_info *ssi, *nssi;
ssi = dbxinfo->stab_section_info;
struct partial_symtab *pst;
{
char *filename = pst->filename;
- struct dbx_symfile_info *dbx = (struct dbx_symfile_info *)
- objfile->sym_stab_info;
+ struct dbx_symfile_info *dbx = objfile->sym_stab_info;
struct stab_section_info *maybe = dbx->stab_section_info;
struct stab_section_info *questionable = 0;
int i;