From 5d0027b9bab7cbf5eb41a8c8ad1b9e4650d5f87e Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 27 Jan 2022 22:39:50 -0500 Subject: [PATCH] gdb: remove SYMBOL_LINE macro Add a getter and a setter for a symbol's line. Remove the corresponding macro and adjust all callers. Change-Id: I229f2b8fcf938c07975f641361313a8761fad9a5 --- gdb/ada-lang.c | 4 ++-- gdb/compile/compile-c-symbols.c | 2 +- gdb/compile/compile-cplus-symbols.c | 2 +- gdb/compile/compile-cplus-types.c | 4 ++-- gdb/dwarf2/read.c | 2 +- gdb/frame.c | 4 ++-- gdb/guile/scm-symbol.c | 2 +- gdb/linespec.c | 6 +++--- gdb/mi/mi-symbol-cmds.c | 4 ++-- gdb/python/py-symbol.c | 2 +- gdb/stabsread.c | 4 ++-- gdb/symtab.c | 10 +++++----- gdb/symtab.h | 13 +++++++++++-- 13 files changed, 34 insertions(+), 25 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index fbeb176d566..0dd83cda8e5 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -3355,14 +3355,14 @@ See set/show multiple-symbol.")); if (syms[i].symbol->is_objfile_owned ()) symtab = symbol_symtab (syms[i].symbol); - if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL) + if (syms[i].symbol->line () != 0 && symtab != NULL) { printf_filtered ("[%d] ", i + first_choice); ada_print_symbol_signature (gdb_stdout, syms[i].symbol, &type_print_raw_options); printf_filtered (_(" at %s:%d\n"), symtab_to_filename_for_display (symtab), - SYMBOL_LINE (syms[i].symbol)); + syms[i].symbol->line ()); } else if (is_enumeral && syms[i].symbol->type ()->name () != NULL) diff --git a/gdb/compile/compile-c-symbols.c b/gdb/compile/compile-c-symbols.c index 4f7a5b22da5..bb156024ffa 100644 --- a/gdb/compile/compile-c-symbols.c +++ b/gdb/compile/compile-c-symbols.c @@ -58,7 +58,7 @@ convert_one_symbol (compile_c_instance *context, { gcc_type sym_type; const char *filename = symbol_symtab (sym.symbol)->filename; - unsigned short line = SYMBOL_LINE (sym.symbol); + unsigned short line = sym.symbol->line (); context->error_symbol_once (sym.symbol); diff --git a/gdb/compile/compile-cplus-symbols.c b/gdb/compile/compile-cplus-symbols.c index 7cf5703dc71..33febaccdfd 100644 --- a/gdb/compile/compile-cplus-symbols.c +++ b/gdb/compile/compile-cplus-symbols.c @@ -49,7 +49,7 @@ convert_one_symbol (compile_cplus_instance *instance, /* Squash compiler warning. */ gcc_type sym_type = 0; const char *filename = symbol_symtab (sym.symbol)->filename; - unsigned short line = SYMBOL_LINE (sym.symbol); + unsigned short line = sym.symbol->line (); instance->error_symbol_once (sym.symbol); diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c index 19879966986..f0ac05f4f2a 100644 --- a/gdb/compile/compile-cplus-types.c +++ b/gdb/compile/compile-cplus-types.c @@ -626,7 +626,7 @@ compile_cplus_convert_struct_or_union_members continue; } const char *filename = symbol_symtab (sym.symbol)->filename; - unsigned int line = SYMBOL_LINE (sym.symbol); + unsigned int line = sym.symbol->line (); physaddr = SYMBOL_VALUE_ADDRESS (sym.symbol); instance->plugin ().build_decl @@ -765,7 +765,7 @@ compile_cplus_convert_struct_or_union_methods (compile_cplus_instance *instance, } const char *filename = symbol_symtab (sym.symbol)->filename; - unsigned int line = SYMBOL_LINE (sym.symbol); + unsigned int line = sym.symbol->line (); CORE_ADDR address = BLOCK_START (SYMBOL_BLOCK_VALUE (sym.symbol)); const char *kind; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 3a22bcdd43d..c063e7baa2b 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -21727,7 +21727,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu, inlined_func ? DW_AT_call_line : DW_AT_decl_line, cu); if (attr != nullptr) - SYMBOL_LINE (sym) = attr->constant_value (0); + sym->set_line (attr->constant_value (0)); attr = dwarf2_attr (die, inlined_func ? DW_AT_call_file : DW_AT_decl_file, diff --git a/gdb/frame.c b/gdb/frame.c index 6e2f6b245a2..ce95cf8343b 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -2699,10 +2699,10 @@ find_frame_sal (frame_info *frame) gdb_assert (sym); symtab_and_line sal; - if (SYMBOL_LINE (sym) != 0) + if (sym->line () != 0) { sal.symtab = symbol_symtab (sym); - sal.line = SYMBOL_LINE (sym); + sal.line = sym->line (); } else /* If the symbol does not have a location, we don't know where diff --git a/gdb/guile/scm-symbol.c b/gdb/guile/scm-symbol.c index 4c28603fa63..dbe19865d4e 100644 --- a/gdb/guile/scm-symbol.c +++ b/gdb/guile/scm-symbol.c @@ -510,7 +510,7 @@ gdbscm_symbol_line (SCM self) = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); const struct symbol *symbol = s_smob->symbol; - return scm_from_int (SYMBOL_LINE (symbol)); + return scm_from_int (symbol->line ()); } /* (symbol-value [#:frame ]) -> diff --git a/gdb/linespec.c b/gdb/linespec.c index a8ae5943811..9e21df76efa 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -4451,7 +4451,7 @@ symbol_to_sal (struct symtab_and_line *result, *result = {}; result->symtab = symbol_symtab (sym); result->symbol = sym; - result->line = SYMBOL_LINE (sym); + result->line = sym->line (); result->pc = SYMBOL_VALUE_ADDRESS (sym); result->pspace = result->symtab->pspace (); result->explicit_pc = 1; @@ -4461,13 +4461,13 @@ symbol_to_sal (struct symtab_and_line *result, { /* Nothing. */ } - else if (SYMBOL_LINE (sym) != 0) + else if (sym->line () != 0) { /* We know its line number. */ *result = {}; result->symtab = symbol_symtab (sym); result->symbol = sym; - result->line = SYMBOL_LINE (sym); + result->line = sym->line (); result->pc = SYMBOL_VALUE_ADDRESS (sym); result->pspace = result->symtab->pspace (); return 1; diff --git a/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c index 6ed26d69269..1b08854296c 100644 --- a/gdb/mi/mi-symbol-cmds.c +++ b/gdb/mi/mi-symbol-cmds.c @@ -74,8 +74,8 @@ output_debug_symbol (ui_out *uiout, enum search_domain kind, { ui_out_emit_tuple tuple_emitter (uiout, NULL); - if (SYMBOL_LINE (sym) != 0) - uiout->field_unsigned ("line", SYMBOL_LINE (sym)); + if (sym->line () != 0) + uiout->field_unsigned ("line", sym->line ()); uiout->field_string ("name", sym->print_name ()); if (kind == FUNCTIONS_DOMAIN || kind == VARIABLES_DOMAIN) diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c index 747da481a1b..819a51f7e41 100644 --- a/gdb/python/py-symbol.c +++ b/gdb/python/py-symbol.c @@ -221,7 +221,7 @@ sympy_line (PyObject *self, void *closure) SYMPY_REQUIRE_VALID (self, symbol); - return gdb_py_object_from_longest (SYMBOL_LINE (symbol)).release (); + return gdb_py_object_from_longest (symbol->line ()).release (); } /* Implementation of gdb.Symbol.is_valid (self) -> Boolean. diff --git a/gdb/stabsread.c b/gdb/stabsread.c index d3a1ae99069..c6821f893cb 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -693,11 +693,11 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, { /* GCC 2.x puts the line number in desc. SunOS apparently puts in the number of bytes occupied by a type or object, which we ignore. */ - SYMBOL_LINE (sym) = desc; + sym->set_line (desc); } else { - SYMBOL_LINE (sym) = 0; /* unknown */ + sym->set_line (0); /* unknown */ } sym->set_language (get_current_subfile ()->language, diff --git a/gdb/symtab.c b/gdb/symtab.c index 8da86b61359..1a39372aad0 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3987,9 +3987,9 @@ skip_prologue_sal (struct symtab_and_line *sal) b = BLOCK_SUPERBLOCK (b); } if (function_block != NULL - && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0) + && BLOCK_FUNCTION (function_block)->line () != 0) { - sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block)); + sal->line = BLOCK_FUNCTION (function_block)->line (); sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block)); } } @@ -4850,7 +4850,7 @@ global_symbol_searcher::add_matching_symbols && sym->domain () != MODULE_DOMAIN) || (kind == MODULES_DOMAIN && sym->domain () == MODULE_DOMAIN - && SYMBOL_LINE (sym) != 0)))) + && sym->line () != 0)))) { if (result_set->size () < m_max_search_results) { @@ -5098,8 +5098,8 @@ print_symbol_info (enum search_domain kind, s_filename)); } - if (SYMBOL_LINE (sym) != 0) - printf_filtered ("%d:\t", SYMBOL_LINE (sym)); + if (sym->line () != 0) + printf_filtered ("%d:\t", sym->line ()); else puts_filtered ("\t"); } diff --git a/gdb/symtab.h b/gdb/symtab.h index 3486803cca8..d12eee6e9d8 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1213,6 +1213,16 @@ struct symbol : public general_symbol_info, public allocate_on_obstack m_type = type; } + unsigned short line () const + { + return m_line; + } + + void set_line (unsigned short line) + { + m_line = line; + } + /* Data type of value */ struct type *m_type = nullptr; @@ -1280,7 +1290,7 @@ struct symbol : public general_symbol_info, public allocate_on_obstack to debug files longer than 64K lines? What about machine generated programs? */ - unsigned short line = 0; + unsigned short m_line = 0; /* An arbitrary data pointer, allowing symbol readers to record additional information on a per-symbol basis. Note that this data @@ -1315,7 +1325,6 @@ struct block_symbol /* Note: There is no accessor macro for symbol.owner because it is "private". */ -#define SYMBOL_LINE(symbol) (symbol)->line #define SYMBOL_COMPUTED_OPS(symbol) ((symbol)->impl ().ops_computed) #define SYMBOL_BLOCK_OPS(symbol) ((symbol)->impl ().ops_block) #define SYMBOL_REGISTER_OPS(symbol) ((symbol)->impl ().ops_register) -- 2.30.2