X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fcoffread.c;h=526e0e40c9efbcae92dd324e55e2d864663dbbec;hb=7a1bd56a086cb8e81095bc373f0aadc0fe91fa8e;hp=c781a34f18fc6dab0aaeba29749f6a6fa3e08fa8;hpb=34e924c0665d359ed95eda418be085e2c49a1e7c;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/coffread.c b/gdb/coffread.c index c781a34f18..526e0e40c9 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -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) } 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) } 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) } 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); }