/* Read ELF (Executable and Linking Format) object files for GDB.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001
+ 2001, 2002
Free Software Foundation, Inc.
Written by Fred Fish at Cygnus Support.
struct complaint stab_info_questionable_complaint =
{"elf/stab section information questionable for %s", 0, 0};
-static void elf_symfile_init (struct objfile *);
-
-static void elf_new_init (struct objfile *);
-
-static void elf_symfile_read (struct objfile *, int);
-
-static void elf_symfile_finish (struct objfile *);
-
-static void elf_symtab_read (struct objfile *, int);
-
static void free_elfinfo (void *);
-static struct minimal_symbol *record_minimal_symbol_and_info (char *,
- CORE_ADDR,
- enum
- minimal_symbol_type,
- char *,
- asection *
- bfd_section,
- struct objfile
- *);
-
-static void elf_locate_sections (bfd *, asection *, void *);
-
/* We are called once per section from elf_symfile_read. We
need to examine each section we are passed, check to see
if it is something we are interested in processing, and
-kingdon). */
static void
-elf_locate_sections (bfd *ignore_abfd, asection *sectp, PTR eip)
+elf_locate_sections (bfd *ignore_abfd, asection *sectp, void *eip)
{
register struct elfinfo *ei;
enum minimal_symbol_type ms_type, char *info, /* FIXME, is this really char *? */
asection *bfd_section, struct objfile *objfile)
{
-#ifdef SMASH_TEXT_ADDRESS
if (ms_type == mst_text || ms_type == mst_file_text)
- SMASH_TEXT_ADDRESS (address);
-#endif
+ address = SMASH_TEXT_ADDRESS (address);
return prim_record_minimal_symbol_and_info
(name, address, ms_type, info, bfd_section->index, bfd_section, objfile);
{
sectinfo = (struct stab_section_info *)
xmmalloc (objfile->md, sizeof (*sectinfo));
- memset ((PTR) sectinfo, 0, sizeof (*sectinfo));
+ memset (sectinfo, 0,
+ sizeof (*sectinfo));
if (filesym == NULL)
{
complain (§ion_info_complaint,
size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
msym = record_minimal_symbol_and_info
((char *) sym->name, symaddr,
- ms_type, (PTR) size, sym->section, objfile);
+ ms_type, (void *) size, sym->section, objfile);
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
if (msym != NULL)
msym->filename = filesymname;
#endif
-#ifdef ELF_MAKE_MSYMBOL_SPECIAL
ELF_MAKE_MSYMBOL_SPECIAL (sym, msym);
-#endif
}
}
do_cleanups (back_to);
objfile->sym_stab_info = (struct dbx_symfile_info *)
xmmalloc (objfile->md, sizeof (struct dbx_symfile_info));
memset ((char *) objfile->sym_stab_info, 0, sizeof (struct dbx_symfile_info));
- make_cleanup (free_elfinfo, (PTR) objfile);
+ make_cleanup (free_elfinfo, (void *) objfile);
/* Process the normal ELF symbol table first. This may write some
chain of info into the dbx_symfile_info in objfile->sym_stab_info,
}
/* We first have to find them... */
- bfd_map_over_sections (abfd, elf_locate_sections, (PTR) & ei);
+ bfd_map_over_sections (abfd, elf_locate_sections, (void *) & ei);
/* ELF debugging information is inserted into the psymtab in the
order of least informative first - most informative last. Since
ei.lnoffset, ei.lnsize);
}
+ if (DWARF2_BUILD_FRAME_INFO_P ())
+ DWARF2_BUILD_FRAME_INFO(objfile);
+
/* Install any minimal symbols that have been collected as the current
minimal symbols for this objfile. */
stab_section_info's, that might be dangling from it. */
static void
-free_elfinfo (PTR objp)
+free_elfinfo (void *objp)
{
struct objfile *objfile = (struct objfile *) objp;
struct dbx_symfile_info *dbxinfo = objfile->sym_stab_info;
while (ssi)
{
nssi = ssi->next;
- mfree (objfile->md, ssi);
+ xmfree (objfile->md, ssi);
ssi = nssi;
}
{
if (objfile->sym_stab_info != NULL)
{
- mfree (objfile->md, objfile->sym_stab_info);
+ xmfree (objfile->md, objfile->sym_stab_info);
}
}