diff options
author | Tom Tromey <tom@tromey.com> | 2018-05-21 09:12:54 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-07-20 09:42:46 -0600 |
commit | e148f09d75af9e5c6af5136fee3a5a298114d41f (patch) | |
tree | 0f9ca53921bd325bae5d3cd079cead946204ac60 /gdb/stabsread.c | |
parent | 93b8bea4143cafae79076076c64aaa4c46a9b73c (diff) | |
download | binutils-gdb-e148f09d75af9e5c6af5136fee3a5a298114d41f.tar.gz |
Move the symbol lists to buildsym_compunit
This moves the global symbol lists into buildsym_compunit, adds
accessors, and updates all the users.
gdb/ChangeLog
2018-07-20 Tom Tromey <tom@tromey.com>
* xcoffread.c (read_xcoff_symtab, process_xcoff_symbol): Update.
* stabsread.c (patch_block_stabs, define_symbol, read_type)
(read_enum_type, common_block_start, common_block_end)
(cleanup_undefined_types_1, finish_global_stabs): Update.
* mdebugread.c (psymtab_to_symtab_1): Update.
* dwarf2read.c (fixup_go_packaging, read_func_scope)
(read_lexical_block_scope, new_symbol): Update.
* dbxread.c (process_one_symbol): Update.
* coffread.c (coff_symtab_read, process_coff_symbol)
(coff_read_enum_type): Update.
* buildsym.h (file_symbols, global_symbols, local_symbols): Don't
declare.
(get_local_symbols, get_file_symbols, get_global_symbols): New
functions.
* buildsym.c (~buildsym_compunit): Clean up m_file_symbols and
m_global_symbols.
<m_file_symbols, m_local_symbols, m_global_symbols>: New members.
(~scoped_free_pendings): Update.
(finish_block, prepare_for_building, reset_symtab_globals)
(end_symtab_get_static_block, end_symtab_with_blockvector)
(augment_type_symtab, push_context): Update.
(get_local_symbols, get_file_symbols, get_global_symbols): New
functions.
(buildsym_init): Update.
Diffstat (limited to 'gdb/stabsread.c')
-rw-r--r-- | gdb/stabsread.c | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/gdb/stabsread.c b/gdb/stabsread.c index ad7b459d722..e592edd4a33 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -432,7 +432,7 @@ patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs, { SYMBOL_TYPE (sym) = read_type (&pp, objfile); } - add_symbol_to_list (sym, &global_symbols); + add_symbol_to_list (sym, get_global_symbols ()); } else { @@ -789,7 +789,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; SYMBOL_TYPE (sym) = error_type (&p, objfile); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); return sym; } ++p; @@ -848,7 +848,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; SYMBOL_TYPE (sym) = error_type (&p, objfile); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); return sym; } @@ -873,7 +873,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; SYMBOL_TYPE (sym) = error_type (&p, objfile); SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); return sym; } @@ -928,7 +928,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, } } SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); return sym; case 'C': @@ -937,7 +937,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_VALUE_ADDRESS (sym) = valu; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'f': @@ -945,7 +945,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_TYPE (sym) = read_type (&p, objfile); SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); /* fall into process_function_types. */ process_function_types: @@ -1016,7 +1016,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_TYPE (sym) = read_type (&p, objfile); SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &global_symbols); + add_symbol_to_list (sym, get_global_symbols ()); goto process_function_types; case 'G': @@ -1037,7 +1037,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i]; global_sym_chain[i] = sym; } - add_symbol_to_list (sym, &global_symbols); + add_symbol_to_list (sym, get_global_symbols ()); break; /* This case is faked by a conditional above, @@ -1049,7 +1049,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL; SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'p': @@ -1070,7 +1070,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_IS_ARGUMENT (sym) = 1; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG) { @@ -1119,7 +1119,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_IS_ARGUMENT (sym) = 1; SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'r': @@ -1150,6 +1150,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, but this case is considered pathological and causes a warning from a decent compiler. */ + struct pending *local_symbols = *get_local_symbols (); if (local_symbols && local_symbols->nsyms > 0 && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))) @@ -1171,10 +1172,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, break; } } - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); } else - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); break; case 'S': @@ -1201,7 +1202,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, } } SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); break; case 't': @@ -1305,7 +1306,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym); } - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); if (synonym) { @@ -1321,7 +1322,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, = obconcat (&objfile->objfile_obstack, SYMBOL_LINKAGE_NAME (sym), (char *) NULL); - add_symbol_to_list (struct_sym, &file_symbols); + add_symbol_to_list (struct_sym, get_file_symbols ()); } break; @@ -1349,7 +1350,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, = obconcat (&objfile->objfile_obstack, SYMBOL_LINKAGE_NAME (sym), (char *) NULL); - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); if (synonym) { @@ -1365,7 +1366,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, = obconcat (&objfile->objfile_obstack, SYMBOL_LINKAGE_NAME (sym), (char *) NULL); - add_symbol_to_list (typedef_sym, &file_symbols); + add_symbol_to_list (typedef_sym, get_file_symbols ()); } break; @@ -1393,7 +1394,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, } } SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'v': @@ -1403,7 +1404,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_IS_ARGUMENT (sym) = 1; SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'a': @@ -1413,7 +1414,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_IS_ARGUMENT (sym) = 1; SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; case 'X': @@ -1425,7 +1426,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL; SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &local_symbols); + add_symbol_to_list (sym, get_local_symbols ()); break; default: @@ -1433,7 +1434,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, SYMBOL_ACLASS_INDEX (sym) = LOC_CONST; SYMBOL_VALUE (sym) = 0; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; - add_symbol_to_list (sym, &file_symbols); + add_symbol_to_list (sym, get_file_symbols ()); break; } @@ -1675,7 +1676,7 @@ again: type, rather than allocating a new one. This saves some memory. */ - for (ppt = file_symbols; ppt; ppt = ppt->next) + for (ppt = *get_file_symbols (); ppt; ppt = ppt->next) for (i = 0; i < ppt->nsyms; i++) { struct symbol *sym = ppt->symbol[i]; @@ -3642,10 +3643,10 @@ read_enum_type (const char **pp, struct type *type, to be file-scope, between N_FN entries, using N_LSYM. What's a mother to do? For now, force all enum values to file scope. */ if (within_function) - symlist = &local_symbols; + symlist = get_local_symbols (); else #endif - symlist = &file_symbols; + symlist = get_file_symbols (); osyms = *symlist; o_nsyms = osyms ? osyms->nsyms : 0; @@ -4316,8 +4317,8 @@ common_block_start (const char *name, struct objfile *objfile) { complaint (_("Invalid symbol data: common block within common block")); } - common_block = local_symbols; - common_block_i = local_symbols ? local_symbols->nsyms : 0; + common_block = *get_local_symbols (); + common_block_i = common_block ? common_block->nsyms : 0; common_block_name = (char *) obstack_copy0 (&objfile->objfile_obstack, name, strlen (name)); } @@ -4352,7 +4353,7 @@ common_block_end (struct objfile *objfile) /* Now we copy all the symbols which have been defined since the BCOMM. */ /* Copy all the struct pendings before common_block. */ - for (next = local_symbols; + for (next = *get_local_symbols (); next != NULL && next != common_block; next = next->next) { @@ -4545,7 +4546,7 @@ cleanup_undefined_types_1 (void) complaint (_("need a type name")); break; } - for (ppt = file_symbols; ppt; ppt = ppt->next) + for (ppt = *get_file_symbols (); ppt; ppt = ppt->next) { for (i = 0; i < ppt->nsyms; i++) { @@ -4781,7 +4782,7 @@ finish_global_stabs (struct objfile *objfile) { if (global_stabs) { - patch_block_stabs (global_symbols, global_stabs, objfile); + patch_block_stabs (*get_global_symbols (), global_stabs, objfile); xfree (global_stabs); global_stabs = NULL; } |