2002-12-20 David Carlton <carlton@math.stanford.edu>
[deliverable/binutils-gdb.git] / gdb / objfiles.c
index d307c2ab85d26e180956820cf554bfd13df9ec5f..9c5e49fde608a42ff6ec62d7efeb4f361892a9ac 100644 (file)
@@ -1,5 +1,8 @@
 /* GDB routines for manipulating objfiles.
 /* GDB routines for manipulating objfiles.
-   Copyright 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+
+   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2002 Free Software Foundation, Inc.
+
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
    This file is part of GDB.
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
    This file is part of GDB.
 #include "objfiles.h"
 #include "gdb-stabs.h"
 #include "target.h"
 #include "objfiles.h"
 #include "gdb-stabs.h"
 #include "target.h"
+#include "bcache.h"
 
 #include <sys/types.h>
 #include "gdb_stat.h"
 #include <fcntl.h>
 
 #include <sys/types.h>
 #include "gdb_stat.h"
 #include <fcntl.h>
-#include "obstack.h"
+#include "gdb_obstack.h"
 #include "gdb_string.h"
 
 #include "breakpoint.h"
 #include "gdb_string.h"
 
 #include "breakpoint.h"
 
 #if defined(USE_MMALLOC) && defined(HAVE_MMAP)
 
 
 #if defined(USE_MMALLOC) && defined(HAVE_MMAP)
 
-static int
-open_existing_mapped_file PARAMS ((char *, long, int));
+#include "mmalloc.h"
 
 
-static int
-open_mapped_file PARAMS ((char *filename, long mtime, int flags));
+static int open_existing_mapped_file (char *, long, int);
 
 
-static PTR
-  map_to_file PARAMS ((int));
+static int open_mapped_file (char *filename, long mtime, int flags);
+
+static PTR map_to_file (int);
 
 #endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
 
 
 #endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
 
-static void
-add_to_objfile_sections PARAMS ((bfd *, sec_ptr, PTR));
+static void add_to_objfile_sections (bfd *, sec_ptr, PTR);
 
 /* Externally visible variables that are owned by this module.
    See declarations in objfile.h for more info. */
 
 /* Externally visible variables that are owned by this module.
    See declarations in objfile.h for more info. */
@@ -80,10 +82,7 @@ int mapped_symbol_files;     /* Try to use mapped symbol files */
    the end of the table (objfile->sections_end). */
 
 static void
    the end of the table (objfile->sections_end). */
 
 static void
-add_to_objfile_sections (abfd, asect, objfile_p_char)
-     bfd *abfd;
-     sec_ptr asect;
-     PTR objfile_p_char;
+add_to_objfile_sections (bfd *abfd, sec_ptr asect, PTR objfile_p_char)
 {
   struct objfile *objfile = (struct objfile *) objfile_p_char;
   struct obj_section section;
 {
   struct objfile *objfile = (struct objfile *) objfile_p_char;
   struct obj_section section;
@@ -123,8 +122,7 @@ add_to_objfile_sections (abfd, asect, objfile_p_char)
    we are building the table, we're pretty much hosed. */
 
 int
    we are building the table, we're pretty much hosed. */
 
 int
-build_objfile_section_table (objfile)
-     struct objfile *objfile;
+build_objfile_section_table (struct objfile *objfile)
 {
   /* objfile->sections can be already set when reading a mapped symbol
      file.  I believe that we do need to rebuild the section table in
 {
   /* objfile->sections can be already set when reading a mapped symbol
      file.  I believe that we do need to rebuild the section table in
@@ -152,9 +150,7 @@ build_objfile_section_table (objfile)
    member. */
 
 struct objfile *
    member. */
 
 struct objfile *
-allocate_objfile (abfd, flags)
-     bfd *abfd;
-     int flags;
+allocate_objfile (bfd *abfd, int flags)
 {
   struct objfile *objfile = NULL;
   struct objfile *last_one = NULL;
 {
   struct objfile *objfile = NULL;
   struct objfile *last_one = NULL;
@@ -196,13 +192,15 @@ allocate_objfile (abfd, flags)
              objfile->mmfd = fd;
              /* Update pointers to functions to *our* copies */
              obstack_chunkfun (&objfile->psymbol_cache.cache, xmmalloc);
              objfile->mmfd = fd;
              /* Update pointers to functions to *our* copies */
              obstack_chunkfun (&objfile->psymbol_cache.cache, xmmalloc);
-             obstack_freefun (&objfile->psymbol_cache.cache, mfree);
+             obstack_freefun (&objfile->psymbol_cache.cache, xmfree);
+             obstack_chunkfun (&objfile->macro_cache.cache, xmmalloc);
+             obstack_freefun (&objfile->macro_cache.cache, xmfree);
              obstack_chunkfun (&objfile->psymbol_obstack, xmmalloc);
              obstack_chunkfun (&objfile->psymbol_obstack, xmmalloc);
-             obstack_freefun (&objfile->psymbol_obstack, mfree);
+             obstack_freefun (&objfile->psymbol_obstack, xmfree);
              obstack_chunkfun (&objfile->symbol_obstack, xmmalloc);
              obstack_chunkfun (&objfile->symbol_obstack, xmmalloc);
-             obstack_freefun (&objfile->symbol_obstack, mfree);
+             obstack_freefun (&objfile->symbol_obstack, xmfree);
              obstack_chunkfun (&objfile->type_obstack, xmmalloc);
              obstack_chunkfun (&objfile->type_obstack, xmmalloc);
-             obstack_freefun (&objfile->type_obstack, mfree);
+             obstack_freefun (&objfile->type_obstack, xmfree);
              /* If already in objfile list, unlink it. */
              unlink_objfile (objfile);
              /* Forget things specific to a particular gdb, may have changed. */
              /* If already in objfile list, unlink it. */
              unlink_objfile (objfile);
              /* Forget things specific to a particular gdb, may have changed. */
@@ -225,16 +223,19 @@ allocate_objfile (abfd, flags)
              objfile->flags |= OBJF_MAPPED;
              mmalloc_setkey (objfile->md, 0, objfile);
              obstack_specify_allocation_with_arg (&objfile->psymbol_cache.cache,
              objfile->flags |= OBJF_MAPPED;
              mmalloc_setkey (objfile->md, 0, objfile);
              obstack_specify_allocation_with_arg (&objfile->psymbol_cache.cache,
-                                                  0, 0, xmmalloc, mfree,
+                                                  0, 0, xmmalloc, xmfree,
+                                                  objfile->md);
+             obstack_specify_allocation_with_arg (&objfile->macro_cache.cache,
+                                                  0, 0, xmmalloc, xmfree,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->psymbol_obstack,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->psymbol_obstack,
-                                                  0, 0, xmmalloc, mfree,
+                                                  0, 0, xmmalloc, xmfree,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->symbol_obstack,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->symbol_obstack,
-                                                  0, 0, xmmalloc, mfree,
+                                                  0, 0, xmmalloc, xmfree,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->type_obstack,
                                                   objfile->md);
              obstack_specify_allocation_with_arg (&objfile->type_obstack,
-                                                  0, 0, xmmalloc, mfree,
+                                                  0, 0, xmmalloc, xmfree,
                                                   objfile->md);
            }
        }
                                                   objfile->md);
            }
        }
@@ -271,14 +272,14 @@ allocate_objfile (abfd, flags)
       objfile = (struct objfile *) xmalloc (sizeof (struct objfile));
       memset (objfile, 0, sizeof (struct objfile));
       objfile->md = NULL;
       objfile = (struct objfile *) xmalloc (sizeof (struct objfile));
       memset (objfile, 0, sizeof (struct objfile));
       objfile->md = NULL;
-      obstack_specify_allocation (&objfile->psymbol_cache.cache, 0, 0,
-                                 xmalloc, free);
+      objfile->psymbol_cache = bcache_xmalloc ();
+      objfile->macro_cache = bcache_xmalloc ();
       obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, xmalloc,
       obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, xmalloc,
-                                 free);
+                                 xfree);
       obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc,
       obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc,
-                                 free);
+                                 xfree);
       obstack_specify_allocation (&objfile->type_obstack, 0, 0, xmalloc,
       obstack_specify_allocation (&objfile->type_obstack, 0, 0, xmalloc,
-                                 free);
+                                 xfree);
       flags &= ~OBJF_MAPPED;
     }
 
       flags &= ~OBJF_MAPPED;
     }
 
@@ -289,7 +290,7 @@ allocate_objfile (abfd, flags)
   objfile->obfd = abfd;
   if (objfile->name != NULL)
     {
   objfile->obfd = abfd;
   if (objfile->name != NULL)
     {
-      mfree (objfile->md, objfile->name);
+      xmfree (objfile->md, objfile->name);
     }
   if (abfd != NULL)
     {
     }
   if (abfd != NULL)
     {
@@ -335,8 +336,7 @@ allocate_objfile (abfd, flags)
 /* Put OBJFILE at the front of the list.  */
 
 void
 /* Put OBJFILE at the front of the list.  */
 
 void
-objfile_to_front (objfile)
-     struct objfile *objfile;
+objfile_to_front (struct objfile *objfile)
 {
   struct objfile **objp;
   for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
 {
   struct objfile **objp;
   for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
@@ -367,8 +367,7 @@ objfile_to_front (objfile)
    between the OBJFILE and the list. */
 
 void
    between the OBJFILE and the list. */
 
 void
-unlink_objfile (objfile)
-     struct objfile *objfile;
+unlink_objfile (struct objfile *objfile)
 {
   struct objfile **objpp;
 
 {
   struct objfile **objpp;
 
@@ -382,7 +381,8 @@ unlink_objfile (objfile)
        }
     }
 
        }
     }
 
-  internal_error ("objfiles.c (unlink_objfile): objfile already unlinked");
+  internal_error (__FILE__, __LINE__,
+                 "unlink_objfile: objfile already unlinked");
 }
 
 
 }
 
 
@@ -403,8 +403,7 @@ unlink_objfile (objfile)
    we free objects in the reusable area. */
 
 void
    we free objects in the reusable area. */
 
 void
-free_objfile (objfile)
-     struct objfile *objfile;
+free_objfile (struct objfile *objfile)
 {
   /* First do any symbol file specific actions required when we are
      finished with a particular symbol file.  Note that if the objfile
 {
   /* First do any symbol file specific actions required when we are
      finished with a particular symbol file.  Note that if the objfile
@@ -426,7 +425,7 @@ free_objfile (objfile)
       if (!bfd_close (objfile->obfd))
        warning ("cannot close \"%s\": %s",
                 name, bfd_errmsg (bfd_get_error ()));
       if (!bfd_close (objfile->obfd))
        warning ("cannot close \"%s\": %s",
                 name, bfd_errmsg (bfd_get_error ()));
-      free (name);
+      xfree (name);
     }
 
   /* Remove it from the chain of all objfiles. */
     }
 
   /* Remove it from the chain of all objfiles. */
@@ -451,9 +450,9 @@ free_objfile (objfile)
   clear_pc_function_cache ();
 
   /* The last thing we do is free the objfile struct itself for the
   clear_pc_function_cache ();
 
   /* The last thing we do is free the objfile struct itself for the
-     non-reusable case, or detach from the mapped file for the reusable
-     case.  Note that the mmalloc_detach or the mfree is the last thing
-     we can do with this objfile. */
+     non-reusable case, or detach from the mapped file for the
+     reusable case.  Note that the mmalloc_detach or the xmfree() is
+     the last thing we can do with this objfile. */
 
 #if defined(USE_MMALLOC) && defined(HAVE_MMAP)
 
 
 #if defined(USE_MMALLOC) && defined(HAVE_MMAP)
 
@@ -478,27 +477,39 @@ free_objfile (objfile)
     {
       if (objfile->name != NULL)
        {
     {
       if (objfile->name != NULL)
        {
-         mfree (objfile->md, objfile->name);
+         xmfree (objfile->md, objfile->name);
        }
       if (objfile->global_psymbols.list)
        }
       if (objfile->global_psymbols.list)
-       mfree (objfile->md, objfile->global_psymbols.list);
+       xmfree (objfile->md, objfile->global_psymbols.list);
       if (objfile->static_psymbols.list)
       if (objfile->static_psymbols.list)
-       mfree (objfile->md, objfile->static_psymbols.list);
+       xmfree (objfile->md, objfile->static_psymbols.list);
       /* Free the obstacks for non-reusable objfiles */
       /* Free the obstacks for non-reusable objfiles */
-      free_bcache (&objfile->psymbol_cache);
+      bcache_xfree (objfile->psymbol_cache);
+      bcache_xfree (objfile->macro_cache);
       obstack_free (&objfile->psymbol_obstack, 0);
       obstack_free (&objfile->symbol_obstack, 0);
       obstack_free (&objfile->type_obstack, 0);
       obstack_free (&objfile->psymbol_obstack, 0);
       obstack_free (&objfile->symbol_obstack, 0);
       obstack_free (&objfile->type_obstack, 0);
-      mfree (objfile->md, objfile);
+      xmfree (objfile->md, objfile);
       objfile = NULL;
     }
 }
 
       objfile = NULL;
     }
 }
 
+static void
+do_free_objfile_cleanup (void *obj)
+{
+  free_objfile (obj);
+}
+
+struct cleanup *
+make_cleanup_free_objfile (struct objfile *obj)
+{
+  return make_cleanup (do_free_objfile_cleanup, obj);
+}
 
 /* Free all the object files at once and clean up their users.  */
 
 void
 
 /* Free all the object files at once and clean up their users.  */
 
 void
-free_all_objfiles ()
+free_all_objfiles (void)
 {
   struct objfile *objfile, *temp;
 
 {
   struct objfile *objfile, *temp;
 
@@ -512,9 +523,7 @@ free_all_objfiles ()
 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
    entries in new_offsets.  */
 void
 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
    entries in new_offsets.  */
 void
-objfile_relocate (objfile, new_offsets)
-     struct objfile *objfile;
-     struct section_offsets *new_offsets;
+objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
 {
   struct section_offsets *delta =
     (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
 {
   struct section_offsets *delta =
     (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
@@ -524,7 +533,7 @@ objfile_relocate (objfile, new_offsets)
     int something_changed = 0;
     for (i = 0; i < objfile->num_sections; ++i)
       {
     int something_changed = 0;
     for (i = 0; i < objfile->num_sections; ++i)
       {
-       ANOFFSET (delta, i) =
+       delta->offsets[i] =
          ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
        if (ANOFFSET (delta, i) != 0)
          something_changed = 1;
          ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
        if (ANOFFSET (delta, i) != 0)
          something_changed = 1;
@@ -559,15 +568,17 @@ objfile_relocate (objfile, new_offsets)
       for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
        {
          struct block *b;
       for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
        {
          struct block *b;
+         struct symbol *sym;
          int j;
 
          b = BLOCKVECTOR_BLOCK (bv, i);
          BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
          BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
 
          int j;
 
          b = BLOCKVECTOR_BLOCK (bv, i);
          BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
          BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
 
-         for (j = 0; j < BLOCK_NSYMS (b); ++j)
+         ALL_BLOCK_SYMBOLS (b, j, sym)
            {
            {
-             struct symbol *sym = BLOCK_SYM (b, j);
+             fixup_symbol_section (sym, objfile);
+
              /* The RS6000 code from which this was taken skipped
                 any symbols in STRUCT_NAMESPACE or UNDEF_NAMESPACE.
                 But I'm leaving out that test, on the theory that
              /* The RS6000 code from which this was taken skipped
                 any symbols in STRUCT_NAMESPACE or UNDEF_NAMESPACE.
                 But I'm leaving out that test, on the theory that
@@ -585,7 +596,7 @@ objfile_relocate (objfile, new_offsets)
 
              else if (SYMBOL_CLASS (sym) == LOC_CONST
                       && SYMBOL_NAMESPACE (sym) == LABEL_NAMESPACE
 
              else if (SYMBOL_CLASS (sym) == LOC_CONST
                       && SYMBOL_NAMESPACE (sym) == LABEL_NAMESPACE
-                  && STRCMP (SYMBOL_NAME (sym), MIPS_EFI_SYMBOL_NAME) == 0)
+                      && strcmp (SYMBOL_NAME (sym), MIPS_EFI_SYMBOL_NAME) == 0)
                ecoff_relocate_efi (sym, ANOFFSET (delta,
                                                   s->block_line_section));
 #endif
                ecoff_relocate_efi (sym, ANOFFSET (delta,
                                                   s->block_line_section));
 #endif
@@ -610,15 +621,21 @@ objfile_relocate (objfile, new_offsets)
     for (psym = objfile->global_psymbols.list;
         psym < objfile->global_psymbols.next;
         psym++)
     for (psym = objfile->global_psymbols.list;
         psym < objfile->global_psymbols.next;
         psym++)
-      if (SYMBOL_SECTION (*psym) >= 0)
-       SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta,
-                                                 SYMBOL_SECTION (*psym));
+      {
+       fixup_psymbol_section (*psym, objfile);
+       if (SYMBOL_SECTION (*psym) >= 0)
+         SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta,
+                                                   SYMBOL_SECTION (*psym));
+      }
     for (psym = objfile->static_psymbols.list;
         psym < objfile->static_psymbols.next;
         psym++)
     for (psym = objfile->static_psymbols.list;
         psym < objfile->static_psymbols.next;
         psym++)
-      if (SYMBOL_SECTION (*psym) >= 0)
-       SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta,
-                                                 SYMBOL_SECTION (*psym));
+      {
+       fixup_psymbol_section (*psym, objfile);
+       if (SYMBOL_SECTION (*psym) >= 0)
+         SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta,
+                                                   SYMBOL_SECTION (*psym));
+      }
   }
 
   {
   }
 
   {
@@ -634,9 +651,21 @@ objfile_relocate (objfile, new_offsets)
   {
     int i;
     for (i = 0; i < objfile->num_sections; ++i)
   {
     int i;
     for (i = 0; i < objfile->num_sections; ++i)
-      ANOFFSET (objfile->section_offsets, i) = ANOFFSET (new_offsets, i);
+      (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
   }
 
   }
 
+  if (objfile->ei.entry_point != ~(CORE_ADDR) 0)
+    {
+      /* Relocate ei.entry_point with its section offset, use SECT_OFF_TEXT
+        only as a fallback.  */
+      struct obj_section *s;
+      s = find_pc_section (objfile->ei.entry_point);
+      if (s)
+        objfile->ei.entry_point += ANOFFSET (delta, s->the_bfd_section->index);
+      else
+        objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+    }
+
   {
     struct obj_section *s;
     bfd *abfd;
   {
     struct obj_section *s;
     bfd *abfd;
@@ -645,31 +674,13 @@ objfile_relocate (objfile, new_offsets)
 
     ALL_OBJFILE_OSECTIONS (objfile, s)
       {
 
     ALL_OBJFILE_OSECTIONS (objfile, s)
       {
-       flagword flags;
-
-       flags = bfd_get_section_flags (abfd, s->the_bfd_section);
-
-       if (flags & SEC_CODE)
-         {
-           s->addr += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
-           s->endaddr += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
-         }
-       else if (flags & (SEC_DATA | SEC_LOAD))
-         {
-           s->addr += ANOFFSET (delta, SECT_OFF_DATA (objfile));
-           s->endaddr += ANOFFSET (delta, SECT_OFF_DATA (objfile));
-         }
-       else if (flags & SEC_ALLOC)
-         {
-           s->addr += ANOFFSET (delta, SECT_OFF_BSS (objfile));
-           s->endaddr += ANOFFSET (delta, SECT_OFF_BSS (objfile));
-         }
+       int idx = s->the_bfd_section->index;
+       
+       s->addr += ANOFFSET (delta, idx);
+       s->endaddr += ANOFFSET (delta, idx);
       }
   }
 
       }
   }
 
-  if (objfile->ei.entry_point != ~(CORE_ADDR) 0)
-    objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
-
   if (objfile->ei.entry_func_lowpc != INVALID_ENTRY_LOWPC)
     {
       objfile->ei.entry_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
   if (objfile->ei.entry_func_lowpc != INVALID_ENTRY_LOWPC)
     {
       objfile->ei.entry_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
@@ -697,7 +708,7 @@ objfile_relocate (objfile, new_offsets)
    available, nonzero otherwise. */
 
 int
    available, nonzero otherwise. */
 
 int
-have_partial_symbols ()
+have_partial_symbols (void)
 {
   struct objfile *ofp;
 
 {
   struct objfile *ofp;
 
@@ -716,7 +727,7 @@ have_partial_symbols ()
    available, nonzero otherwise. */
 
 int
    available, nonzero otherwise. */
 
 int
-have_full_symbols ()
+have_full_symbols (void)
 {
   struct objfile *ofp;
 
 {
   struct objfile *ofp;
 
@@ -736,7 +747,7 @@ have_full_symbols ()
    command.
  */
 void
    command.
  */
 void
-objfile_purge_solibs ()
+objfile_purge_solibs (void)
 {
   struct objfile *objf;
   struct objfile *temp;
 {
   struct objfile *objf;
   struct objfile *temp;
@@ -757,7 +768,7 @@ objfile_purge_solibs ()
    available, nonzero otherwise. */
 
 int
    available, nonzero otherwise. */
 
 int
-have_minimal_symbols ()
+have_minimal_symbols (void)
 {
   struct objfile *ofp;
 
 {
   struct objfile *ofp;
 
@@ -793,10 +804,7 @@ have_minimal_symbols ()
    Otherwise, returns the open file descriptor.  */
 
 static int
    Otherwise, returns the open file descriptor.  */
 
 static int
-open_existing_mapped_file (symsfilename, mtime, flags)
-     char *symsfilename;
-     long mtime;
-     int flags;
+open_existing_mapped_file (char *symsfilename, long mtime, int flags)
 {
   int fd = -1;
   struct stat sbuf;
 {
   int fd = -1;
   struct stat sbuf;
@@ -848,10 +856,7 @@ open_existing_mapped_file (symsfilename, mtime, flags)
    /bin for example).  */
 
 static int
    /bin for example).  */
 
 static int
-open_mapped_file (filename, mtime, flags)
-     char *filename;
-     long mtime;
-     int flags;
+open_mapped_file (char *filename, long mtime, int flags)
 {
   int fd;
   char *symsfilename;
 {
   int fd;
   char *symsfilename;
@@ -859,10 +864,10 @@ open_mapped_file (filename, mtime, flags)
   /* First try to open an existing file in the current directory, and
      then try the directory where the symbol file is located. */
 
   /* First try to open an existing file in the current directory, and
      then try the directory where the symbol file is located. */
 
-  symsfilename = concat ("./", basename (filename), ".syms", (char *) NULL);
+  symsfilename = concat ("./", lbasename (filename), ".syms", (char *) NULL);
   if ((fd = open_existing_mapped_file (symsfilename, mtime, flags)) < 0)
     {
   if ((fd = open_existing_mapped_file (symsfilename, mtime, flags)) < 0)
     {
-      free (symsfilename);
+      xfree (symsfilename);
       symsfilename = concat (filename, ".syms", (char *) NULL);
       fd = open_existing_mapped_file (symsfilename, mtime, flags);
     }
       symsfilename = concat (filename, ".syms", (char *) NULL);
       fd = open_existing_mapped_file (symsfilename, mtime, flags);
     }
@@ -878,8 +883,8 @@ open_mapped_file (filename, mtime, flags)
 
   if ((fd < 0) && (flags & OBJF_MAPPED))
     {
 
   if ((fd < 0) && (flags & OBJF_MAPPED))
     {
-      free (symsfilename);
-      symsfilename = concat ("./", basename (filename), ".syms",
+      xfree (symsfilename);
+      symsfilename = concat ("./", lbasename (filename), ".syms",
                             (char *) NULL);
       if ((fd = open (symsfilename, O_RDWR | O_CREAT | O_TRUNC, 0666)) < 0)
        {
                             (char *) NULL);
       if ((fd = open (symsfilename, O_RDWR | O_CREAT | O_TRUNC, 0666)) < 0)
        {
@@ -891,13 +896,12 @@ open_mapped_file (filename, mtime, flags)
        }
     }
 
        }
     }
 
-  free (symsfilename);
+  xfree (symsfilename);
   return (fd);
 }
 
 static PTR
   return (fd);
 }
 
 static PTR
-map_to_file (fd)
-     int fd;
+map_to_file (int fd)
 {
   PTR md;
   CORE_ADDR mapto;
 {
   PTR md;
   CORE_ADDR mapto;
@@ -947,9 +951,7 @@ map_to_file (fd)
    contains a pointer to the bfd struct sec section.  */
 
 struct obj_section *
    contains a pointer to the bfd struct sec section.  */
 
 struct obj_section *
-find_pc_sect_section (pc, section)
-     CORE_ADDR pc;
-     struct sec *section;
+find_pc_sect_section (CORE_ADDR pc, struct sec *section)
 {
   struct obj_section *s;
   struct objfile *objfile;
 {
   struct obj_section *s;
   struct objfile *objfile;
@@ -966,8 +968,7 @@ find_pc_sect_section (pc, section)
    Backward compatibility, no section.  */
 
 struct obj_section *
    Backward compatibility, no section.  */
 
 struct obj_section *
-find_pc_section (pc)
-     CORE_ADDR pc;
+find_pc_section (CORE_ADDR pc)
 {
   return find_pc_sect_section (pc, find_pc_mapped_section (pc));
 }
 {
   return find_pc_sect_section (pc, find_pc_mapped_section (pc));
 }
@@ -978,9 +979,7 @@ find_pc_section (pc)
    a trampoline.  */
 
 int
    a trampoline.  */
 
 int
-in_plt_section (pc, name)
-     CORE_ADDR pc;
-     char *name;
+in_plt_section (CORE_ADDR pc, char *name)
 {
   struct obj_section *s;
   int retval = 0;
 {
   struct obj_section *s;
   int retval = 0;
@@ -997,9 +996,7 @@ in_plt_section (pc, name)
    return zero.  */
 
 int
    return zero.  */
 
 int
-is_in_import_list (name, objfile)
-     char *name;
-     struct objfile *objfile;
+is_in_import_list (char *name, struct objfile *objfile)
 {
   register int i;
 
 {
   register int i;
 
This page took 0.032013 seconds and 4 git commands to generate.