78 #include "filenames.h" 207 #define INITIAL_CONTEXT_STACK_SIZE 10 208 #define INITIAL_LINE_VECTOR_LENGTH 1000 238 link->
next = *listhead;
243 (*listhead)->symbol[(*listhead)->nsyms++] =
symbol;
257 for (j = list->
nsyms; --j >= 0;)
260 if (*pp == *
name && strncmp (pp,
name, length) == 0
261 && pp[length] ==
'\0')
331 static struct block *
337 int is_global,
int expandable)
389 int nparams = 0, iparams;
410 if (iparams == nparams)
428 if (static_link != NULL)
433 for (next = *listhead; next; next = next1)
449 _(
"block end address less than block " 450 "start address in %s (patched it)"),
456 _(
"block end address %s less than block " 457 "start address %s (patched it)"),
470 pblock && pblock != old_blocks;
471 pblock = pblock->
next)
489 _(
"inner block not inside outer block in %s"),
495 _(
"inner block (%s-%s) not " 496 "inside outer block (%s-%s)"),
559 opblock->
next = pblock;
616 + (i - 1) *
sizeof (
struct block *)));
672 const char *subfile_dirname;
687 if (IS_ABSOLUTE_PATH (
name)
689 && subfile_dirname != NULL)
695 if (FILENAME_CMP (subfile_name,
name) == 0)
699 xfree (subfile_name);
703 xfree (subfile_name);
877 _(
"failed internal consistency check"));
891 _(
"failed internal consistency check"));
895 xfree ((
void *) link);
972 if (ln1->
pc < ln2->
pc)
975 if (ln1->
pc > ln2->
pc)
1129 && mainsub->
symtab == NULL)
1131 const char *mainbase = lbasename (mainsub->
name);
1134 struct subfile *mainsub_alias = NULL;
1135 struct subfile *prev_mainsub_alias = NULL;
1144 if (filename_cmp (lbasename (
subfile->
name), mainbase) == 0)
1148 prev_mainsub_alias = prevsub;
1153 if (nr_matches == 1)
1155 gdb_assert (mainsub_alias != NULL && mainsub_alias != mainsub);
1165 if (prev_mainsub_alias == NULL)
1168 prev_mainsub_alias->
next = mainsub_alias->
next;
1170 xfree (mainsub_alias);
1241 _(
"Context stack not empty in end_symtab"));
1253 std::vector<block *> barray;
1256 barray.push_back (pb->
block);
1261 std::stable_sort (barray.begin (), barray.end (),
1269 pb->
block = barray[i++];
1311 int section,
int expandable)
1349 int linetablesize = 0;
1353 linetablesize =
sizeof (
struct linetable) +
1396 struct symtab *main_symtab, *prev_symtab;
1402 if (
symtab == main_symtab)
1404 if (prev_symtab != NULL)
1406 prev_symtab->
next = main_symtab->
next;
1489 int section,
int expandable)
1493 if (static_block == NULL)
1538 struct block *static_block;
1549 struct block *static_block;
1589 _(
"Context stack not empty in augment_type_symtab"));
1598 _(
"Line numbers recorded in a type symtab"));
1643 newobj->
depth = desc;
1648 newobj->
name = NULL;
1702 if (!srclist || !*srclist)
1706 for (i = 0; i < (*srclist)->nsyms; i++)
static struct buildsym_compunit * buildsym_compunit
EXTERN struct context_stack * context_stack
char * hex_string(LONGEST num)
static void prepare_for_building(const char *name, CORE_ADDR start_addr)
static void set_missing_symtab(struct pending *pending_list, struct compunit_symtab *cu)
struct block * finish_block(struct symbol *symbol, struct pending **listhead, struct pending_block *old_blocks, const struct dynamic_prop *static_link, CORE_ADDR start, CORE_ADDR end)
#define COMPUNIT_DEBUGFORMAT(cust)
#define SYMBOL_PRINT_NAME(symbol)
void symbol_set_symtab(struct symbol *symbol, struct symtab *symtab)
struct linetable_entry item[1]
void record_block_range(struct block *block, CORE_ADDR start, CORE_ADDR end_inclusive)
static int compare_line_numbers(const void *ln1p, const void *ln2p)
int hashname(const char *name)
struct using_direct * local_using_directives
struct subfile * main_subfile
void add_symbol_to_list(struct symbol *symbol, struct pending **listhead)
#define TYPE_FIELD_ARTIFICIAL(thistype, n)
struct dictionary * dict_create_linear(struct obstack *obstack, enum language language, const struct pending *symbol_list)
void patch_subfile_names(struct subfile *subfile, const char *name)
void set_last_source_file(const char *name)
EXTERN struct using_direct * global_using_directives
struct compunit_symtab * allocate_compunit_symtab(struct objfile *objfile, const char *name)
static int pending_addrmap_interesting
struct compunit_symtab * end_symtab(CORE_ADDR end_addr, int section)
#define COMPUNIT_MACRO_TABLE(cust)
void * memset(T *s, int c, size_t n)=delete
void internal_error(const char *file, int line, const char *fmt,...)
EXTERN struct pending * file_symbols
#define ALL_DICT_SYMBOLS(dict, iter, sym)
struct symbol * symbol[PENDINGSIZE]
void augment_type_symtab(void)
static void reset_symtab_globals(void)
#define BLOCKVECTOR_BLOCK(blocklist, n)
static struct pending * free_pendings
static struct block * finish_block_internal(struct symbol *symbol, struct pending **listhead, struct pending_block *old_blocks, const struct dynamic_prop *static_link, CORE_ADDR start, CORE_ADDR end, int is_global, int expandable)
EXTERN int context_stack_depth
void record_line(struct subfile *subfile, int line, CORE_ADDR pc)
#define COMPUNIT_DIRNAME(cust)
static void free_buildsym_compunit(void)
#define TYPE_FIELD_TYPE(thistype, n)
static struct buildsym_compunit * start_buildsym_compunit(struct objfile *objfile, const char *comp_dir, enum language language)
void free_pending_blocks(void)
struct objfile_per_bfd_storage * per_bfd
struct macro_table * get_macro_table(void)
struct compunit_symtab * buildsym_compunit_symtab(void)
void restart_symtab(struct compunit_symtab *cust, const char *name, CORE_ADDR start_addr)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
struct compunit_symtab * compunit_symtab
struct block * end_symtab_get_static_block(CORE_ADDR end_addr, int expandable, int required)
#define BLOCK_FUNCTION(bl)
EXTERN struct subfile * current_subfile
void block_set_using(struct block *block, struct using_direct *using_decl, struct obstack *obstack)
static struct addrmap * pending_addrmap
void finish_global_stabs(struct objfile *objfile)
static struct obstack pending_block_obstack
void merge_symbol_lists(struct pending **srclist, struct pending **targetlist)
#define INITIAL_LINE_VECTOR_LENGTH
EXTERN struct pending * global_symbols
objfile(bfd *, const char *, objfile_flags)
struct pending_block * old_blocks
void dict_add_pending(struct dictionary *dict, const struct pending *symbol_list)
struct compunit_symtab * end_symtab_from_static_block(struct block *static_block, int section, int expandable)
#define INITIAL_CONTEXT_STACK_SIZE
struct buildsym_compunit * buildsym_compunit
void cleanup_undefined_stabs_types(struct objfile *objfile)
const struct sym_fns * sf
void buildsym_new_init(void)
static int have_line_numbers
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
EXTERN struct pending * local_symbols
struct addrmap * addrmap_create_mutable(struct obstack *obstack)
void add_compunit_symtab_to_objfile(struct compunit_symtab *cu)
struct compunit_symtab * end_expandable_symtab(CORE_ADDR end_addr, int section)
#define BLOCK_SUPERBLOCK(bl)
struct pending_block * next
struct context_stack * pop_context(void)
#define COMPUNIT_PRODUCER(cust)
const char * get_last_source_file(void)
#define SYMBOL_LINKAGE_NAME(symbol)
#define complaint(COMPLAINTS, FMT,...)
static void record_pending_block(struct objfile *objfile, struct block *block, struct pending_block *opblock)
struct block * allocate_block(struct obstack *obstack)
#define TYPE_FIELDS(thistype)
void addrmap_set_empty(struct addrmap *map, CORE_ADDR start, CORE_ADDR end_inclusive, void *obj)
struct subfile_stack * next
unsigned long hash(const void *addr, int length)
PTR xrealloc(PTR ptr, size_t size)
#define COMPUNIT_BLOCKVECTOR(cust)
static struct mdebug_pending ** pending_list
void(* sym_read_linetable)(struct objfile *)
EXTERN int context_stack_size
enum language deduce_language_from_filename(const char *filename)
#define SYMBOL_BLOCK_VALUE(symbol)
static void watch_main_source_file_lossage(void)
struct subfile * subfiles
static struct obstack pending_addrmap_obstack
void record_debugformat(const char *format)
struct complaints * symfile_complaints
EXTERN struct using_direct * local_using_directives
#define COMPUNIT_BLOCK_LINE_SECTION(cust)
#define COMPUNIT_OBJFILE(cust)
struct symtab * allocate_symtab(struct compunit_symtab *cust, const char *filename)
#define TYPE_NFIELDS(thistype)
struct general_symbol_info ginfo
EXTERN CORE_ADDR last_source_start_addr
enum language compunit_language(const struct compunit_symtab *cust)
struct addrmap * addrmap_create_fixed(struct addrmap *original, struct obstack *obstack)
#define COMPUNIT_FILETABS(cust)
static struct macro_table * pending_macros
struct dictionary * dict_create_hashed(struct obstack *obstack, enum language language, const struct pending *symbol_list)
#define BLOCKVECTOR_NBLOCKS(blocklist)
void start_subfile(const char *name)
void free_macro_table(struct macro_table *table)
static struct pending_block * pending_blocks
void set_block_compunit_symtab(struct block *block, struct compunit_symtab *cu)
static struct compunit_symtab * end_symtab_with_blockvector(struct block *static_block, int section, int expandable)
void objfile_register_static_link(struct objfile *objfile, const struct block *block, const struct dynamic_prop *static_link)
#define TYPE_ALLOC(t, size)
#define SYMBOL_TYPE(symbol)
struct symbol * find_symbol_in_list(struct pending *list, char *name, int length)
struct context_stack * push_context(int desc, CORE_ADDR valu)
#define ALL_COMPUNIT_FILETABS(cu, s)
#define BLOCKVECTOR_MAP(blocklist)
auto_obstack storage_obstack
static struct subfile_stack * subfile_stack
struct block * allocate_global_block(struct obstack *obstack)
struct dictionary * dict_create_hashed_expandable(enum language language)
static struct blockvector * make_blockvector(void)
struct compunit_symtab * start_symtab(struct objfile *objfile, const char *name, const char *comp_dir, CORE_ADDR start_addr, enum language language)
EXTERN int within_function
struct symtab * symbol_symtab(const struct symbol *symbol)
void record_producer(const char *producer)
#define SYMTAB_LINETABLE(symtab)
struct linetable * line_vector
struct macro_table * new_macro_table(struct obstack *obstack, struct bcache *b, struct compunit_symtab *cust)
static char * last_source_file
#define SYMBOL_IS_ARGUMENT(symbol)