X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Flinespec.c;h=b69ab629eec86f4507cafffbecea1478ff934ebd;hb=f1735a53a63040cc4b4a735bf18a3f20d308e519;hp=5396ebab929d2f74293579430587be365f900958;hpb=6c5b2ebeacc2538cf342cfd13c4c98ff018e6c9a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/linespec.c b/gdb/linespec.c index 5396ebab92..b69ab629ee 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -45,6 +45,7 @@ #include "stack.h" #include "location.h" #include "common/function-view.h" +#include "common/def-vector.h" /* An enumeration of the various things a user might attempt to complete for a linespec location. */ @@ -473,7 +474,7 @@ linespec_lexer_lex_keyword (const char *p) if (i != IF_KEYWORD_INDEX) { p += len; - p = skip_spaces_const (p); + p = skip_spaces (p); for (j = 0; linespec_keywords[j] != NULL; ++j) { int nextlen = strlen (linespec_keywords[j]); @@ -708,7 +709,7 @@ linespec_lexer_lex_string (linespec_parser *parser) { if (isspace (*PARSER_STREAM (parser))) { - p = skip_spaces_const (PARSER_STREAM (parser)); + p = skip_spaces (PARSER_STREAM (parser)); /* When we get here we know we've found something followed by a space (we skip over parens and templates below). So if we find a keyword now, we know it is a keyword and not, @@ -855,7 +856,7 @@ linespec_lexer_lex_one (linespec_parser *parser) if (parser->lexer.current.type == LSTOKEN_CONSUMED) { /* Skip any whitespace. */ - PARSER_STREAM (parser) = skip_spaces_const (PARSER_STREAM (parser)); + PARSER_STREAM (parser) = skip_spaces (PARSER_STREAM (parser)); /* Check for a keyword, they end the linespec. */ keyword = linespec_lexer_lex_keyword (PARSER_STREAM (parser)); @@ -1769,7 +1770,7 @@ set_completion_after_number (linespec_parser *parser, { if (*PARSER_STREAM (parser) == ' ') { - parser->completion_word = skip_spaces_const (PARSER_STREAM (parser) + 1); + parser->completion_word = skip_spaces (PARSER_STREAM (parser) + 1); parser->complete_what = next; } else @@ -1999,7 +2000,7 @@ linespec_parse_basic (linespec_parser *parser) if (ptr[i] == ' ') { LS_TOKEN_STOKEN (token).length = i; - PARSER_STREAM (parser) = skip_spaces_const (ptr + i + 1); + PARSER_STREAM (parser) = skip_spaces (ptr + i + 1); break; } } @@ -2126,11 +2127,8 @@ static std::vector create_sals_line_offset (struct linespec_state *self, linespec_p ls) { - struct symtab_and_line val; int use_default = 0; - init_sal (&val); - /* This is where we need to make sure we have good defaults. We must guarantee that this section of code is never executed when we are called with just a function name, since @@ -2155,6 +2153,7 @@ create_sals_line_offset (struct linespec_state *self, use_default = 1; } + symtab_and_line val; val.line = ls->explicit_loc.line_offset.offset; switch (ls->explicit_loc.line_offset.sign) { @@ -2184,8 +2183,6 @@ create_sals_line_offset (struct linespec_state *self, else { struct linetable_entry *best_entry = NULL; - int *filter; - const struct block **blocks; int i, j; std::vector intermediate_results @@ -2205,10 +2202,8 @@ create_sals_line_offset (struct linespec_state *self, above, we see if there are other PCs that are in the same block. If yes, the other PCs are filtered out. */ - filter = XNEWVEC (int, intermediate_results.size ()); - struct cleanup *cleanup = make_cleanup (xfree, filter); - blocks = XNEWVEC (const struct block *, intermediate_results.size ()); - make_cleanup (xfree, blocks); + gdb::def_vector filter (intermediate_results.size ()); + gdb::def_vector blocks (intermediate_results.size ()); for (i = 0; i < intermediate_results.size (); ++i) { @@ -2247,8 +2242,6 @@ create_sals_line_offset (struct linespec_state *self, add_sal_to_sals (self, &values, &intermediate_results[i], sym ? SYMBOL_NATURAL_NAME (sym) : NULL, 0); } - - do_cleanups (cleanup); } if (values.empty ()) @@ -2704,7 +2697,7 @@ parse_linespec (linespec_parser *parser, const char *arg) advances past a keyword automatically, so skip it manually. */ parser->completion_word - = skip_spaces_const (skip_to_space_const (PARSER_STREAM (parser))); + = skip_spaces (skip_to_space (PARSER_STREAM (parser))); parser->complete_what = linespec_complete_what::EXPRESSION; } @@ -4235,9 +4228,7 @@ decode_digits_ordinary (struct linespec_state *self, pcs = find_pcs_for_symtab_line (elt, line, best_entry); for (CORE_ADDR pc : pcs) { - struct symtab_and_line sal; - - init_sal (&sal); + symtab_and_line sal; sal.pspace = SYMTAB_PSPACE (elt); sal.symtab = elt; sal.line = line; @@ -4619,7 +4610,7 @@ symbol_to_sal (struct symtab_and_line *result, { if (SYMBOL_CLASS (sym) == LOC_LABEL && SYMBOL_VALUE_ADDRESS (sym) != 0) { - init_sal (result); + *result = {}; result->symtab = symbol_symtab (sym); result->line = SYMBOL_LINE (sym); result->pc = SYMBOL_VALUE_ADDRESS (sym); @@ -4634,7 +4625,7 @@ symbol_to_sal (struct symtab_and_line *result, else if (SYMBOL_LINE (sym) != 0) { /* We know its line number. */ - init_sal (result); + *result = {}; result->symtab = symbol_symtab (sym); result->line = SYMBOL_LINE (sym); result->pspace = SYMTAB_PSPACE (result->symtab);