diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-01-10 19:29:12 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-01-10 19:29:12 +0000 |
commit | 9934703b912c81702a1a74dd0337d5e3fd291a0f (patch) | |
tree | eb18ec390f67e52f1987fa36a1691594af2966be /gdb/cp-name-parser.y | |
parent | fbfd63c0a6ed1f8192020ab09b1edc4496aff91a (diff) | |
download | binutils-gdb-9934703b912c81702a1a74dd0337d5e3fd291a0f.tar.gz |
gdb/
Fix regression after libiberty/ update for GCC PR 6057 and others.
* c-exp.y (operator) <OPERATOR DELETE>
(operator) <OPERATOR DELETE '[' ']'>: Add trailing space.
* cp-name-parser.y (fill_comp, make_operator, make_dtor)
(make_builtin_type, make_name): New variable i, add gdb_assert.
(operator) <OPERATOR NEW>: Update ARGS to 3.
(operator) <OPERATOR DELETE>: Add trailing space.
(operator) <OPERATOR NEW '[' ']'>: Update ARGS to 3.
(operator) <OPERATOR DELETE '[' ']'>: Add trailing space.
* cp-support.c (cp_canonicalize_string): Check NULL from
cp_comp_to_string, call warning and return.
Diffstat (limited to 'gdb/cp-name-parser.y')
-rw-r--r-- | gdb/cp-name-parser.y | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 8b4a1b946ca..d85a5bf2b79 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -188,7 +188,11 @@ fill_comp (enum demangle_component_type d_type, struct demangle_component *lhs, struct demangle_component *rhs) { struct demangle_component *ret = d_grab (); - cplus_demangle_fill_component (ret, d_type, lhs, rhs); + int i; + + i = cplus_demangle_fill_component (ret, d_type, lhs, rhs); + gdb_assert (i); + return ret; } @@ -204,7 +208,11 @@ static struct demangle_component * make_operator (const char *name, int args) { struct demangle_component *ret = d_grab (); - cplus_demangle_fill_operator (ret, name, args); + int i; + + i = cplus_demangle_fill_operator (ret, name, args); + gdb_assert (i); + return ret; } @@ -212,7 +220,11 @@ static struct demangle_component * make_dtor (enum gnu_v3_dtor_kinds kind, struct demangle_component *name) { struct demangle_component *ret = d_grab (); - cplus_demangle_fill_dtor (ret, kind, name); + int i; + + i = cplus_demangle_fill_dtor (ret, kind, name); + gdb_assert (i); + return ret; } @@ -220,7 +232,11 @@ static struct demangle_component * make_builtin_type (const char *name) { struct demangle_component *ret = d_grab (); - cplus_demangle_fill_builtin_type (ret, name); + int i; + + i = cplus_demangle_fill_builtin_type (ret, name); + gdb_assert (i); + return ret; } @@ -228,7 +244,11 @@ static struct demangle_component * make_name (const char *name, int len) { struct demangle_component *ret = d_grab (); - cplus_demangle_fill_name (ret, name, len); + int i; + + i = cplus_demangle_fill_name (ret, name, len); + gdb_assert (i); + return ret; } @@ -420,13 +440,13 @@ demangler_special ; operator : OPERATOR NEW - { $$ = make_operator ("new", 1); } + { $$ = make_operator ("new", 3); } | OPERATOR DELETE - { $$ = make_operator ("delete", 1); } + { $$ = make_operator ("delete ", 1); } | OPERATOR NEW '[' ']' - { $$ = make_operator ("new[]", 1); } + { $$ = make_operator ("new[]", 3); } | OPERATOR DELETE '[' ']' - { $$ = make_operator ("delete[]", 1); } + { $$ = make_operator ("delete[] ", 1); } | OPERATOR '+' { $$ = make_operator ("+", 2); } | OPERATOR '-' |