#define SYMTAB_H 1
#include "vec.h"
+#include "gdb_vecs.h"
/* Opaque declarations. */
struct ui_file;
struct program_space;
struct language_defn;
struct probe;
+struct common_block;
/* Some of the structures in this file are space critical.
The space-critical structures are:
CORE_ADDR address;
+ /* A common block. Used with COMMON_BLOCK_DOMAIN. */
+
+ struct common_block *common_block;
+
/* For opaque typedef struct chain. */
struct symbol *chain;
#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue
#define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address
#define SYMBOL_VALUE_BYTES(symbol) (symbol)->ginfo.value.bytes
+#define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->ginfo.value.common_block
#define SYMBOL_BLOCK_VALUE(symbol) (symbol)->ginfo.value.block
#define SYMBOL_VALUE_CHAIN(symbol) (symbol)->ginfo.value.chain
#define SYMBOL_LANGUAGE(symbol) (symbol)->ginfo.language
ENUM_BITFIELD(minimal_symbol_type) type : 8;
+ /* Non-zero if this symbol was created by gdb.
+ Such symbols do not appear in the output of "info var|fun". */
+ unsigned int created_by_gdb : 1;
+
/* Two flag bits provided for the use of the target. */
unsigned int target_flag_1 : 1;
unsigned int target_flag_2 : 1;
+ /* Nonzero iff the size of the minimal symbol has been set.
+ Symbol size information can sometimes not be determined, because
+ the object file format may not carry that piece of information. */
+ unsigned int has_size : 1;
+
/* Minimal symbols with the same hash key are kept on a linked
list. This is the link. */
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
-#define MSYMBOL_SIZE(msymbol) (msymbol)->size
+#define MSYMBOL_SIZE(msymbol) ((msymbol)->size + 0)
+#define SET_MSYMBOL_SIZE(msymbol, sz) \
+ do \
+ { \
+ (msymbol)->size = sz; \
+ (msymbol)->has_size = 1; \
+ } while (0)
+#define MSYMBOL_HAS_SIZE(msymbol) ((msymbol)->has_size + 0)
#define MSYMBOL_TYPE(msymbol) (msymbol)->type
#include "minsyms.h"
/* LABEL_DOMAIN may be used for names of labels (for gotos). */
- LABEL_DOMAIN
+ LABEL_DOMAIN,
+
+ /* Fortran common blocks. Their naming must be separate from VAR_DOMAIN. */
+ COMMON_BLOCK_DOMAIN
} domain_enum;
/* Searching domains, used for `search_symbols'. Element numbers are
extern void resolve_sal_pc (struct symtab_and_line *);
-/* Given a string, return the line specified by it. For commands like "list"
- and "breakpoint". */
-
-extern struct symtabs_and_lines decode_line_spec (char *, int);
-
-extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
-
/* Symmisc.c */
void maintenance_print_symbols (char *, int);
extern void select_source_symtab (struct symtab *);
-extern char **default_make_symbol_completion_list_break_on
+extern VEC (char_ptr) *default_make_symbol_completion_list_break_on
(char *text, char *word, const char *break_on);
-extern char **default_make_symbol_completion_list (char *, char *);
-extern char **make_symbol_completion_list (char *, char *);
-extern char **make_symbol_completion_list_fn (struct cmd_list_element *,
- char *, char *);
+extern VEC (char_ptr) *default_make_symbol_completion_list (char *, char *);
+extern VEC (char_ptr) *make_symbol_completion_list (char *, char *);
+extern VEC (char_ptr) *make_symbol_completion_list_fn (struct cmd_list_element *,
+ char *, char *);
-extern char **make_file_symbol_completion_list (char *, char *, char *);
+extern VEC (char_ptr) *make_file_symbol_completion_list (char *,
+ char *, char *);
-extern char **make_source_files_completion_list (char *, char *);
+extern VEC (char_ptr) *make_source_files_completion_list (char *, char *);
/* symtab.c */
struct objfile *lookup_objfile_from_block (const struct block *block);
+extern int symtab_create_debug;
+
extern int basenames_may_differ;
int compare_filenames_for_search (const char *filename,