* config/i386/tm-cygwin.h: include tm-i386.h instead of tm-i386v.h. This fixes
[binutils-gdb.git] / gdb / symtab.h
index 55db0f82a9d486086e058bf9a0798b6b9dea789a..7ae93468257d48c8abf3b89ac4fe6e343e266af0 100644 (file)
@@ -1,5 +1,6 @@
 /* Symbol table definitions for GDB.
-   Copyright 1986, 89, 91, 92, 93, 94, 95, 96, 1998
+   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+   1997, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -26,7 +27,7 @@
 
 #include "obstack.h"
 #define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free free
+#define obstack_chunk_free xfree
 #include "bcache.h"
 
 /* Don't do this; it means that if some .o's are compiled with GNU C
@@ -170,6 +171,8 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
 #define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack)                     \
   do {                                                                 \
     char *demangled = NULL;                                            \
+    if (SYMBOL_LANGUAGE (symbol) == language_unknown)                 \
+          SYMBOL_LANGUAGE (symbol) = language_auto;                    \
     if (SYMBOL_LANGUAGE (symbol) == language_cplus                     \
        || SYMBOL_LANGUAGE (symbol) == language_auto)                   \
       {                                                                        \
@@ -180,7 +183,7 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
            SYMBOL_LANGUAGE (symbol) = language_cplus;                  \
            SYMBOL_CPLUS_DEMANGLED_NAME (symbol) =                      \
              obsavestring (demangled, strlen (demangled), (obstack));  \
-           free (demangled);                                           \
+           xfree (demangled);                                          \
          }                                                             \
        else                                                            \
          {                                                             \
@@ -197,7 +200,7 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
            SYMBOL_LANGUAGE (symbol) = language_java;                   \
            SYMBOL_CPLUS_DEMANGLED_NAME (symbol) =                      \
              obsavestring (demangled, strlen (demangled), (obstack));  \
-           free (demangled);                                           \
+           xfree (demangled);                                          \
          }                                                             \
        else                                                            \
          {                                                             \
@@ -215,17 +218,13 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
            SYMBOL_LANGUAGE (symbol) = language_chill;                  \
            SYMBOL_CHILL_DEMANGLED_NAME (symbol) =                      \
              obsavestring (demangled, strlen (demangled), (obstack));  \
-           free (demangled);                                           \
+           xfree (demangled);                                          \
          }                                                             \
        else                                                            \
          {                                                             \
            SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL;                \
          }                                                             \
       }                                                                        \
-    if (SYMBOL_LANGUAGE (symbol) == language_auto)                     \
-      {                                                                        \
-       SYMBOL_LANGUAGE (symbol) = language_unknown;                    \
-      }                                                                        \
   } while (0)
 
 /* Macro that returns the demangled name for a symbol based on the language
@@ -763,7 +762,7 @@ struct partial_symbol
 \f
 
 /* Source-file information.  This describes the relation between source files,
-   ine numbers and addresses in the program text.  */
+   line numbers and addresses in the program text.  */
 
 struct sourcevector
   {
@@ -830,8 +829,9 @@ struct section_offsets
   };
 
 #define        ANOFFSET(secoff, whichone) \
-   ((whichone == -1) ? \
-    (internal_error ("Section index is uninitialized"), -1) : secoff->offsets[whichone])
+   ((whichone == -1) \
+    ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
+    : secoff->offsets[whichone])
 
 /* The maximum possible size of a section_offsets table.  */
 
@@ -1046,34 +1046,6 @@ struct partial_symtab
 
 #define VTBL_FNADDR_OFFSET 2
 
-/* Macro that yields non-zero value iff NAME is the prefix for C++ operator
-   names.  If you leave out the parenthesis here you will lose!
-   Currently 'o' 'p' CPLUS_MARKER is used for both the symbol in the
-   symbol-file and the names in gdb's symbol table.
-   Note that this macro is g++ specific (FIXME). */
-
-#define OPNAME_PREFIX_P(NAME) \
-  ((NAME)[0] == 'o' && (NAME)[1] == 'p' && is_cplus_marker ((NAME)[2]))
-
-/* Macro that yields non-zero value iff NAME is the prefix for C++ vtbl
-   names.  Note that this macro is g++ specific (FIXME).
-   '_vt$' is the old cfront-style vtables; '_VT$' is the new
-   style, using thunks (where '$' is really CPLUS_MARKER). */
-
-#define VTBL_PREFIX_P(NAME) \
-  (((NAME)[0] == '_' \
-   && (((NAME)[1] == 'V' && (NAME)[2] == 'T') \
-       || ((NAME)[1] == 'v' && (NAME)[2] == 't')) \
-   && is_cplus_marker ((NAME)[3])) || ((NAME)[0]=='_' && (NAME)[1]=='_' \
-   && (NAME)[2]=='v' && (NAME)[3]=='t' && (NAME)[4]=='_'))
-
-/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor
-   names.  Note that this macro is g++ specific (FIXME).  */
-
-#define DESTRUCTOR_PREFIX_P(NAME) \
-  ((NAME)[0] == '_' && is_cplus_marker ((NAME)[1]) && (NAME)[2] == '_')
-\f
-
 /* External variables and functions for the objects described above. */
 
 /* This symtab variable specifies the current file for printing source lines */
@@ -1100,7 +1072,7 @@ extern int asm_demangle;
 
 /* lookup a symbol table by source file name */
 
-extern struct symtab *lookup_symtab (char *);
+extern struct symtab *lookup_symtab (const char *);
 
 /* lookup a symbol by name (optional block, optional symtab) */
 
@@ -1150,7 +1122,7 @@ find_pc_sect_partial_function (CORE_ADDR, asection *,
 
 /* lookup partial symbol table by filename */
 
-extern struct partial_symtab *lookup_partial_symtab (char *);
+extern struct partial_symtab *lookup_partial_symtab (const char *);
 
 /* lookup partial symbol table by address */
 
@@ -1351,9 +1323,6 @@ extern struct symtabs_and_lines decode_line_spec (char *, int);
 
 extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
 
-extern struct symtabs_and_lines
-decode_line_1 (char **, int, struct symtab *, int, char ***);
-
 /* Symmisc.c */
 
 void maintenance_print_symbols (char *, int);
@@ -1390,12 +1359,20 @@ extern void select_source_symtab (struct symtab *);
 
 extern char **make_symbol_completion_list (char *, char *);
 
+extern char **make_file_symbol_completion_list (char *, char *, char *);
+
 extern struct symbol **make_symbol_overload_list (struct symbol *);
 
+extern char **make_source_files_completion_list (char *, char *);
+
 /* symtab.c */
 
 extern struct partial_symtab *find_main_psymtab (void);
 
+extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
+
+extern struct symtab_and_line find_function_start_sal (struct symbol *sym, int);
+
 /* blockframe.c */
 
 extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
@@ -1423,7 +1400,7 @@ extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
 /* Symbol searching */
 
 /* When using search_symbols, a list of the following structs is returned.
-   Callers must free the search list using free_symbol_search! */
+   Callers must free the search list using free_search_symbols! */
 struct symbol_search
   {
     /* The block in which the match was found. Could be, for example,
@@ -1450,4 +1427,11 @@ extern void search_symbols (char *, namespace_enum, int, char **,
 extern void free_search_symbols (struct symbol_search *);
 extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search *);
 
+/* The name of the ``main'' function.
+   FIXME: cagney/2001-03-20: Can't make main_name() const since some
+   of the calling code currently assumes that the string isn't
+   const. */
+extern void set_main_name (const char *name);
+extern /*const*/ char *main_name (void);
+
 #endif /* !defined(SYMTAB_H) */