/* Build symbol tables in GDB's internal format.
- Copyright (C) 1986-1991 Free Software Foundation, Inc.
+ Copyright (C) 1986-1996 Free Software Foundation, Inc.
This file is part of GDB.
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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if !defined (BUILDSYM_H)
#define BUILDSYM_H 1
struct linetable *line_vector;
int line_vector_length;
enum language language;
+ char *debugformat;
};
EXTERN struct subfile *subfiles;
EXTERN unsigned char processing_acc_compilation;
+/* elz: added this flag to know when a block is compiled with HP
+ compilers (cc, aCC). This is necessary because of the macro
+ COERCE_FLOAT_TO_DOUBLE defined in tm_hppa.h, which causes
+ a coercion of float to double to always occur in parameter passing
+ for a function called by gdb (see the function value_arg_coerce in
+ valops.c). This is necessary only if the target
+ was compiled with gcc, not with HP compilers or with g++ */
+
+EXTERN unsigned char processing_hp_compilation;
+
/* Count symbols as they are processed, for error messages. */
EXTERN unsigned int symnum;
struct symbol *symbol[PENDINGSIZE];
};
-/* List of free `struct pending' structures for reuse. */
-
-EXTERN struct pending *free_pendings;
-
/* Here are the three lists that symbols are put on. */
EXTERN struct pending *file_symbols; /* static at top level, and types */
EXTERN struct pending *local_symbols; /* everything local to lexic context */
+EXTERN struct pending *param_symbols; /* func params local to lexic context */
+
/* Stack representing unclosed lexical contexts
(that will become blocks, eventually). */
struct pending *locals;
+ /* Pending func params at the time we entered */
+
+ struct pending *params;
+
/* Pointer into blocklist as of entry */
struct pending_block *old_blocks;
struct block *block;
};
+/* Pointer to the head of a linked list of symbol blocks which have
+ already been finalized (lexical contexts already closed) and which are
+ just waiting to be built into a blockvector when finalizing the
+ associated symtab. */
+
EXTERN struct pending_block *pending_blocks;
\f
EXTERN struct subfile_stack *subfile_stack;
-#define next_symbol_text() (*next_symbol_text_func)()
+#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
/* Function to invoke get the next symbol. Return the symbol name. */
-EXTERN char *(*next_symbol_text_func) PARAMS ((void));
+EXTERN char *(*next_symbol_text_func) PARAMS ((struct objfile *));
/* Vector of types defined so far, indexed by their type numbers.
Used for both stabs and coff.
pop_subfile PARAMS ((void));
extern struct symtab *
-end_symtab PARAMS ((CORE_ADDR, int, int, struct objfile *, int));
+end_symtab PARAMS ((CORE_ADDR, struct objfile *, int));
extern void
scan_file_globals PARAMS ((struct objfile *));
extern void
start_symtab PARAMS ((char *, char *, CORE_ADDR));
-extern struct partial_symtab *
-start_psymtab PARAMS ((struct objfile *, struct section_offsets *, char *,
- CORE_ADDR, int, struct partial_symbol *,
- struct partial_symbol *));
+extern int
+hashname PARAMS ((char *));
extern void
-end_psymtab PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
- struct partial_symtab **, int));
+free_pending_blocks PARAMS ((void));
+
+/* FIXME: Note that this is used only in buildsym.c and dstread.c,
+ which should be fixed to not need direct access to make_blockvector. */
+
+extern struct blockvector *
+make_blockvector PARAMS ((struct objfile *));
+
+/* FIXME: Note that this is used only in buildsym.c and dstread.c,
+ which should be fixed to not need direct access to record_pending_block. */
extern void
-process_one_symbol PARAMS ((int, int, CORE_ADDR, char *,
- struct section_offsets *, struct objfile *));
-extern int
-hashname PARAMS ((char *));
+record_pending_block PARAMS ((struct objfile *, struct block *,
+ struct pending_block *));
+
+extern void
+record_debugformat PARAMS ((char *));
+
+extern void
+merge_symbol_lists PARAMS ((struct pending **, struct pending **));
#undef EXTERN