* top.c (init_main): Make `set history file name' complete on file
[deliverable/binutils-gdb.git] / gdb / coffread.c
index c781a34f18fc6dab0aaeba29749f6a6fa3e08fa8..526e0e40c9efbcae92dd324e55e2d864663dbbec 100644 (file)
@@ -1,5 +1,6 @@
 /* Read coff symbol tables and convert to internal format, for GDB.
-   Copyright 1987, 88, 89, 90, 91, 92, 93, 94, 96, 97, 1998
+   Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+   1997, 1998, 1999, 2000
    Free Software Foundation, Inc.
    Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
 
@@ -68,14 +69,6 @@ struct coff_symfile_info
 
 #define SDB_TYPE(type) (BTYPE(type) | (type & N_TMASK))
 
-/* Convert from an sdb register number to an internal gdb register number.
-   This should be defined in tm.h, if REGISTER_NAMES is not set up
-   to map one to one onto the sdb register numbers.  */
-
-#ifndef SDB_REG_TO_REGNUM
-#define SDB_REG_TO_REGNUM(value)     (value)
-#endif
-
 /* Core address of start and end of text of current source file.
    This comes from a ".text" symbol where x_nlinno > 0.  */
 
@@ -260,10 +253,7 @@ static void coff_locate_sections (bfd *, asection *, PTR);
    -kingdon).  */
 
 static void
-coff_locate_sections (abfd, sectp, csip)
-     bfd *abfd;
-     asection *sectp;
-     PTR csip;
+coff_locate_sections (bfd *abfd, asection *sectp, PTR csip)
 {
   register struct coff_symfile_info *csi;
   const char *name;
@@ -307,7 +297,7 @@ coff_locate_sections (abfd, sectp, csip)
          /* This will be run after coffstab_build_psymtabs is called
             in coff_symfile_read, at which point we no longer need
             the information.  */
-         make_cleanup (free, n);
+         make_cleanup (xfree, n);
        }
     }
 }
@@ -324,10 +314,7 @@ struct find_targ_sec_arg
 static void find_targ_sec (bfd *, asection *, void *);
 
 static void
-find_targ_sec (abfd, sect, obj)
-     bfd *abfd;
-     asection *sect;
-     PTR obj;
+find_targ_sec (bfd *abfd, asection *sect, PTR obj)
 {
   struct find_targ_sec_arg *args = (struct find_targ_sec_arg *) obj;
   if (sect->target_index == args->targ_index)
@@ -336,9 +323,7 @@ find_targ_sec (abfd, sect, obj)
 
 /* Return the section number (SECT_OFF_*) that CS points to.  */
 static int
-cs_to_section (cs, objfile)
-     struct coff_symbol *cs;
-     struct objfile *objfile;
+cs_to_section (struct coff_symbol *cs, struct objfile *objfile)
 {
   asection *sect = NULL;
   struct find_targ_sec_arg args;
@@ -355,7 +340,8 @@ cs_to_section (cs, objfile)
       else if (bfd_get_section_flags (abfd, sect) & SEC_LOAD)
        off = SECT_OFF_DATA (objfile);
       else
-       off = SECT_OFF_BSS (objfile);
+       /* Just return the bfd section index. */
+       off = sect->index;
     }
   return off;
 }
@@ -365,9 +351,7 @@ cs_to_section (cs, objfile)
 static CORE_ADDR cs_section_address (struct coff_symbol *, bfd *);
 
 static CORE_ADDR
-cs_section_address (cs, abfd)
-     struct coff_symbol *cs;
-     bfd *abfd;
+cs_section_address (struct coff_symbol *cs, bfd *abfd)
 {
   asection *sect = NULL;
   struct find_targ_sec_arg args;
@@ -389,8 +373,7 @@ cs_section_address (cs, abfd)
    or for associating a new type with the index.  */
 
 static struct type **
-coff_lookup_type (index)
-     register int index;
+coff_lookup_type (register int index)
 {
   if (index >= type_vector_length)
     {
@@ -414,8 +397,7 @@ coff_lookup_type (index)
    This can create an empty (zeroed) type object.  */
 
 static struct type *
-coff_alloc_type (index)
-     int index;
+coff_alloc_type (int index)
 {
   register struct type **type_addr = coff_lookup_type (index);
   register struct type *type = *type_addr;
@@ -436,8 +418,7 @@ coff_alloc_type (index)
    it indicates the start of data for one original source file.  */
 
 static void
-coff_start_symtab (name)
-     char *name;
+coff_start_symtab (char *name)
 {
   start_symtab (
   /* We fill in the filename later.  start_symtab puts
@@ -459,13 +440,10 @@ coff_start_symtab (name)
    text address for the file, and SIZE is the number of bytes of text.  */
 
 static void
-complete_symtab (name, start_addr, size)
-     char *name;
-     CORE_ADDR start_addr;
-     unsigned int size;
+complete_symtab (char *name, CORE_ADDR start_addr, unsigned int size)
 {
   if (last_source_file != NULL)
-    free (last_source_file);
+    xfree (last_source_file);
   last_source_file = savestring (name, strlen (name));
   current_source_start_addr = start_addr;
   current_source_end_addr = start_addr + size;
@@ -484,14 +462,13 @@ complete_symtab (name, start_addr, size)
    struct symtab for that file and put it in the list of all such. */
 
 static void
-coff_end_symtab (objfile)
-     struct objfile *objfile;
+coff_end_symtab (struct objfile *objfile)
 {
   struct symtab *symtab;
 
   last_source_start_addr = current_source_start_addr;
 
-  symtab = end_symtab (current_source_end_addr, objfile, 0);
+  symtab = end_symtab (current_source_end_addr, objfile, SECT_OFF_TEXT (objfile));
 
   if (symtab != NULL)
     free_named_symtabs (symtab->filename);
@@ -501,11 +478,8 @@ coff_end_symtab (objfile)
 }
 \f
 static void
-record_minimal_symbol (name, address, type, objfile)
-     char *name;
-     CORE_ADDR address;
-     enum minimal_symbol_type type;
-     struct objfile *objfile;
+record_minimal_symbol (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] == '@')
@@ -528,8 +502,7 @@ record_minimal_symbol (name, address, type, objfile)
    The ultimate result is a new symtab (or, FIXME, eventually a psymtab).  */
 
 static void
-coff_symfile_init (objfile)
-     struct objfile *objfile;
+coff_symfile_init (struct objfile *objfile)
 {
   /* Allocate struct to keep track of stab reading. */
   objfile->sym_stab_info = (struct dbx_symfile_info *)
@@ -557,10 +530,7 @@ coff_symfile_init (objfile)
 
 /* ARGSUSED */
 static void
-find_linenos (abfd, asect, vpinfo)
-     bfd *abfd;
-     sec_ptr asect;
-     PTR vpinfo;
+find_linenos (bfd *abfd, sec_ptr asect, PTR vpinfo)
 {
   struct coff_symfile_info *info;
   int size, count;
@@ -597,9 +567,7 @@ static bfd *symfile_bfd;
 
 /* ARGSUSED */
 static void
-coff_symfile_read (objfile, mainline)
-     struct objfile *objfile;
-     int mainline;
+coff_symfile_read (struct objfile *objfile, int mainline)
 {
   struct coff_symfile_info *info;
   struct dbx_symfile_info *dbxinfo;
@@ -725,8 +693,7 @@ coff_symfile_read (objfile, mainline)
 }
 
 static void
-coff_new_init (ignore)
-     struct objfile *ignore;
+coff_new_init (struct objfile *ignore)
 {
 }
 
@@ -736,8 +703,7 @@ coff_new_init (ignore)
    objfile struct from the global list of known objfiles. */
 
 static void
-coff_symfile_finish (objfile)
-     struct objfile *objfile;
+coff_symfile_finish (struct objfile *objfile)
 {
   if (objfile->sym_private != NULL)
     {
@@ -755,10 +721,8 @@ coff_symfile_finish (objfile)
    We read them one at a time using read_one_sym ().  */
 
 static void
-coff_symtab_read (symtab_offset, nsyms, objfile)
-     long symtab_offset;
-     unsigned int nsyms;
-     struct objfile *objfile;
+coff_symtab_read (long symtab_offset, unsigned int nsyms,
+                 struct objfile *objfile)
 {
   register struct context_stack *new;
   struct coff_symbol coff_symbol;
@@ -811,7 +775,7 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
   memset (opaque_type_chain, 0, sizeof opaque_type_chain);
 
   if (type_vector)             /* Get rid of previous one */
-    free ((PTR) type_vector);
+    xfree (type_vector);
   type_vector_length = 160;
   type_vector = (struct type **)
     xmalloc (type_vector_length * sizeof (struct type *));
@@ -1169,10 +1133,9 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
    in internal_auxent form, and skip any other auxents.  */
 
 static void
-read_one_sym (cs, sym, aux)
-     register struct coff_symbol *cs;
-     register struct internal_syment *sym;
-     register union internal_auxent *aux;
+read_one_sym (register struct coff_symbol *cs,
+             register struct internal_syment *sym,
+             register union internal_auxent *aux)
 {
   int i;
 
@@ -1239,9 +1202,7 @@ read_one_sym (cs, sym, aux)
 static char *stringtab = NULL;
 
 static int
-init_stringtab (abfd, offset)
-     bfd *abfd;
-     long offset;
+init_stringtab (bfd *abfd, long offset)
 {
   long length;
   int val;
@@ -1280,10 +1241,10 @@ init_stringtab (abfd, offset)
 }
 
 static void
-free_stringtab ()
+free_stringtab (void)
 {
   if (stringtab)
-    free (stringtab);
+    xfree (stringtab);
   stringtab = NULL;
 }
 
@@ -1294,8 +1255,7 @@ free_stringtab_cleanup (void *ignore)
 }
 
 static char *
-getsymname (symbol_entry)
-     struct internal_syment *symbol_entry;
+getsymname (struct internal_syment *symbol_entry)
 {
   static char buffer[SYMNMLEN + 1];
   char *result;
@@ -1320,8 +1280,7 @@ getsymname (symbol_entry)
    is only good for temporary use.  */
 
 static char *
-coff_getfilename (aux_entry)
-     union internal_auxent *aux_entry;
+coff_getfilename (union internal_auxent *aux_entry)
 {
   static char buffer[BUFSIZ];
   register char *temp;
@@ -1355,10 +1314,7 @@ static unsigned long linetab_size;
    them into GDB's data structures.  */
 
 static int
-init_lineno (abfd, offset, size)
-     bfd *abfd;
-     long offset;
-     int size;
+init_lineno (bfd *abfd, long offset, int size)
 {
   int val;
 
@@ -1387,10 +1343,10 @@ init_lineno (abfd, offset, size)
 }
 
 static void
-free_linetab ()
+free_linetab (void)
 {
   if (linetab)
-    free (linetab);
+    xfree (linetab);
   linetab = NULL;
 }
 
@@ -1405,11 +1361,8 @@ free_linetab_cleanup (void *ignore)
 #endif
 
 static void
-enter_linenos (file_offset, first_line, last_line, objfile)
-     long file_offset;
-     register int first_line;
-     register int last_line;
-     struct objfile *objfile;
+enter_linenos (long file_offset, register int first_line,
+              register int last_line, struct objfile *objfile)
 {
   register char *rawptr;
   struct internal_lineno lptr;
@@ -1446,9 +1399,7 @@ enter_linenos (file_offset, first_line, last_line, objfile)
 }
 \f
 static void
-patch_type (type, real_type)
-     struct type *type;
-     struct type *real_type;
+patch_type (struct type *type, struct type *real_type)
 {
   register struct type *target = TYPE_TARGET_TYPE (type);
   register struct type *real_target = TYPE_TARGET_TYPE (real_type);
@@ -1463,7 +1414,7 @@ patch_type (type, real_type)
   if (TYPE_NAME (real_target))
     {
       if (TYPE_NAME (target))
-       free (TYPE_NAME (target));
+       xfree (TYPE_NAME (target));
       TYPE_NAME (target) = concat (TYPE_NAME (real_target), NULL);
     }
 }
@@ -1472,8 +1423,7 @@ patch_type (type, real_type)
    so that they can be used to print out opaque data structures properly.  */
 
 static void
-patch_opaque_types (s)
-     struct symtab *s;
+patch_opaque_types (struct symtab *s)
 {
   register struct block *b;
   register int i;
@@ -1534,10 +1484,9 @@ patch_opaque_types (s)
 }
 \f
 static struct symbol *
-process_coff_symbol (cs, aux, objfile)
-     register struct coff_symbol *cs;
-     register union internal_auxent *aux;
-     struct objfile *objfile;
+process_coff_symbol (register struct coff_symbol *cs,
+                    register union internal_auxent *aux,
+                    struct objfile *objfile)
 {
   register struct symbol *sym
   = (struct symbol *) obstack_alloc (&objfile->symbol_obstack,
@@ -1761,10 +1710,8 @@ process_coff_symbol (cs, aux, objfile)
 /* Decode a coff type specifier;  return the type that is meant.  */
 
 static struct type *
-decode_type (cs, c_type, aux)
-     register struct coff_symbol *cs;
-     unsigned int c_type;
-     register union internal_auxent *aux;
+decode_type (register struct coff_symbol *cs, unsigned int c_type,
+            register union internal_auxent *aux)
 {
   register struct type *type = 0;
   unsigned int new_c_type;
@@ -1842,10 +1789,8 @@ decode_type (cs, c_type, aux)
    return the type that the function returns.  */
 
 static struct type *
-decode_function_type (cs, c_type, aux)
-     register struct coff_symbol *cs;
-     unsigned int c_type;
-     register union internal_auxent *aux;
+decode_function_type (register struct coff_symbol *cs, unsigned int c_type,
+                     register union internal_auxent *aux)
 {
   if (aux->x_sym.x_tagndx.l == 0)
     cs->c_naux = 0;            /* auxent refers to function, not base type */
@@ -1856,10 +1801,8 @@ decode_function_type (cs, c_type, aux)
 /* basic C types */
 
 static struct type *
-decode_base_type (cs, c_type, aux)
-     register struct coff_symbol *cs;
-     unsigned int c_type;
-     register union internal_auxent *aux;
+decode_base_type (register struct coff_symbol *cs, unsigned int c_type,
+                 register union internal_auxent *aux)
 {
   struct type *type;
 
@@ -2010,10 +1953,7 @@ decode_base_type (cs, c_type, aux)
    object describing the type.  */
 
 static struct type *
-coff_read_struct_type (index, length, lastsym)
-     int index;
-     int length;
-     int lastsym;
+coff_read_struct_type (int index, int length, int lastsym)
 {
   struct nextfield
     {
@@ -2108,10 +2048,7 @@ coff_read_struct_type (index, length, lastsym)
 
 /* ARGSUSED */
 static struct type *
-coff_read_enum_type (index, length, lastsym)
-     int index;
-     int length;
-     int lastsym;
+coff_read_enum_type (int index, int length, int lastsym)
 {
   register struct symbol *sym;
   register struct type *type;
@@ -2228,7 +2165,7 @@ static struct sym_fns coff_sym_fns =
 };
 
 void
-_initialize_coffread ()
+_initialize_coffread (void)
 {
   add_symtab_fns (&coff_sym_fns);
 }
This page took 0.028626 seconds and 4 git commands to generate.