diff options
author | Jason Molenda <jmolenda@apple.com> | 1999-07-07 20:19:36 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 1999-07-07 20:19:36 +0000 |
commit | c5aa993b1f4add48fbdc6cc3117059f616e49875 (patch) | |
tree | c809d06515a34428cc8df5f758fbc1b6117d4c30 /gdb/dbxread.c | |
parent | 3a4b77d8bee950afce6f9702aa65dc0e60817a82 (diff) | |
download | gdb-c5aa993b1f4add48fbdc6cc3117059f616e49875.zip gdb-c5aa993b1f4add48fbdc6cc3117059f616e49875.tar.gz gdb-c5aa993b1f4add48fbdc6cc3117059f616e49875.tar.bz2 |
import gdb-1999-07-07 post reformat
Diffstat (limited to 'gdb/dbxread.c')
-rw-r--r-- | gdb/dbxread.c | 700 |
1 files changed, 356 insertions, 344 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c index e61bef9..285d154 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -2,21 +2,22 @@ Copyright 1986, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. -This file is part of GDB. + This file is part of GDB. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* This module provides three functions: dbx_symfile_init, which initializes to read a symbol file; dbx_new_init, which @@ -48,7 +49,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "command.h" #include "target.h" #include "gdbcore.h" /* for bfd stuff */ -#include "libaout.h" /* FIXME Secret internal BFD stuff for a.out */ +#include "libaout.h" /* FIXME Secret internal BFD stuff for a.out */ #include "symfile.h" #include "objfiles.h" #include "buildsym.h" @@ -60,8 +61,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "aout/aout64.h" #include "aout/stab_gnu.h" /* We always use GNU stabs, not native, now */ - + /* This macro returns the size field of a minimal symbol, which is normally stored in the "info" field. The macro can be overridden for specific targets (e.g. MIPS16) that use the info field for other purposes. */ @@ -73,32 +74,33 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* We put a pointer to this structure in the read_symtab_private field of the psymtab. */ -struct symloc { +struct symloc + { - /* Offset within the file symbol table of first local symbol for this - file. */ + /* Offset within the file symbol table of first local symbol for this + file. */ - int ldsymoff; + int ldsymoff; - /* Length (in bytes) of the section of the symbol table devoted to - this file's symbols (actually, the section bracketed may contain - more than just this file's symbols). If ldsymlen is 0, the only - reason for this thing's existence is the dependency list. Nothing - else will happen when it is read in. */ + /* Length (in bytes) of the section of the symbol table devoted to + this file's symbols (actually, the section bracketed may contain + more than just this file's symbols). If ldsymlen is 0, the only + reason for this thing's existence is the dependency list. Nothing + else will happen when it is read in. */ - int ldsymlen; + int ldsymlen; - /* The size of each symbol in the symbol file (in external form). */ + /* The size of each symbol in the symbol file (in external form). */ - int symbol_size; + int symbol_size; - /* Further information needed to locate the symbols if they are in - an ELF file. */ + /* Further information needed to locate the symbols if they are in + an ELF file. */ - int symbol_offset; - int string_offset; - int file_string_offset; -}; + int symbol_offset; + int string_offset; + int file_string_offset; + }; #define LDSYMOFF(p) (((struct symloc *)((p)->read_symtab_private))->ldsymoff) #define LDSYMLEN(p) (((struct symloc *)((p)->read_symtab_private))->ldsymlen) @@ -107,8 +109,8 @@ struct symloc { #define SYMBOL_OFFSET(p) (SYMLOC(p)->symbol_offset) #define STRING_OFFSET(p) (SYMLOC(p)->string_offset) #define FILE_STRING_OFFSET(p) (SYMLOC(p)->file_string_offset) - + /* Remember what we deduced to be the source language of this psymtab. */ static enum language psymtab_language = language_unknown; @@ -170,32 +172,32 @@ static int has_line_numbers; /* Complaints about the symbols we have encountered. */ -struct complaint lbrac_complaint = - {"bad block start address patched", 0, 0}; +struct complaint lbrac_complaint = +{"bad block start address patched", 0, 0}; struct complaint string_table_offset_complaint = - {"bad string table offset in symbol %d", 0, 0}; +{"bad string table offset in symbol %d", 0, 0}; struct complaint unknown_symtype_complaint = - {"unknown symbol type %s", 0, 0}; +{"unknown symbol type %s", 0, 0}; struct complaint unknown_symchar_complaint = - {"unknown symbol descriptor `%c'", 0, 0}; +{"unknown symbol descriptor `%c'", 0, 0}; struct complaint lbrac_rbrac_complaint = - {"block start larger than block end", 0, 0}; +{"block start larger than block end", 0, 0}; struct complaint lbrac_unmatched_complaint = - {"unmatched N_LBRAC before symtab pos %d", 0, 0}; +{"unmatched N_LBRAC before symtab pos %d", 0, 0}; struct complaint lbrac_mismatch_complaint = - {"N_LBRAC/N_RBRAC symbol mismatch at symtab pos %d", 0, 0}; +{"N_LBRAC/N_RBRAC symbol mismatch at symtab pos %d", 0, 0}; struct complaint repeated_header_complaint = - {"\"repeated\" header file %s not previously seen, at symtab pos %d", 0, 0}; +{"\"repeated\" header file %s not previously seen, at symtab pos %d", 0, 0}; struct complaint unclaimed_bincl_complaint = - {"N_BINCL %s not in entries for any file, at symtab pos %d", 0, 0}; +{"N_BINCL %s not in entries for any file, at symtab pos %d", 0, 0}; /* find_text_range --- find start and end of loadable code sections @@ -207,12 +209,12 @@ struct complaint unclaimed_bincl_complaint = table, in some cases. */ static void -find_text_range (bfd *sym_bfd, struct objfile *objfile) +find_text_range (bfd * sym_bfd, struct objfile *objfile) { asection *sec; int found_any = 0; CORE_ADDR start, end; - + for (sec = sym_bfd->sections; sec; sec = sec->next) if (bfd_get_section_flags (sym_bfd, sec) & SEC_CODE) { @@ -221,8 +223,10 @@ find_text_range (bfd *sym_bfd, struct objfile *objfile) if (found_any) { - if (sec_start < start) start = sec_start; - if (sec_end > end) end = sec_end; + if (sec_start < start) + start = sec_start; + if (sec_end > end) + end = sec_end; } else { @@ -233,15 +237,15 @@ find_text_range (bfd *sym_bfd, struct objfile *objfile) found_any = 1; } - if (! found_any) + if (!found_any) error ("Can't find any code sections in symbol file"); DBX_TEXT_ADDR (objfile) = start; DBX_TEXT_SIZE (objfile) = end - start; } + - /* During initial symbol readin, we need to have a structure to keep track of which psymtabs have which bincls in them. This structure is used during readin to setup the list of dependencies within each @@ -263,7 +267,7 @@ static int bincls_allocated; extern void _initialize_dbxread PARAMS ((void)); -static void +static void process_now PARAMS ((struct objfile *)); static void @@ -283,7 +287,7 @@ dbx_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *)); static void read_dbx_dynamic_symtab PARAMS ((struct section_offsets *, - struct objfile *objfile)); + struct objfile * objfile)); static void read_dbx_symtab PARAMS ((struct section_offsets *, struct objfile *, @@ -293,7 +297,7 @@ static void free_bincl_list PARAMS ((struct objfile *)); static struct partial_symtab * -find_corresponding_bincl_psymtab PARAMS ((char *, int)); + find_corresponding_bincl_psymtab PARAMS ((char *, int)); static void add_bincl_to_list PARAMS ((struct partial_symtab *, char *, int)); @@ -302,7 +306,7 @@ static void init_bincl_list PARAMS ((int, struct objfile *)); static char * -dbx_next_symbol_text PARAMS ((struct objfile *)); + dbx_next_symbol_text PARAMS ((struct objfile *)); static void fill_symbuf PARAMS ((bfd *)); @@ -338,7 +342,7 @@ free_header_files () { if (this_object_header_files) { - free ((PTR)this_object_header_files); + free ((PTR) this_object_header_files); this_object_header_files = NULL; } n_allocated_this_object_header_files = 0; @@ -365,7 +369,7 @@ add_this_object_header_file (i) n_allocated_this_object_header_files *= 2; this_object_header_files = (int *) xrealloc ((char *) this_object_header_files, - n_allocated_this_object_header_files * sizeof (int)); + n_allocated_this_object_header_files * sizeof (int)); } this_object_header_files[n_this_object_header_files++] = i; @@ -438,7 +442,7 @@ add_new_header_file (name, instance) i = N_HEADER_FILES (current_objfile)++; hfile = HEADER_FILES (current_objfile) + i; - hfile->name = savestring (name, strlen(name)); + hfile->name = savestring (name, strlen (name)); hfile->instance = instance; hfile->length = 10; hfile->vector @@ -461,7 +465,7 @@ explicit_lookup_type (real_filenum, index) f->vector = (struct type **) xrealloc (f->vector, f->length * sizeof (struct type *)); memset (&f->vector[f->length / 2], - '\0', f->length * sizeof (struct type *) / 2); + '\0', f->length * sizeof (struct type *) / 2); } return &f->vector[index]; } @@ -508,8 +512,8 @@ record_minimal_symbol (name, address, type, objfile) break; case N_SETV: /* I don't think this type actually exists; since a N_SETV is the result - of going over many .o files, it doesn't make sense to have one - file local. */ + of going over many .o files, it doesn't make sense to have one + file local. */ ms_type = mst_file_data; section = SECT_OFF_DATA; bfd_section = DBX_DATA_SECTION (objfile); @@ -527,9 +531,9 @@ record_minimal_symbol (name, address, type, objfile) ms_type = mst_file_data; /* Check for __DYNAMIC, which is used by Sun shared libraries. - Record it as global even if it's local, not global, so - lookup_minimal_symbol can find it. We don't check symbol_leading_char - because for SunOS4 it always is '_'. */ + Record it as global even if it's local, not global, so + lookup_minimal_symbol can find it. We don't check symbol_leading_char + because for SunOS4 it always is '_'. */ if (name[8] == 'C' && STREQ ("__DYNAMIC", name)) ms_type = mst_data; @@ -554,7 +558,7 @@ record_minimal_symbol (name, address, type, objfile) section = -1; bfd_section = NULL; break; - } + } if ((ms_type == mst_file_text || ms_type == mst_text) && address < lowest_text_address) @@ -578,7 +582,7 @@ static void dbx_symfile_read (objfile, section_offsets, mainline) struct objfile *objfile; struct section_offsets *section_offsets; - int mainline; /* FIXME comments above */ + int mainline; /* FIXME comments above */ { bfd *sym_bfd; int val; @@ -670,7 +674,7 @@ dbx_new_init (ignore) be called unless this is an a.out (or very similar) file. FIXME, there should be a cleaner peephole into the BFD environment here. */ -#define DBX_STRINGTAB_SIZE_SIZE sizeof(long) /* FIXME */ +#define DBX_STRINGTAB_SIZE_SIZE sizeof(long) /* FIXME */ static void dbx_symfile_init (objfile) @@ -684,7 +688,7 @@ dbx_symfile_init (objfile) /* Allocate struct to keep track of the symfile */ objfile->sym_stab_info = (struct dbx_symfile_info *) - xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info)); + xmmalloc (objfile->md, sizeof (struct dbx_symfile_info)); memset ((PTR) objfile->sym_stab_info, 0, sizeof (struct dbx_symfile_info)); DBX_TEXT_SECTION (objfile) = bfd_get_section_by_name (sym_bfd, ".text"); @@ -698,7 +702,7 @@ dbx_symfile_init (objfile) /* FIXME POKING INSIDE BFD DATA STRUCTURES */ DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL; - + text_sect = bfd_get_section_by_name (sym_bfd, ".text"); if (!text_sect) error ("Can't find .text section in symbol file"); @@ -726,8 +730,8 @@ dbx_symfile_init (objfile) if (STRING_TABLE_OFFSET == 0) { /* It appears that with the existing bfd code, STRING_TABLE_OFFSET - will never be zero, even when there is no string table. This - would appear to be a bug in bfd. */ + will never be zero, even when there is no string table. This + would appear to be a bug in bfd. */ DBX_STRINGTAB_SIZE (objfile) = 0; DBX_STRINGTAB (objfile) = NULL; } @@ -736,7 +740,7 @@ dbx_symfile_init (objfile) val = bfd_seek (sym_bfd, STRING_TABLE_OFFSET, SEEK_SET); if (val < 0) perror_with_name (name); - + memset ((PTR) size_temp, 0, sizeof (size_temp)); val = bfd_read ((PTR) size_temp, sizeof (size_temp), 1, sym_bfd); if (val < 0) @@ -761,19 +765,19 @@ dbx_symfile_init (objfile) bfd can't tell us there is no string table, the sanity checks may or may not catch this. */ DBX_STRINGTAB_SIZE (objfile) = bfd_h_get_32 (sym_bfd, size_temp); - + if (DBX_STRINGTAB_SIZE (objfile) < sizeof (size_temp) || DBX_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd)) error ("ridiculous string table size (%d bytes).", DBX_STRINGTAB_SIZE (objfile)); - + DBX_STRINGTAB (objfile) = - (char *) obstack_alloc (&objfile -> psymbol_obstack, + (char *) obstack_alloc (&objfile->psymbol_obstack, DBX_STRINGTAB_SIZE (objfile)); OBJSTAT (objfile, sz_strtab += DBX_STRINGTAB_SIZE (objfile)); - + /* Now read in the string table in one big gulp. */ - + val = bfd_seek (sym_bfd, STRING_TABLE_OFFSET, SEEK_SET); if (val < 0) perror_with_name (name); @@ -803,17 +807,17 @@ dbx_symfile_finish (objfile) while (--i >= 0) { - free (hfiles [i].name); - free (hfiles [i].vector); + free (hfiles[i].name); + free (hfiles[i].vector); } free ((PTR) hfiles); } - mfree (objfile -> md, objfile->sym_stab_info); + mfree (objfile->md, objfile->sym_stab_info); } free_header_files (); } - + /* Buffer for reading the symbol table entries. */ static struct external_nlist symbuf[4096]; static int symbuf_idx; @@ -822,11 +826,11 @@ static int symbuf_end; /* cont_elem is used for continuing information in cfront. It saves information about which types need to be fixed up and completed after all the stabs are read. */ -struct cont_elem +struct cont_elem { /* sym and stabsstring for continuing information in cfront */ - struct symbol * sym; - char * stabs; + struct symbol *sym; + char *stabs; /* state dependancies (statics that must be preserved) */ int sym_idx; int sym_end; @@ -834,11 +838,11 @@ struct cont_elem int (*func) PARAMS ((struct objfile *, struct symbol *, char *)); /* other state dependancies include: (assumption is that these will not change since process_now FIXME!!) - stringtab_global - n_stabs - objfile - symfile_bfd */ -}; + stringtab_global + n_stabs + objfile + symfile_bfd */ + }; static struct cont_elem *cont_list = 0; static int cont_limit = 0; @@ -846,24 +850,24 @@ static int cont_count = 0; /* Arrange for function F to be called with arguments SYM and P later in the stabs reading process. */ -void +void process_later (sym, p, f) - struct symbol *sym; - char *p; - int (*f) PARAMS ((struct objfile *, struct symbol *, char *)); + struct symbol *sym; + char *p; + int (*f) PARAMS ((struct objfile *, struct symbol *, char *)); { /* Allocate more space for the deferred list. */ if (cont_count >= cont_limit - 1) { - cont_limit += 32; /* chunk size */ + cont_limit += 32; /* chunk size */ cont_list - = (struct cont_elem *) xrealloc (cont_list, - (cont_limit - * sizeof (struct cont_elem))); + = (struct cont_elem *) xrealloc (cont_list, + (cont_limit + * sizeof (struct cont_elem))); if (!cont_list) - error ("Virtual memory exhausted\n"); + error ("Virtual memory exhausted\n"); } /* Save state variables so we can process these stabs later. */ @@ -878,9 +882,9 @@ process_later (sym, p, f) /* Call deferred funtions in CONT_LIST. */ -static void -process_now (objfile) - struct objfile *objfile; +static void +process_now (objfile) + struct objfile *objfile; { int i; int save_symbuf_idx; @@ -902,8 +906,8 @@ process_now (objfile) { /* Restore the state for this deferred stab. */ symbuf_idx = cont_list[i].sym_idx; - symbuf_end = cont_list[i].sym_end; - symnum = cont_list[i].symnum; + symbuf_end = cont_list[i].sym_end; + symnum = cont_list[i].symnum; sym = cont_list[i].sym; stabs = cont_list[i].stabs; func = cont_list[i].func; @@ -974,7 +978,7 @@ fill_symbuf (sym_bfd) count = sizeof (symbuf); } - nbytes = bfd_read ((PTR)symbuf, count, 1, sym_bfd); + nbytes = bfd_read ((PTR) symbuf, count, 1, sym_bfd); if (nbytes < 0) perror_with_name (bfd_get_filename (sym_bfd)); else if (nbytes == 0) @@ -1022,7 +1026,7 @@ dbx_next_symbol_text (objfile) fill_symbuf (symfile_bfd); symnum++; - INTERNALIZE_SYMBOL(nlist, &symbuf[symbuf_idx], symfile_bfd); + INTERNALIZE_SYMBOL (nlist, &symbuf[symbuf_idx], symfile_bfd); OBJSTAT (objfile, n_stabs++); symbuf_idx++; @@ -1040,7 +1044,7 @@ init_bincl_list (number, objfile) { bincls_allocated = number; next_bincl = bincl_list = (struct header_file_location *) - xmmalloc (objfile -> md, bincls_allocated * sizeof(struct header_file_location)); + xmmalloc (objfile->md, bincls_allocated * sizeof (struct header_file_location)); } /* Add a bincl to the list. */ @@ -1056,8 +1060,8 @@ add_bincl_to_list (pst, name, instance) int offset = next_bincl - bincl_list; bincls_allocated *= 2; bincl_list = (struct header_file_location *) - xmrealloc (pst->objfile->md, (char *)bincl_list, - bincls_allocated * sizeof (struct header_file_location)); + xmrealloc (pst->objfile->md, (char *) bincl_list, + bincls_allocated * sizeof (struct header_file_location)); next_bincl = bincl_list + offset; } next_bincl->pst = pst; @@ -1091,7 +1095,7 @@ static void free_bincl_list (objfile) struct objfile *objfile; { - mfree (objfile -> md, (PTR)bincl_list); + mfree (objfile->md, (PTR) bincl_list); bincls_allocated = 0; } @@ -1193,7 +1197,7 @@ read_dbx_dynamic_symtab (section_offsets, objfile) do_cleanups (back_to); return; } - + dynrels = (arelent **) xmalloc (dynrel_size); make_cleanup (free, dynrels); @@ -1210,7 +1214,7 @@ read_dbx_dynamic_symtab (section_offsets, objfile) { arelent *rel = *relptr; CORE_ADDR address = - rel->address + ANOFFSET (section_offsets, SECT_OFF_DATA); + rel->address + ANOFFSET (section_offsets, SECT_OFF_DATA); switch (bfd_get_arch (abfd)) { @@ -1283,7 +1287,7 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) next_file_string_table_offset = 0; stringtab_global = DBX_STRINGTAB (objfile); - + pst = (struct partial_symtab *) 0; includes_allocated = 30; @@ -1303,7 +1307,7 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) last_source_file = NULL; - lowest_text_address = (CORE_ADDR)-1; + lowest_text_address = (CORE_ADDR) - 1; symfile_bfd = objfile->obfd; /* For next_text_symbol */ abfd = objfile->obfd; @@ -1315,7 +1319,7 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) for (symnum = 0; symnum < DBX_SYMCOUNT (objfile); symnum++) { /* Get the symbol for this run and pull out some info */ - QUIT; /* allow this to be interruptable */ + QUIT; /* allow this to be interruptable */ if (symbuf_idx == symbuf_end) fill_symbuf (abfd); bufp = &symbuf[symbuf_idx++]; @@ -1337,13 +1341,13 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) like duplicating code, I will do my penance here, and describe the code which is duplicated: - *) The assignment to namestring. - *) The call to strchr. - *) The addition of a partial symbol the the two partial - symbol lists. This last is a large section of code, so - I've imbedded it in the following macro. - */ - + *) The assignment to namestring. + *) The call to strchr. + *) The addition of a partial symbol the the two partial + symbol lists. This last is a large section of code, so + I've imbedded it in the following macro. + */ + /* Set namestring based on nlist. If the string table index is invalid, give a fake name, and print a single error message per symbol file read, rather than abort the symbol reading or flood the user with messages. */ @@ -1371,24 +1375,24 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) } /* If there's stuff to be cleaned up, clean it up. */ - if (DBX_SYMCOUNT (objfile) > 0 /* We have some syms */ + if (DBX_SYMCOUNT (objfile) > 0 /* We have some syms */ /*FIXME, does this have a bug at start address 0? */ && last_o_file_start - && objfile -> ei.entry_point < nlist.n_value - && objfile -> ei.entry_point >= last_o_file_start) + && objfile->ei.entry_point < nlist.n_value + && objfile->ei.entry_point >= last_o_file_start) { - objfile -> ei.entry_file_lowpc = last_o_file_start; - objfile -> ei.entry_file_highpc = nlist.n_value; + objfile->ei.entry_file_lowpc = last_o_file_start; + objfile->ei.entry_file_highpc = nlist.n_value; } if (pst) { /* Don't set pst->texthigh lower than it already is. */ CORE_ADDR text_end = - (lowest_text_address == (CORE_ADDR)-1 - ? (text_addr + section_offsets->offsets[SECT_OFF_TEXT]) - : lowest_text_address) - + text_size; + (lowest_text_address == (CORE_ADDR) - 1 + ? (text_addr + section_offsets->offsets[SECT_OFF_TEXT]) + : lowest_text_address) + + text_size; end_psymtab (pst, psymtab_include_list, includes_used, symnum * symbol_size, @@ -1419,17 +1423,17 @@ start_psymtab (objfile, section_offsets, struct partial_symbol **static_syms; { struct partial_symtab *result = - start_psymtab_common(objfile, section_offsets, - filename, textlow, global_syms, static_syms); + start_psymtab_common (objfile, section_offsets, + filename, textlow, global_syms, static_syms); result->read_symtab_private = (char *) - obstack_alloc (&objfile -> psymbol_obstack, sizeof (struct symloc)); - LDSYMOFF(result) = ldsymoff; + obstack_alloc (&objfile->psymbol_obstack, sizeof (struct symloc)); + LDSYMOFF (result) = ldsymoff; result->read_symtab = dbx_psymtab_to_symtab; - SYMBOL_SIZE(result) = symbol_size; - SYMBOL_OFFSET(result) = symbol_table_offset; - STRING_OFFSET(result) = string_table_offset; - FILE_STRING_OFFSET(result) = file_string_table_offset; + SYMBOL_SIZE (result) = symbol_size; + SYMBOL_OFFSET (result) = symbol_table_offset; + STRING_OFFSET (result) = string_table_offset; + FILE_STRING_OFFSET (result) = file_string_table_offset; /* If we're handling an ELF file, drag some section-relocation info for this source file out of the ELF symbol table, to compensate for @@ -1450,7 +1454,7 @@ start_psymtab (objfile, section_offsets, struct partial_symtab * end_psymtab (pst, include_list, num_includes, capping_symbol_offset, - capping_text, dependency_list, number_dependencies, textlow_not_set) + capping_text, dependency_list, number_dependencies, textlow_not_set) struct partial_symtab *pst; char **include_list; int num_includes; @@ -1461,10 +1465,10 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, int textlow_not_set; { int i; - struct objfile *objfile = pst -> objfile; + struct objfile *objfile = pst->objfile; if (capping_symbol_offset != -1) - LDSYMLEN(pst) = capping_symbol_offset - LDSYMOFF(pst); + LDSYMLEN (pst) = capping_symbol_offset - LDSYMOFF (pst); pst->texthigh = capping_text; #ifdef SOFUN_ADDRESS_MAYBE_MISSING @@ -1496,7 +1500,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, p = alloca (n + 2); strncpy (p, last_function_name, n); p[n] = 0; - + minsym = lookup_minimal_symbol (p, pst->filename, objfile); if (minsym == NULL) { @@ -1522,21 +1526,21 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, struct partial_symtab *p1; /* If we know our own starting text address, then walk through all other - psymtabs for this objfile, and if any didn't know their ending text - address, set it to our starting address. Take care to not set our - own ending address to our starting address, nor to set addresses on - `dependency' files that have both textlow and texthigh zero. */ + psymtabs for this objfile, and if any didn't know their ending text + address, set it to our starting address. Take care to not set our + own ending address to our starting address, nor to set addresses on + `dependency' files that have both textlow and texthigh zero. */ ALL_OBJFILE_PSYMTABS (objfile, p1) - { - if (p1->texthigh == 0 && p1->textlow != 0 && p1 != pst) - { - p1->texthigh = pst->textlow; - /* if this file has only data, then make textlow match texthigh */ - if (p1->textlow == 0) - p1->textlow = p1->texthigh; - } - } + { + if (p1->texthigh == 0 && p1->textlow != 0 && p1 != pst) + { + p1->texthigh = pst->textlow; + /* if this file has only data, then make textlow match texthigh */ + if (p1->textlow == 0) + p1->textlow = p1->texthigh; + } + } } /* End of kludge for patching Solaris textlow and texthigh. */ @@ -1552,9 +1556,9 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, { pst->dependencies = (struct partial_symtab **) obstack_alloc (&objfile->psymbol_obstack, - number_dependencies * sizeof (struct partial_symtab *)); + number_dependencies * sizeof (struct partial_symtab *)); memcpy (pst->dependencies, dependency_list, - number_dependencies * sizeof (struct partial_symtab *)); + number_dependencies * sizeof (struct partial_symtab *)); } else pst->dependencies = 0; @@ -1562,19 +1566,19 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, for (i = 0; i < num_includes; i++) { struct partial_symtab *subpst = - allocate_psymtab (include_list[i], objfile); + allocate_psymtab (include_list[i], objfile); subpst->section_offsets = pst->section_offsets; subpst->read_symtab_private = - (char *) obstack_alloc (&objfile->psymbol_obstack, - sizeof (struct symloc)); - LDSYMOFF(subpst) = - LDSYMLEN(subpst) = - subpst->textlow = - subpst->texthigh = 0; + (char *) obstack_alloc (&objfile->psymbol_obstack, + sizeof (struct symloc)); + LDSYMOFF (subpst) = + LDSYMLEN (subpst) = + subpst->textlow = + subpst->texthigh = 0; /* We could save slight bits of space by only making one of these, - shared by the entire set of include files. FIXME-someday. */ + shared by the entire set of include files. FIXME-someday. */ subpst->dependencies = (struct partial_symtab **) obstack_alloc (&objfile->psymbol_obstack, sizeof (struct partial_symtab *)); @@ -1583,8 +1587,8 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, subpst->globals_offset = subpst->n_global_syms = - subpst->statics_offset = - subpst->n_static_syms = 0; + subpst->statics_offset = + subpst->n_static_syms = 0; subpst->readin = 0; subpst->symtab = 0; @@ -1605,17 +1609,17 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, && has_line_numbers == 0) { /* Throw away this psymtab, it's empty. We can't deallocate it, since - it is on the obstack, but we can forget to chain it on the list. */ + it is on the obstack, but we can forget to chain it on the list. */ /* Empty psymtabs happen as a result of header files which don't have - any symbols in them. There can be a lot of them. But this check - is wrong, in that a psymtab with N_SLINE entries but nothing else - is not empty, but we don't realize that. Fixing that without slowing - things down might be tricky. */ + any symbols in them. There can be a lot of them. But this check + is wrong, in that a psymtab with N_SLINE entries but nothing else + is not empty, but we don't realize that. Fixing that without slowing + things down might be tricky. */ discard_psymtab (pst); /* Indicate that psymtab was thrown away. */ - pst = (struct partial_symtab *)NULL; + pst = (struct partial_symtab *) NULL; } return pst; } @@ -1626,14 +1630,14 @@ dbx_psymtab_to_symtab_1 (pst) { struct cleanup *old_chain; int i; - + if (!pst) return; if (pst->readin) { fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in. Shouldn't happen.\n", - pst->filename); + pst->filename); return; } @@ -1649,13 +1653,13 @@ dbx_psymtab_to_symtab_1 (pst) fputs_filtered ("and ", gdb_stdout); wrap_here (""); printf_filtered ("%s...", pst->dependencies[i]->filename); - wrap_here (""); /* Flush output */ + wrap_here (""); /* Flush output */ gdb_flush (gdb_stdout); } dbx_psymtab_to_symtab_1 (pst->dependencies[i]); } - if (LDSYMLEN(pst)) /* Otherwise it's a dummy */ + if (LDSYMLEN (pst)) /* Otherwise it's a dummy */ { /* Init stuff necessary for reading in symbols */ stabsread_init (); @@ -1690,14 +1694,14 @@ dbx_psymtab_to_symtab (pst) if (pst->readin) { fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in. Shouldn't happen.\n", - pst->filename); + pst->filename); return; } - if (LDSYMLEN(pst) || pst->number_of_dependencies) + if (LDSYMLEN (pst) || pst->number_of_dependencies) { /* Print the message now, before reading the string table, - to avoid disconcerting pauses. */ + to avoid disconcerting pauses. */ if (info_verbose) { printf_filtered ("Reading in symbols for %s...", pst->filename); @@ -1721,7 +1725,7 @@ dbx_psymtab_to_symtab (pst) } /* Read in a defined section of a specific object file's symbols. */ - + static void read_ofile_symtab (pst) struct partial_symtab *pst; @@ -1740,8 +1744,8 @@ read_ofile_symtab (pst) struct section_offsets *section_offsets; objfile = pst->objfile; - sym_offset = LDSYMOFF(pst); - sym_size = LDSYMLEN(pst); + sym_offset = LDSYMOFF (pst); + sym_size = LDSYMLEN (pst); text_offset = pst->textlow; text_size = pst->texthigh - pst->textlow; section_offsets = pst->section_offsets; @@ -1762,7 +1766,7 @@ read_ofile_symtab (pst) Detecting this in read_dbx_symtab would slow down initial readin, so we look for it here instead. */ - if (!processing_acc_compilation && sym_offset >= (int)symbol_size) + if (!processing_acc_compilation && sym_offset >= (int) symbol_size) { bfd_seek (symfile_bfd, sym_offset - symbol_size, SEEK_CUR); fill_symbuf (abfd); @@ -1788,7 +1792,7 @@ read_ofile_symtab (pst) } /* Try to select a C++ demangling based on the compilation unit - producer. */ + producer. */ if (processing_gcc_compilation) { @@ -1801,8 +1805,8 @@ read_ofile_symtab (pst) else { /* The N_SO starting this symtab is the first symbol, so we - better not check the symbol before it. I'm not this can - happen, but it doesn't hurt to check for it. */ + better not check the symbol before it. I'm not this can + happen, but it doesn't hurt to check for it. */ bfd_seek (symfile_bfd, sym_offset, SEEK_CUR); processing_gcc_compilation = 0; } @@ -1811,7 +1815,7 @@ read_ofile_symtab (pst) fill_symbuf (abfd); bufp = &symbuf[symbuf_idx]; if (bfd_h_get_8 (abfd, bufp->e_type) != N_SO) - error("First symbol in segment of executable not a source symbol"); + error ("First symbol in segment of executable not a source symbol"); max_symnum = sym_size / symbol_size; @@ -1821,7 +1825,7 @@ read_ofile_symtab (pst) { QUIT; /* Allow this to be interruptable */ if (symbuf_idx == symbuf_end) - fill_symbuf(abfd); + fill_symbuf (abfd); bufp = &symbuf[symbuf_idx++]; INTERNALIZE_SYMBOL (nlist, bufp, abfd); OBJSTAT (objfile, n_stabs++); @@ -1830,10 +1834,11 @@ read_ofile_symtab (pst) SET_NAMESTRING (); - if (type & N_STAB) { + if (type & N_STAB) + { process_one_symbol (type, nlist.n_desc, nlist.n_value, namestring, section_offsets, objfile); - } + } /* We skip checking for a new .o or -l file; that should never happen in this routine. */ else if (type == N_TEXT) @@ -1854,9 +1859,10 @@ read_ofile_symtab (pst) set_demangling_style (GNU_DEMANGLING_STYLE_STRING); } } - else if (type & N_EXT || type == (unsigned char)N_TEXT - || type == (unsigned char)N_NBTEXT - ) { + else if (type & N_EXT || type == (unsigned char) N_TEXT + || type == (unsigned char) N_NBTEXT + ) + { /* Global symbol: see if we came across a dbx defintion for a corresponding symbol. If so, store the value. Remove syms from the chain when their values are stored, but @@ -1867,7 +1873,7 @@ read_ofile_symtab (pst) be satisfied in each file as it appears. So we skip this section. */ ; - } + } } current_objfile = NULL; @@ -1888,12 +1894,12 @@ read_ofile_symtab (pst) /* Process items which we had to "process_later" due to dependancies on other stabs. */ - process_now (objfile); + process_now (objfile); end_stabs (); } - + /* This handles a single symbol from the symbol-file, building symbols into a GDB symtab. It takes these arguments and an implicit argument. @@ -1902,11 +1908,11 @@ read_ofile_symtab (pst) VALU is the value field of the ".stab" entry. NAME is the symbol name, in our address space. SECTION_OFFSETS is a set of amounts by which the sections of this object - file were relocated when it was loaded into memory. - All symbols that refer - to memory locations need to be offset by these amounts. + file were relocated when it was loaded into memory. + All symbols that refer + to memory locations need to be offset by these amounts. OBJFILE is the object file from which we are reading symbols. - It is used in end_symtab. */ + It is used in end_symtab. */ void process_one_symbol (type, desc, valu, name, section_offsets, objfile) @@ -1951,12 +1957,12 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) /* Something is wrong if we see real data before seeing a source file name. */ - if (last_source_file == NULL && type != (unsigned char)N_SO) + if (last_source_file == NULL && type != (unsigned char) N_SO) { /* Ignore any symbols which appear before an N_SO symbol. - Currently no one puts symbols there, but we should deal - gracefully with the case. A complain()t might be in order, - but this should not be an error (). */ + Currently no one puts symbols there, but we should deal + gracefully with the case. A complain()t might be in order, + but this should not be an error (). */ return; } @@ -1994,7 +2000,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case N_LBRAC: /* This "symbol" just indicates the start of an inner lexical - context within a function. */ + context within a function. */ /* Ignore extra outermost context from SunPRO cc and acc. */ if (n_opt_found && desc == 1) @@ -2009,18 +2015,19 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) valu += last_source_start_addr; #ifdef SUN_FIXED_LBRAC_BUG - if (!SUN_FIXED_LBRAC_BUG && valu < last_pc_address) { - /* Patch current LBRAC pc value to match last handy pc value */ - complain (&lbrac_complaint); - valu = last_pc_address; - } + if (!SUN_FIXED_LBRAC_BUG && valu < last_pc_address) + { + /* Patch current LBRAC pc value to match last handy pc value */ + complain (&lbrac_complaint); + valu = last_pc_address; + } #endif new = push_context (desc, valu); break; case N_RBRAC: /* This "symbol" just indicates the end of an inner lexical - context that was started with N_LBRAC. */ + context that was started with N_LBRAC. */ /* Ignore extra outermost context from SunPRO cc and acc. */ if (n_opt_found && desc == 1) @@ -2034,26 +2041,26 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) N_SO, the linker did not relocate them (sigh). */ valu += last_source_start_addr; - new = pop_context(); + new = pop_context (); if (desc != new->depth) complain (&lbrac_mismatch_complaint, symnum); /* Some compilers put the variable decls inside of an LBRAC/RBRAC block. This macro should be nonzero if this - is true. DESC is N_DESC from the N_RBRAC symbol. - GCC_P is true if we've detected the GCC_COMPILED_SYMBOL - or the GCC2_COMPILED_SYMBOL. */ + is true. DESC is N_DESC from the N_RBRAC symbol. + GCC_P is true if we've detected the GCC_COMPILED_SYMBOL + or the GCC2_COMPILED_SYMBOL. */ #if !defined (VARIABLES_INSIDE_BLOCK) #define VARIABLES_INSIDE_BLOCK(desc, gcc_p) 0 #endif /* Can only use new->locals as local symbols here if we're in gcc or on a machine that puts them before the lbrack. */ - if (!VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation)) + if (!VARIABLES_INSIDE_BLOCK (desc, processing_gcc_compilation)) local_symbols = new->locals; if (context_stack_depth - > !VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation)) + > !VARIABLES_INSIDE_BLOCK (desc, processing_gcc_compilation)) { /* This is not the outermost LBRAC...RBRAC pair in the function, its local symbols preceded it, and are the ones just recovered @@ -2064,7 +2071,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) if (local_symbols != NULL) { /* Muzzle a compiler bug that makes end < start. (which - compilers? Is this ever harmful?). */ + compilers? Is this ever harmful?). */ if (new->start_addr > valu) { complain (&lbrac_rbrac_complaint); @@ -2084,7 +2091,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) within_function = 0; } - if (VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation)) + if (VARIABLES_INSIDE_BLOCK (desc, processing_gcc_compilation)) /* Now pop locals of block just finished. */ local_symbols = new->locals; break; @@ -2098,9 +2105,9 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case N_SO: /* This type of symbol indicates the start of data - for one source file. - Finish the symbol table of the previous source file - (if any) and start accumulating a new symbol table. */ + for one source file. + Finish the symbol table of the previous source file + (if any) and start accumulating a new symbol table. */ /* Relocate for dynamic loading */ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); @@ -2123,7 +2130,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) /* Check if previous symbol was also an N_SO (with some sanity checks). If so, that one was actually the directory name, and the current one is the real file name. - Patch things up. */ + Patch things up. */ if (previous_stab_code == (unsigned char) N_SO) { patch_subfile_names (current_subfile, name); @@ -2134,12 +2141,12 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) } /* Null name means this just marks the end of text for this .o file. - Don't start a new symtab in this case. */ + Don't start a new symtab in this case. */ if (*name == '\000') break; if (block_address_function_relative) - function_start_offset = 0; + function_start_offset = 0; start_stabs (); start_symtab (name, NULL, valu); @@ -2148,9 +2155,9 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case N_SOL: /* This type of symbol indicates the start of data for - a sub-source-file, one whose contents were copied or - included in the compilation of the main source file - (whose name was given in the N_SO symbol.) */ + a sub-source-file, one whose contents were copied or + included in the compilation of the main source file + (whose name was given in the N_SO symbol.) */ /* Relocate for dynamic loading */ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); start_subfile (name, current_subfile->dirname); @@ -2172,8 +2179,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case N_SLINE: /* This type of "symbol" really just records - one line-number -- core-address correspondence. - Enter it in the line list for this symbol table. */ + one line-number -- core-address correspondence. + Enter it in the line list for this symbol table. */ /* Relocate for dynamic loading and for ELF acc fn-relative syms. */ valu += function_start_offset; @@ -2192,21 +2199,21 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) common_block_end (objfile); break; - /* The following symbol types need to have the appropriate offset added - to their value; then we process symbol definitions in the name. */ + /* The following symbol types need to have the appropriate offset added + to their value; then we process symbol definitions in the name. */ case N_STSYM: /* Static symbol in data seg */ case N_LCSYM: /* Static symbol in BSS seg */ case N_ROSYM: /* Static symbol in Read-only data seg */ - /* HORRID HACK DEPT. However, it's Sun's furgin' fault. - Solaris2's stabs-in-elf makes *most* symbols relative - but leaves a few absolute (at least for Solaris 2.1 and version - 2.0.1 of the SunPRO compiler). N_STSYM and friends sit on the fence. - .stab "foo:S...",N_STSYM is absolute (ld relocates it) - .stab "foo:V...",N_STSYM is relative (section base subtracted). - This leaves us no choice but to search for the 'S' or 'V'... - (or pass the whole section_offsets stuff down ONE MORE function - call level, which we really don't want to do). */ + /* HORRID HACK DEPT. However, it's Sun's furgin' fault. + Solaris2's stabs-in-elf makes *most* symbols relative + but leaves a few absolute (at least for Solaris 2.1 and version + 2.0.1 of the SunPRO compiler). N_STSYM and friends sit on the fence. + .stab "foo:S...",N_STSYM is absolute (ld relocates it) + .stab "foo:V...",N_STSYM is relative (section base subtracted). + This leaves us no choice but to search for the 'S' or 'V'... + (or pass the whole section_offsets stuff down ONE MORE function + call level, which we really don't want to do). */ { char *p; @@ -2235,12 +2242,17 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) } } /* Since it's not the kludge case, re-dispatch to the right handler. */ - switch (type) { - case N_STSYM: goto case_N_STSYM; - case N_LCSYM: goto case_N_LCSYM; - case N_ROSYM: goto case_N_ROSYM; - default: abort(); - } + switch (type) + { + case N_STSYM: + goto case_N_STSYM; + case N_LCSYM: + goto case_N_LCSYM; + case N_ROSYM: + goto case_N_ROSYM; + default: + abort (); + } } case_N_STSYM: /* Static symbol in data seg */ @@ -2250,7 +2262,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case_N_LCSYM: /* Static symbol in BSS seg */ case N_BSLINE: /* Source line number, bss seg */ - /* N_BROWS: overlaps with N_BSLINE */ + /* N_BROWS: overlaps with N_BSLINE */ valu += ANOFFSET (section_offsets, SECT_OFF_BSS); goto define_a_symbol; @@ -2263,14 +2275,14 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); goto define_a_symbol; - /* The following symbol types we don't know how to process. Handle - them in a "default" way, but complain to people who care. */ + /* The following symbol types we don't know how to process. Handle + them in a "default" way, but complain to people who care. */ default: case N_CATCH: /* Exception handler catcher */ case N_EHDECL: /* Exception handler name */ case N_PC: /* Global symbol in Pascal */ - case N_M2C: /* Modula-2 compilation unit */ - /* N_MOD2: overlaps with N_EHDECL */ + case N_M2C: /* Modula-2 compilation unit */ + /* N_MOD2: overlaps with N_EHDECL */ case N_SCOPE: /* Modula-2 scope information */ case N_ECOML: /* End common (local name) */ case N_NBTEXT: /* Gould Non-Base-Register symbols??? */ @@ -2281,8 +2293,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) complain (&unknown_symtype_complaint, local_hex_string (type)); /* FALLTHROUGH */ - /* The following symbol types don't need the address field relocated, - since it is either unused, or is absolute. */ + /* The following symbol types don't need the address field relocated, + since it is either unused, or is absolute. */ define_a_symbol: case N_GSYM: /* Global variable */ case N_NSYMS: /* Number of symbols (ultrix) */ @@ -2310,7 +2322,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) #ifdef SOFUN_ADDRESS_MAYBE_MISSING /* Deal with the SunPRO 3.0 compiler which omits the address - from N_FUN symbols. */ + from N_FUN symbols. */ if (type == N_FUN && valu == ANOFFSET (section_offsets, SECT_OFF_TEXT)) { @@ -2331,8 +2343,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) if (msym == NULL) { /* Sun Fortran appends an underscore to the minimal - symbol name, try again with an appended underscore - if the minimal symbol was not found. */ + symbol name, try again with an appended underscore + if the minimal symbol was not found. */ p[n] = '_'; p[n + 1] = 0; msym = lookup_minimal_symbol (p, last_source_file, @@ -2345,28 +2357,28 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) #ifdef SUN_FIXED_LBRAC_BUG /* The Sun acc compiler, under SunOS4, puts out - functions with N_GSYM or N_STSYM. The problem is - that the address of the symbol is no good (for N_GSYM - it doesn't even attept an address; for N_STSYM it - puts out an address but then it gets relocated - relative to the data segment, not the text segment). - Currently we can't fix this up later as we do for - some types of symbol in scan_file_globals. - Fortunately we do have a way of finding the address - - we know that the value in last_pc_address is either - the one we want (if we're dealing with the first - function in an object file), or somewhere in the - previous function. This means that we can use the - minimal symbol table to get the address. */ + functions with N_GSYM or N_STSYM. The problem is + that the address of the symbol is no good (for N_GSYM + it doesn't even attept an address; for N_STSYM it + puts out an address but then it gets relocated + relative to the data segment, not the text segment). + Currently we can't fix this up later as we do for + some types of symbol in scan_file_globals. + Fortunately we do have a way of finding the address - + we know that the value in last_pc_address is either + the one we want (if we're dealing with the first + function in an object file), or somewhere in the + previous function. This means that we can use the + minimal symbol table to get the address. */ /* Starting with release 3.0, the Sun acc compiler, - under SunOS4, puts out functions with N_FUN and a value - of zero. This gets relocated to the start of the text - segment of the module, which is no good either. - Under SunOS4 we can deal with this as N_SLINE and N_SO - entries contain valid absolute addresses. - Release 3.0 acc also puts out N_OPT entries, which makes - it possible to discern acc from cc or gcc. */ + under SunOS4, puts out functions with N_FUN and a value + of zero. This gets relocated to the start of the text + segment of the module, which is no good either. + Under SunOS4 we can deal with this as N_SLINE and N_SO + entries contain valid absolute addresses. + Release 3.0 acc also puts out N_OPT entries, which makes + it possible to discern acc from cc or gcc. */ if (type == N_GSYM || type == N_STSYM || (type == N_FUN @@ -2377,14 +2389,14 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) m = lookup_minimal_symbol_by_pc (last_pc_address); if (m && STREQN (SYMBOL_NAME (m), name, l) - && SYMBOL_NAME (m) [l] == '\0') + && SYMBOL_NAME (m)[l] == '\0') /* last_pc_address was in this function */ valu = SYMBOL_VALUE (m); - else if (m && SYMBOL_NAME (m+1) - && STREQN (SYMBOL_NAME (m+1), name, l) - && SYMBOL_NAME (m+1) [l] == '\0') + else if (m && SYMBOL_NAME (m + 1) + && STREQN (SYMBOL_NAME (m + 1), name, l) + && SYMBOL_NAME (m + 1)[l] == '\0') /* last_pc_address was in last function */ - valu = SYMBOL_VALUE (m+1); + valu = SYMBOL_VALUE (m + 1); else /* Not found - use last_pc_address (for finish_block) */ valu = last_pc_address; @@ -2400,7 +2412,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) Solaris 2.0, these addresses are just absolute, or relative to the N_SO, depending on BLOCK_ADDRESS_ABSOLUTE. */ - function_start_offset = valu; + function_start_offset = valu; within_function = 1; if (context_stack_depth > 0) @@ -2425,16 +2437,16 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) } break; - /* We use N_OPT to carry the gcc2_compiled flag. Sun uses it - for a bunch of other flags, too. Someday we may parse their - flags; for now we ignore theirs and hope they'll ignore ours. */ - case N_OPT: /* Solaris 2: Compiler options */ + /* We use N_OPT to carry the gcc2_compiled flag. Sun uses it + for a bunch of other flags, too. Someday we may parse their + flags; for now we ignore theirs and hope they'll ignore ours. */ + case N_OPT: /* Solaris 2: Compiler options */ if (name) { if (STREQ (name, GCC2_COMPILED_FLAG_SYMBOL)) { processing_gcc_compilation = 2; -#if 1 /* Works, but is experimental. -fnf */ +#if 1 /* Works, but is experimental. -fnf */ if (AUTO_DEMANGLING) { set_demangling_style (GNU_DEMANGLING_STYLE_STRING); @@ -2446,11 +2458,11 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) } break; - /* The following symbol types can be ignored. */ - case N_OBJ: /* Solaris 2: Object file dir and name */ - /* N_UNDF: Solaris 2: file separator mark */ - /* N_UNDF: -- we will never encounter it, since we only process one - file's symbols at once. */ + /* The following symbol types can be ignored. */ + case N_OBJ: /* Solaris 2: Object file dir and name */ + /* N_UNDF: Solaris 2: file separator mark */ + /* N_UNDF: -- we will never encounter it, since we only process one + file's symbols at once. */ case N_ENDM: /* Solaris 2: End of module */ case N_MAIN: /* Name of main routine. */ case N_ALIAS: /* SunPro F77: alias name, ignore for now. */ @@ -2461,7 +2473,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) related symbol. Generally this is used so that an alias can refer to its main - symbol. */ + symbol. */ if (name[0] == '#') { /* Initialize symbol reference names and determine if this is @@ -2472,10 +2484,10 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) int refnum; /* If this stab defines a new reference ID that is not on the - reference list, then put it on the reference list. + reference list, then put it on the reference list. - We go ahead and advance NAME past the reference, even though - it is not strictly necessary at this time. */ + We go ahead and advance NAME past the reference, even though + it is not strictly necessary at this time. */ refnum = symbol_reference_defined (&s); if (refnum >= 0) if (!ref_search (refnum)) @@ -2513,17 +2525,17 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) adjusted for coff details. */ void -coffstab_build_psymtabs (objfile, section_offsets, mainline, - textaddr, textsize, stabsects, - stabstroffset, stabstrsize) - struct objfile *objfile; - struct section_offsets *section_offsets; - int mainline; - CORE_ADDR textaddr; - unsigned int textsize; - struct stab_section_list *stabsects; - file_ptr stabstroffset; - unsigned int stabstrsize; +coffstab_build_psymtabs (objfile, section_offsets, mainline, + textaddr, textsize, stabsects, + stabstroffset, stabstrsize) + struct objfile *objfile; + struct section_offsets *section_offsets; + int mainline; + CORE_ADDR textaddr; + unsigned int textsize; + struct stab_section_list *stabsects; + file_ptr stabstroffset; + unsigned int stabstrsize; { int val; bfd *sym_bfd = objfile->obfd; @@ -2539,14 +2551,14 @@ coffstab_build_psymtabs (objfile, section_offsets, mainline, DBX_TEXT_SIZE (objfile) = textsize; #define COFF_STABS_SYMBOL_SIZE 12 /* XXX FIXME XXX */ - DBX_SYMBOL_SIZE (objfile) = COFF_STABS_SYMBOL_SIZE; + DBX_SYMBOL_SIZE (objfile) = COFF_STABS_SYMBOL_SIZE; DBX_STRINGTAB_SIZE (objfile) = stabstrsize; - + if (stabstrsize > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", stabstrsize); DBX_STRINGTAB (objfile) = (char *) - obstack_alloc (&objfile->psymbol_obstack, stabstrsize+1); - OBJSTAT (objfile, sz_strtab += stabstrsize+1); + obstack_alloc (&objfile->psymbol_obstack, stabstrsize + 1); + OBJSTAT (objfile, sz_strtab += stabstrsize + 1); /* Now read in the string table in one big gulp. */ @@ -2615,16 +2627,16 @@ coffstab_build_psymtabs (objfile, section_offsets, mainline, adjusted for elf details. */ void -elfstab_build_psymtabs (objfile, section_offsets, mainline, - staboffset, stabsize, - stabstroffset, stabstrsize) - struct objfile *objfile; - struct section_offsets *section_offsets; - int mainline; - file_ptr staboffset; - unsigned int stabsize; - file_ptr stabstroffset; - unsigned int stabstrsize; +elfstab_build_psymtabs (objfile, section_offsets, mainline, + staboffset, stabsize, + stabstroffset, stabstrsize) + struct objfile *objfile; + struct section_offsets *section_offsets; + int mainline; + file_ptr staboffset; + unsigned int stabsize; + file_ptr stabstroffset; + unsigned int stabstrsize; { int val; bfd *sym_bfd = objfile->obfd; @@ -2641,16 +2653,16 @@ elfstab_build_psymtabs (objfile, section_offsets, mainline, find_text_range (sym_bfd, objfile); #define ELF_STABS_SYMBOL_SIZE 12 /* XXX FIXME XXX */ - DBX_SYMBOL_SIZE (objfile) = ELF_STABS_SYMBOL_SIZE; - DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile); + DBX_SYMBOL_SIZE (objfile) = ELF_STABS_SYMBOL_SIZE; + DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile); DBX_STRINGTAB_SIZE (objfile) = stabstrsize; - DBX_SYMTAB_OFFSET (objfile) = staboffset; - + DBX_SYMTAB_OFFSET (objfile) = staboffset; + if (stabstrsize > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", stabstrsize); DBX_STRINGTAB (objfile) = (char *) - obstack_alloc (&objfile->psymbol_obstack, stabstrsize+1); - OBJSTAT (objfile, sz_strtab += stabstrsize+1); + obstack_alloc (&objfile->psymbol_obstack, stabstrsize + 1); + OBJSTAT (objfile, sz_strtab += stabstrsize + 1); /* Now read in the string table in one big gulp. */ @@ -2684,9 +2696,9 @@ elfstab_build_psymtabs (objfile, section_offsets, mainline, OBJFILE is the object file we are reading symbols from. ADDR is the address relative to which the symbols are (e.g. the base address - of the text segment). + of the text segment). MAINLINE is true if we are reading the main symbol table (as opposed to a - shared lib or dynamically loaded file). + shared lib or dynamically loaded file). STAB_NAME is the name of the section that contains the stabs. STABSTR_NAME is the name of the section that contains the stab strings. @@ -2729,12 +2741,12 @@ stabsect_build_psymtabs (objfile, section_offsets, mainline, stab_name, DBX_TEXT_ADDR (objfile) = bfd_section_vma (sym_bfd, text_sect); DBX_TEXT_SIZE (objfile) = bfd_section_size (sym_bfd, text_sect); - DBX_SYMBOL_SIZE (objfile) = sizeof (struct external_nlist); - DBX_SYMCOUNT (objfile) = bfd_section_size (sym_bfd, stabsect) + DBX_SYMBOL_SIZE (objfile) = sizeof (struct external_nlist); + DBX_SYMCOUNT (objfile) = bfd_section_size (sym_bfd, stabsect) / DBX_SYMBOL_SIZE (objfile); DBX_STRINGTAB_SIZE (objfile) = bfd_section_size (sym_bfd, stabstrsect); - DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos; /* XXX - FIXME: POKING INSIDE BFD DATA STRUCTURES */ - + DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos; /* XXX - FIXME: POKING INSIDE BFD DATA STRUCTURES */ + if (DBX_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", DBX_STRINGTAB_SIZE (objfile)); DBX_STRINGTAB (objfile) = (char *) @@ -2743,11 +2755,11 @@ stabsect_build_psymtabs (objfile, section_offsets, mainline, stab_name, /* Now read in the string table in one big gulp. */ - val = bfd_get_section_contents (sym_bfd, /* bfd */ - stabstrsect, /* bfd section */ - DBX_STRINGTAB (objfile), /* input buffer */ - 0, /* offset into section */ - DBX_STRINGTAB_SIZE (objfile)); /* amount to read */ + val = bfd_get_section_contents (sym_bfd, /* bfd */ + stabstrsect, /* bfd section */ + DBX_STRINGTAB (objfile), /* input buffer */ + 0, /* offset into section */ + DBX_STRINGTAB_SIZE (objfile)); /* amount to read */ if (!val) perror_with_name (name); @@ -2767,17 +2779,17 @@ stabsect_build_psymtabs (objfile, section_offsets, mainline, stab_name, static struct sym_fns aout_sym_fns = { bfd_target_aout_flavour, - dbx_new_init, /* sym_new_init: init anything gbl to entire symtab */ - dbx_symfile_init, /* sym_init: read initial info, setup for sym_read() */ - dbx_symfile_read, /* sym_read: read a symbol file into symtab */ - dbx_symfile_finish, /* sym_finish: finished with file, cleanup */ + dbx_new_init, /* sym_new_init: init anything gbl to entire symtab */ + dbx_symfile_init, /* sym_init: read initial info, setup for sym_read() */ + dbx_symfile_read, /* sym_read: read a symbol file into symtab */ + dbx_symfile_finish, /* sym_finish: finished with file, cleanup */ default_symfile_offsets, /* sym_offsets: parse user's offsets to internal form */ - NULL /* next: pointer to next struct sym_fns */ + NULL /* next: pointer to next struct sym_fns */ }; void _initialize_dbxread () { - add_symtab_fns(&aout_sym_fns); + add_symtab_fns (&aout_sym_fns); } |