diff options
author | Pedro Alves <palves@redhat.com> | 2017-07-17 15:51:55 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-07-17 15:51:55 +0100 |
commit | 8090b426b57bd9ebfa4c593ba3e6f939b2911739 (patch) | |
tree | 76234c2ece65a1b19b697e0352adfdae343638c0 | |
parent | 6a2c1b8790e58ce0688507b5b1f8369aa621a665 (diff) | |
download | gdb-8090b426b57bd9ebfa4c593ba3e6f939b2911739.zip gdb-8090b426b57bd9ebfa4c593ba3e6f939b2911739.tar.gz gdb-8090b426b57bd9ebfa4c593ba3e6f939b2911739.tar.bz2 |
Introduce CP_OPERATOR_STR/CP_OPERATOR_LEN and use throughout
Move LENGTH_OF_OPERATOR from cp-support.c to cp-support.h so we can
use it elsewhere. Since there's already
CP_ANONYMOUS_NAMESPACE_STR/CP_ANONYMOUS_NAMESPACE_LEN there, follow
the same naming pattern for the new symbols.
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* c-exp.y (operator_stoken): Use CP_OPERATOR_LEN and
CP_OPERATOR_STR.
* c-typeprint.c (is_type_conversion_operator): Use
CP_OPERATOR_STR.
* cp-support.c (LENGTH_OF_OPERATOR): Delete.
(cp_find_first_component_aux): Use CP_OPERATOR_STR and
CP_OPERATOR_LEN.
* cp-support.h (CP_OPERATOR_STR, CP_OPERATOR_LEN): New.
* gnu-v2-abi.c (gnuv2_is_operator_name): Use CP_OPERATOR_STR.
* gnu-v3-abi.c (gnuv3_is_operator_name): Use CP_OPERATOR_STR.
* linespec.c (linespec_lexer_lex_string): Use CP_OPERATOR_LEN and
CP_OPERATOR_STR.
* location.c: Include "cp-support.h".
(explicit_location_lex_one): Use CP_OPERATOR_LEN and
CP_OPERATOR_STR.
* symtab.c (operator_chars): Use CP_OPERATOR_STR and
CP_OPERATOR_LEN.
-rw-r--r-- | gdb/ChangeLog | 20 | ||||
-rw-r--r-- | gdb/c-exp.y | 5 | ||||
-rw-r--r-- | gdb/c-typeprint.c | 2 | ||||
-rw-r--r-- | gdb/cp-support.c | 9 | ||||
-rw-r--r-- | gdb/cp-support.h | 8 | ||||
-rw-r--r-- | gdb/gnu-v2-abi.c | 2 | ||||
-rw-r--r-- | gdb/gnu-v3-abi.c | 2 | ||||
-rw-r--r-- | gdb/linespec.c | 5 | ||||
-rw-r--r-- | gdb/location.c | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 4 |
10 files changed, 42 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 554a9e5..8778cae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,25 @@ 2017-07-17 Pedro Alves <palves@redhat.com> + * c-exp.y (operator_stoken): Use CP_OPERATOR_LEN and + CP_OPERATOR_STR. + * c-typeprint.c (is_type_conversion_operator): Use + CP_OPERATOR_STR. + * cp-support.c (LENGTH_OF_OPERATOR): Delete. + (cp_find_first_component_aux): Use CP_OPERATOR_STR and + CP_OPERATOR_LEN. + * cp-support.h (CP_OPERATOR_STR, CP_OPERATOR_LEN): New. + * gnu-v2-abi.c (gnuv2_is_operator_name): Use CP_OPERATOR_STR. + * gnu-v3-abi.c (gnuv3_is_operator_name): Use CP_OPERATOR_STR. + * linespec.c (linespec_lexer_lex_string): Use CP_OPERATOR_LEN and + CP_OPERATOR_STR. + * location.c: Include "cp-support.h". + (explicit_location_lex_one): Use CP_OPERATOR_LEN and + CP_OPERATOR_STR. + * symtab.c (operator_chars): Use CP_OPERATOR_STR and + CP_OPERATOR_LEN. + +2017-07-17 Pedro Alves <palves@redhat.com> + * cli/cli-cmds.c (complete_command): Use a completion tracker along with completion_find_completion_word for handle_brkchars phase. diff --git a/gdb/c-exp.y b/gdb/c-exp.y index bdcd51f..24a2fbd 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -1625,13 +1625,12 @@ write_destructor_name (struct parser_state *par_state, struct stoken token) static struct stoken operator_stoken (const char *op) { - static const char *operator_string = "operator"; struct stoken st = { NULL, 0 }; char *buf; - st.length = strlen (operator_string) + strlen (op); + st.length = CP_OPERATOR_LEN + strlen (op); buf = (char *) malloc (st.length + 1); - strcpy (buf, operator_string); + strcpy (buf, CP_OPERATOR_STR); strcat (buf, op); st.ptr = buf; diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 9e197f5..890888b 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -547,7 +547,7 @@ is_type_conversion_operator (struct type *type, int i, int j) some other way, feel free to rewrite this function. */ const char *name = TYPE_FN_FIELDLIST_NAME (type, i); - if (!startswith (name, "operator")) + if (!startswith (name, CP_OPERATOR_STR)) return 0; name += 8; diff --git a/gdb/cp-support.c b/gdb/cp-support.c index 5704466..122fadd 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -931,10 +931,6 @@ cp_find_first_component (const char *name) the recursion easier, it also stops if it reaches an unexpected ')' or '>' if the value of PERMISSIVE is nonzero. */ -/* Let's optimize away calls to strlen("operator"). */ - -#define LENGTH_OF_OPERATOR 8 - static unsigned int cp_find_first_component_aux (const char *name, int permissive) { @@ -1006,10 +1002,9 @@ cp_find_first_component_aux (const char *name, int permissive) case 'o': /* Operator names can screw up the recursion. */ if (operator_possible - && strncmp (name + index, "operator", - LENGTH_OF_OPERATOR) == 0) + && startswith (name + index, CP_OPERATOR_STR)) { - index += LENGTH_OF_OPERATOR; + index += CP_OPERATOR_LEN; while (ISSPACE(name[index])) ++index; switch (name[index]) diff --git a/gdb/cp-support.h b/gdb/cp-support.h index 9054bf6..37b281f 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -46,6 +46,14 @@ struct using_direct; #define CP_ANONYMOUS_NAMESPACE_LEN 21 +/* A string representing the start of an operator name. */ + +#define CP_OPERATOR_STR "operator" + +/* The length of CP_OPERATOR_STR. */ + +#define CP_OPERATOR_LEN 8 + /* The result of parsing a name. */ struct demangle_parse_info diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c index 0af684f..91c4201 100644 --- a/gdb/gnu-v2-abi.c +++ b/gdb/gnu-v2-abi.c @@ -68,7 +68,7 @@ gnuv2_is_vtable_name (const char *name) static int gnuv2_is_operator_name (const char *name) { - return startswith (name, "operator"); + return startswith (name, CP_OPERATOR_STR); } diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 0090990..f5d3d13 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -46,7 +46,7 @@ gnuv3_is_vtable_name (const char *name) static int gnuv3_is_operator_name (const char *name) { - return startswith (name, "operator"); + return startswith (name, CP_OPERATOR_STR); } diff --git a/gdb/linespec.c b/gdb/linespec.c index 4c076fe..25ebdca 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -688,10 +688,9 @@ linespec_lexer_lex_string (linespec_parser *parser) { if ((PARSER_STATE (parser)->language->la_language == language_cplus) - && (PARSER_STREAM (parser) - start) > 8 - /* strlen ("operator") */) + && (PARSER_STREAM (parser) - start) > CP_OPERATOR_LEN) { - const char *p = strstr (start, "operator"); + const char *p = strstr (start, CP_OPERATOR_STR); if (p != NULL && is_operator_name (p)) { diff --git a/gdb/location.c b/gdb/location.c index 8796320..d711d7b 100644 --- a/gdb/location.c +++ b/gdb/location.c @@ -24,6 +24,7 @@ #include "linespec.h" #include "cli/cli-utils.h" #include "probe.h" +#include "cp-support.h" #include <ctype.h> #include <string.h> @@ -473,8 +474,8 @@ explicit_location_lex_one (const char **inp, { /* Special case: C++ operator,. */ if (language->la_language == language_cplus - && strncmp (*inp, "operator", 8) == 0) - (*inp) += 8; + && startswith (*inp, CP_OPERATOR_STR)) + (*inp) += CP_OPERATOR_LEN; ++(*inp); } } diff --git a/gdb/symtab.c b/gdb/symtab.c index 57fb355..b077369 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3839,9 +3839,9 @@ static const char * operator_chars (const char *p, const char **end) { *end = ""; - if (!startswith (p, "operator")) + if (!startswith (p, CP_OPERATOR_STR)) return *end; - p += 8; + p += CP_OPERATOR_LEN; /* Don't get faked out by `operator' being part of a longer identifier. */ |