1999-01-19 Fernando Nasser <fnasser@totem.to.cygnus.com>
[deliverable/binutils-gdb.git] / gdb / buildsym.h
index 36732f047a4e196b0e7218a67e2d2b305db1a8af..feb22a17d0417ad64dab5d363628b60269422dc4 100644 (file)
@@ -1,5 +1,5 @@
 /* Build symbol tables in GDB's internal format.
-   Copyright (C) 1986-1995 Free Software Foundation, Inc.
+   Copyright (C) 1986-1996 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -60,6 +60,7 @@ struct subfile
   struct linetable *line_vector;
   int line_vector_length;
   enum language language;
+  char *debugformat;
 };
 
 EXTERN struct subfile *subfiles;
@@ -79,6 +80,16 @@ EXTERN unsigned char processing_gcc_compilation;
 
 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;
@@ -96,10 +107,6 @@ struct pending
   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 */
@@ -108,6 +115,8 @@ EXTERN struct pending *global_symbols;      /* global functions and variables */
 
 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).  */
 
@@ -117,6 +126,10 @@ struct context_stack
 
   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;
@@ -169,6 +182,11 @@ struct pending_block
   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
@@ -231,7 +249,7 @@ extern char *
 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 *));
@@ -254,6 +272,28 @@ start_symtab PARAMS ((char *, char *, CORE_ADDR));
 extern int
 hashname PARAMS ((char *));
 
+extern void
+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
+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
 
 #endif /* defined (BUILDSYM_H) */
This page took 0.025231 seconds and 4 git commands to generate.