X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Flinespec.c;h=9c17331a9343514edc02a621ed0cb43393fc4d97;hb=c1b5c1ebc938b6dc0277363b8c47d75b0b5a621f;hp=6d26638296ea331ef3f06ba6ad9d2e5ba7902f43;hpb=cc06b668978e542ecbc2aff1beca40e5baff86b0;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/linespec.c b/gdb/linespec.c index 6d26638296..9c17331a93 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -44,8 +44,8 @@ #include "ada-lang.h" #include "stack.h" #include "location.h" -#include "common/function-view.h" -#include "common/def-vector.h" +#include "gdbsupport/function-view.h" +#include "gdbsupport/def-vector.h" #include /* An enumeration of the various things a user might attempt to @@ -555,7 +555,7 @@ copy_token_string (linespec_token token) const char *str, *s; if (token.type == LSTOKEN_KEYWORD) - return gdb::unique_xmalloc_ptr (xstrdup (LS_TOKEN_KEYWORD (token))); + return make_unique_xstrdup (LS_TOKEN_KEYWORD (token)); str = LS_TOKEN_STOKEN (token).ptr; s = remove_trailing_whitespace (str, str + LS_TOKEN_STOKEN (token).length); @@ -760,7 +760,9 @@ linespec_lexer_lex_string (linespec_parser *parser) /* Do not tokenize ABI tags such as "[abi:cxx11]". */ else if (PARSER_STREAM (parser) - start > 4 && startswith (PARSER_STREAM (parser) - 4, "[abi")) - ++(PARSER_STREAM (parser)); + { + /* Nothing. */ + } /* Do not tokenify if the input length so far is one (i.e, a single-letter drive name) and the next character @@ -861,6 +863,7 @@ linespec_lexer_lex_string (linespec_parser *parser) } /* Advance the stream. */ + gdb_assert (*(PARSER_STREAM (parser)) != '\0'); ++(PARSER_STREAM (parser)); } } @@ -1486,7 +1489,7 @@ decode_line_2 (struct linespec_state *self, std::vector *result, const char *select_mode) { - char *args; + const char *args; const char *prompt; int i; std::vector filters; @@ -2063,8 +2066,7 @@ canonicalize_linespec (struct linespec_state *state, const linespec_p ls) gdb_assert (!ls->labels.function_symbols->empty () && (ls->labels.function_symbols->size () == 1)); block_symbol s = ls->labels.function_symbols->front (); - explicit_loc->function_name - = xstrdup (SYMBOL_NATURAL_NAME (s.symbol)); + explicit_loc->function_name = xstrdup (s.symbol->natural_name ()); } } @@ -2192,7 +2194,7 @@ create_sals_line_offset (struct linespec_state *self, skip_prologue_sal (&intermediate_results[i]); intermediate_results[i].symbol = sym; add_sal_to_sals (self, &values, &intermediate_results[i], - sym ? SYMBOL_NATURAL_NAME (sym) : NULL, 0); + sym ? sym->natural_name () : NULL, 0); } } @@ -2247,7 +2249,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec_p ls) if (symbol_to_sal (&sal, state->funfirstline, sym.symbol) && maybe_add_address (state->addr_set, pspace, sal.pc)) add_sal_to_sals (state, &sals, &sal, - SYMBOL_NATURAL_NAME (sym.symbol), 0); + sym.symbol->natural_name (), 0); } } else if (ls->function_symbols != NULL || ls->minimal_symbols != NULL) @@ -2312,7 +2314,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec_p ls) if (symbol_to_sal (&sal, state->funfirstline, sym.symbol) && maybe_add_address (state->addr_set, pspace, sal.pc)) add_sal_to_sals (state, &sals, &sal, - SYMBOL_NATURAL_NAME (sym.symbol), 0); + sym.symbol->natural_name (), 0); } } } @@ -2613,9 +2615,9 @@ parse_linespec (linespec_parser *parser, const char *arg, = symtabs_from_filename (user_filename.get (), PARSER_STATE (parser)->search_pspace); } - catch (const gdb_exception_error &ex) + catch (gdb_exception_error &ex) { - file_exception = ex; + file_exception = std::move (ex); } if (file_exception.reason >= 0) @@ -2663,7 +2665,7 @@ parse_linespec (linespec_parser *parser, const char *arg, /* The linespec didn't parse. Re-throw the file exception if there was one. */ if (file_exception.reason < 0) - throw_exception (file_exception); + throw_exception (std::move (file_exception)); /* Otherwise, the symbol is not found. */ symbol_not_found_error (PARSER_EXPLICIT (parser)->function_name, @@ -2900,7 +2902,7 @@ complete_label (completion_tracker &tracker, { for (const auto &label : *labels) { - char *match = xstrdup (SYMBOL_SEARCH_NAME (label.symbol)); + char *match = xstrdup (label.symbol->search_name ()); tracker.add_completion (gdb::unique_xmalloc_ptr (match)); } delete labels; @@ -3318,8 +3320,7 @@ decode_line_with_last_displayed (const char *string, int flags) ? decode_line_1 (location.get (), flags, NULL, get_last_displayed_symtab (), get_last_displayed_line ()) - : decode_line_1 (location.get (), flags, NULL, - (struct symtab *) NULL, 0)); + : decode_line_1 (location.get (), flags, NULL, NULL, 0)); if (*string) error (_("Junk at end of line specification: %s"), string); @@ -3329,7 +3330,7 @@ decode_line_with_last_displayed (const char *string, int flags) -/* First, some functions to initialize stuff at the beggining of the +/* First, some functions to initialize stuff at the beginning of the function. */ static void @@ -3682,7 +3683,7 @@ find_method (struct linespec_state *self, std::vector *file_symtabs, gdb_assert (!pspace->executing_startup); set_current_program_space (pspace); t = check_typedef (SYMBOL_TYPE (sym)); - find_methods (t, SYMBOL_LANGUAGE (sym), + find_methods (t, sym->language (), method_name, &result_names, &superclass_vec); /* Handle all items from a single program space at once; and be @@ -3695,7 +3696,7 @@ find_method (struct linespec_state *self, std::vector *file_symtabs, this program space, consider superclasses. */ if (result_names.size () == last_result_len) find_superclass_methods (std::move (superclass_vec), method_name, - SYMBOL_LANGUAGE (sym), &result_names); + sym->language (), &result_names); /* We have a list of candidate symbol names, so now we iterate over the symbol tables looking for all @@ -3997,9 +3998,9 @@ find_label_symbols_in_block (const struct block *block, ALL_BLOCK_SYMBOLS (block, iter, sym) { - if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), + if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), LABEL_DOMAIN) - && cmp (SYMBOL_SEARCH_NAME (sym), name, name_len) == 0) + && cmp (sym->search_name (), name, name_len) == 0) { result->push_back ({sym, block}); label_funcs_ret->push_back ({fn_sym, block}); @@ -4099,7 +4100,7 @@ decode_digits_list_mode (struct linespec_state *self, val.symtab = elt; val.pspace = SYMTAB_PSPACE (elt); val.pc = 0; - val.explicit_line = 1; + val.explicit_line = true; add_sal_to_sals (self, &values, &val, NULL, 0); } @@ -4107,8 +4108,9 @@ decode_digits_list_mode (struct linespec_state *self, return values; } -/* A helper for create_sals_line_offset that iterates over the symtabs, - adding lines to the VEC. */ +/* A helper for create_sals_line_offset that iterates over the symtabs + associated with LS and returns a vector of corresponding symtab_and_line + structures. */ static std::vector decode_digits_ordinary (struct linespec_state *self, @@ -4133,6 +4135,7 @@ decode_digits_ordinary (struct linespec_state *self, sal.pspace = SYMTAB_PSPACE (elt); sal.symtab = elt; sal.line = line; + sal.explicit_line = true; sal.pc = pc; sals.push_back (std::move (sal)); } @@ -4217,7 +4220,7 @@ minsym_found (struct linespec_state *self, struct objfile *objfile, if (is_function) { - const char *msym_name = MSYMBOL_LINKAGE_NAME (msymbol); + const char *msym_name = msymbol->linkage_name (); if (MSYMBOL_TYPE (msymbol) == mst_text_gnu_ifunc || MSYMBOL_TYPE (msymbol) == mst_data_gnu_ifunc) @@ -4246,7 +4249,7 @@ minsym_found (struct linespec_state *self, struct objfile *objfile, sal.section = MSYMBOL_OBJ_SECTION (objfile, msymbol); if (maybe_add_address (self->addr_set, objfile->pspace, sal.pc)) - add_sal_to_sals (self, result, &sal, MSYMBOL_NATURAL_NAME (msymbol), 0); + add_sal_to_sals (self, result, &sal, msymbol->natural_name (), 0); } /* A helper function to classify a minimal_symbol_type according to