From 012cfab919e7da355b2ac7f86674211cbce26041 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Sat, 20 Nov 2021 21:32:41 -0500 Subject: [PATCH] gdb: remove SYMTAB_BLOCKVECTOR macro Remove the macro, replace with an equivalent method. Change-Id: Id6fe2a79c04bcd6c69ccaefb7a69bc06a476288c --- gdb/ada-exp.y | 2 +- gdb/ada-lang.c | 4 ++-- gdb/c-exp.y | 2 +- gdb/coffread.c | 2 +- gdb/compile/compile-object-load.c | 2 +- gdb/compile/compile.c | 2 +- gdb/guile/scm-symtab.c | 4 ++-- gdb/linespec.c | 6 +++--- gdb/mdebugread.c | 14 +++++++------- gdb/p-exp.y | 2 +- gdb/parse.c | 2 +- gdb/python/py-symtab.c | 4 ++-- gdb/symmisc.c | 2 +- gdb/symtab.h | 10 ++++++++-- 14 files changed, 32 insertions(+), 26 deletions(-) diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y index 16ba336df4a..0d5083f513b 100644 --- a/gdb/ada-exp.y +++ b/gdb/ada-exp.y @@ -1302,7 +1302,7 @@ block_lookup (const struct block *context, const char *raw_name) symtab = NULL; if (symtab != NULL) - result = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), STATIC_BLOCK); + result = BLOCKVECTOR_BLOCK (symtab->blockvector (), STATIC_BLOCK); else if (syms.empty () || SYMBOL_CLASS (syms[0].symbol) != LOC_BLOCK) { if (context == NULL) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 2bb64ae03bd..f3b8442b550 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -4384,9 +4384,9 @@ cache_symbol (const char *name, domain_enum domain, struct symbol *sym, the symbol is local or not, we check the block where we found it against the global and static blocks of its associated symtab. */ if (sym - && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)), + && BLOCKVECTOR_BLOCK (symbol_symtab (sym)->blockvector (), GLOBAL_BLOCK) != block - && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)), + && BLOCKVECTOR_BLOCK (symbol_symtab (sym)->blockvector (), STATIC_BLOCK) != block) return; diff --git a/gdb/c-exp.y b/gdb/c-exp.y index 464ed44a229..4b58ce04100 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -3109,7 +3109,7 @@ classify_name (struct parser_state *par_state, const struct block *block, symtab = lookup_symtab (copy.c_str ()); if (symtab) { - yylval.bval = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), + yylval.bval = BLOCKVECTOR_BLOCK (symtab->blockvector (), STATIC_BLOCK); return FILENAME; } diff --git a/gdb/coffread.c b/gdb/coffread.c index f6bf973e9f7..af0699bed2d 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -1483,7 +1483,7 @@ patch_opaque_types (struct symtab *s) struct symbol *real_sym; /* Go through the per-file symbols only. */ - b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), STATIC_BLOCK); + b = BLOCKVECTOR_BLOCK (s->blockvector (), STATIC_BLOCK); ALL_BLOCK_SYMBOLS (b, iter, real_sym) { /* Find completed typedefs to use to fix opaque ones. diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c index 336e8d3d435..692e9906fd7 100644 --- a/gdb/compile/compile-object-load.c +++ b/gdb/compile/compile-object-load.c @@ -421,7 +421,7 @@ get_out_value_type (struct symbol *func_sym, struct objfile *objfile, lookup_name_info func_matcher (GCC_FE_WRAPPER_FUNCTION, symbol_name_match_type::SEARCH_NAME); - bv = SYMTAB_BLOCKVECTOR (func_sym->owner.symtab); + bv = func_sym->owner.symtab->blockvector (); nblocks = BLOCKVECTOR_NBLOCKS (bv); gdb_ptr_type_sym = NULL; diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index 7bd6ac817b8..5ab4e48f306 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -484,7 +484,7 @@ get_expr_block_and_pc (CORE_ADDR *pc) struct symtab_and_line cursal = get_current_source_symtab_and_line (); if (cursal.symtab) - block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (cursal.symtab), + block = BLOCKVECTOR_BLOCK (cursal.symtab->blockvector (), STATIC_BLOCK); if (block != NULL) *pc = BLOCK_ENTRY_PC (block); diff --git a/gdb/guile/scm-symtab.c b/gdb/guile/scm-symtab.c index 40410f7b9fb..e2a90e58016 100644 --- a/gdb/guile/scm-symtab.c +++ b/gdb/guile/scm-symtab.c @@ -363,7 +363,7 @@ gdbscm_symtab_global_block (SCM self) const struct blockvector *blockvector; const struct block *block; - blockvector = SYMTAB_BLOCKVECTOR (symtab); + blockvector = symtab->blockvector (); block = BLOCKVECTOR_BLOCK (blockvector, GLOBAL_BLOCK); return bkscm_scm_from_block (block, SYMTAB_OBJFILE (symtab)); @@ -381,7 +381,7 @@ gdbscm_symtab_static_block (SCM self) const struct blockvector *blockvector; const struct block *block; - blockvector = SYMTAB_BLOCKVECTOR (symtab); + blockvector = symtab->blockvector (); block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK); return bkscm_scm_from_block (block, SYMTAB_OBJFILE (symtab)); diff --git a/gdb/linespec.c b/gdb/linespec.c index acbcc0916cc..31e3b36d3aa 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1190,10 +1190,10 @@ iterate_over_all_matching_symtabs int i; for (i = FIRST_LOCAL_BLOCK; - i < BLOCKVECTOR_NBLOCKS (SYMTAB_BLOCKVECTOR (symtab)); + i < BLOCKVECTOR_NBLOCKS (symtab->blockvector ()); i++) { - block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), i); + block = BLOCKVECTOR_BLOCK (symtab->blockvector (), i); state->language->iterate_over_symbols (block, lookup_name, name_domain, [&] (block_symbol *bsym) @@ -1232,7 +1232,7 @@ iterate_over_file_blocks { const struct block *block; - for (block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), STATIC_BLOCK); + for (block = BLOCKVECTOR_BLOCK (symtab->blockvector (), STATIC_BLOCK); block != NULL; block = BLOCK_SUPERBLOCK (block)) current_language->iterate_over_symbols (block, name, domain, callback); diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index 192fafa5d02..b98ac8fe799 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -628,7 +628,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, break; case stGlobal: /* External symbol, goes into global block. */ - b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (top_stack->cur_st), + b = BLOCKVECTOR_BLOCK (top_stack->cur_st->blockvector (), GLOBAL_BLOCK); s = new_symbol (name); SET_SYMBOL_VALUE_ADDRESS (s, (CORE_ADDR) sh->value); @@ -771,7 +771,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, if (sh->st == stProc) { const struct blockvector *bv - = SYMTAB_BLOCKVECTOR (top_stack->cur_st); + = top_stack->cur_st->blockvector (); /* The next test should normally be true, but provides a hook for nested functions (which we don't want to make @@ -1144,7 +1144,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, { /* Finished with procedure */ const struct blockvector *bv - = SYMTAB_BLOCKVECTOR (top_stack->cur_st); + = top_stack->cur_st->blockvector (); struct mdebug_extra_func_info *e; struct block *cblock = top_stack->cur_block; struct type *ftype = top_stack->cur_type; @@ -4186,7 +4186,7 @@ mdebug_expand_psymtab (legacy_psymtab *pst, struct objfile *objfile) FIXME, Maybe quit once we have found the right number of ext's? */ top_stack->cur_st = cust->primary_filetab (); top_stack->cur_block - = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (top_stack->cur_st), + = BLOCKVECTOR_BLOCK (top_stack->cur_st->blockvector (), GLOBAL_BLOCK); top_stack->blocktype = stFile; @@ -4496,13 +4496,13 @@ add_block (struct block *b, struct symtab *s) { /* Cast away "const", but that's ok because we're building the symtab and blockvector here. */ - struct blockvector *bv = (struct blockvector *) SYMTAB_BLOCKVECTOR (s); + struct blockvector *bv = (struct blockvector *) s->blockvector (); bv = (struct blockvector *) xrealloc ((void *) bv, (sizeof (struct blockvector) + BLOCKVECTOR_NBLOCKS (bv) * sizeof (bv->block))); - if (bv != SYMTAB_BLOCKVECTOR (s)) + if (bv != s->blockvector ()) s->compunit ()->set_blockvector (bv); BLOCKVECTOR_BLOCK (bv, BLOCKVECTOR_NBLOCKS (bv)++) = b; @@ -4566,7 +4566,7 @@ sort_blocks (struct symtab *s) { /* We have to cast away const here, but this is ok because we're constructing the blockvector in this code. */ - struct blockvector *bv = (struct blockvector *) SYMTAB_BLOCKVECTOR (s); + struct blockvector *bv = (struct blockvector *) s->blockvector (); if (BLOCKVECTOR_NBLOCKS (bv) <= FIRST_LOCAL_BLOCK) { diff --git a/gdb/p-exp.y b/gdb/p-exp.y index 62b0a3be5a9..10738d073f6 100644 --- a/gdb/p-exp.y +++ b/gdb/p-exp.y @@ -619,7 +619,7 @@ block : BLOCKNAME struct symtab *tem = lookup_symtab (copy.c_str ()); if (tem) - $$ = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (tem), + $$ = BLOCKVECTOR_BLOCK (tem->blockvector (), STATIC_BLOCK); else error (_("No file or function \"%s\"."), diff --git a/gdb/parse.c b/gdb/parse.c index a6595e3da06..23f0e66bf27 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -462,7 +462,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc, struct symtab_and_line cursal = get_current_source_symtab_and_line (); if (cursal.symtab) expression_context_block - = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (cursal.symtab), + = BLOCKVECTOR_BLOCK (cursal.symtab->blockvector (), STATIC_BLOCK); if (expression_context_block) expression_context_pc = BLOCK_ENTRY_PC (expression_context_block); diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c index b5d102c1b7f..33657f1e6e4 100644 --- a/gdb/python/py-symtab.c +++ b/gdb/python/py-symtab.c @@ -181,7 +181,7 @@ stpy_global_block (PyObject *self, PyObject *args) STPY_REQUIRE_VALID (self, symtab); - blockvector = SYMTAB_BLOCKVECTOR (symtab); + blockvector = symtab->blockvector (); block = BLOCKVECTOR_BLOCK (blockvector, GLOBAL_BLOCK); return block_to_block_object (block, SYMTAB_OBJFILE (symtab)); } @@ -197,7 +197,7 @@ stpy_static_block (PyObject *self, PyObject *args) STPY_REQUIRE_VALID (self, symtab); - blockvector = SYMTAB_BLOCKVECTOR (symtab); + blockvector = symtab->blockvector (); block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK); return block_to_block_object (block, SYMTAB_OBJFILE (symtab)); } diff --git a/gdb/symmisc.c b/gdb/symmisc.c index 24b2915a3ac..3f5f840fbe7 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -278,7 +278,7 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile) if (is_main_symtab_of_compunit_symtab (symtab)) { fprintf_filtered (outfile, "\nBlockvector:\n\n"); - bv = SYMTAB_BLOCKVECTOR (symtab); + bv = symtab->blockvector (); len = BLOCKVECTOR_NBLOCKS (bv); for (i = 0; i < len; i++) { diff --git a/gdb/symtab.h b/gdb/symtab.h index 28309695bca..1935113336a 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1403,6 +1403,8 @@ struct symtab m_language = language; } + const struct blockvector *blockvector () const; + /* Unordered chain of all filetabs in the compunit, with the exception that the "main" source file is the first entry in the list. */ @@ -1435,8 +1437,6 @@ struct symtab using symtab_range = next_range; -#define SYMTAB_BLOCKVECTOR(symtab) \ - (symtab->compunit ()->blockvector ()) #define SYMTAB_OBJFILE(symtab) \ (symtab->compunit ()->objfile ()) #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace) @@ -1683,6 +1683,12 @@ struct compunit_symtab using compunit_symtab_range = next_range; +inline const struct blockvector * +symtab::blockvector () const +{ + return this->compunit ()->blockvector (); +} + /* Return the language of CUST. */ extern enum language compunit_language (const struct compunit_symtab *cust); -- 2.30.2