FYI: fix spelling of "delete" in c-exp.y

Tom Tromey
2012-06-18T20:22:30Z

I'm checking this in.

Running the test suite with a modified compiler (jason/comdat-debug in
gcc git) shows a few regressions.

Debugging one of these showed that there were some extra spaces in
c-exp.y, that caused problems in this test case. This patch removes the
spaces.

psymtab_search_name will not remove a trailing space; but it will remove
a trailing " ()". That is the core of the problem. That plus the fact
that, with an unmodified compiler, all the methods end up in the same
CU, so we bypass the psymtab bits for the particular lookup.

I was also surprised to find the call to value_maybe_namespace_elt in
from value_struct_elt_for_reference doing a lot of work here.
I suspect this is basically a consequence of not doing type interning;
we end up with different copies of the enclosing type in different CUs,
and each one has a different set of methods attached depending on
which CU contains a method's body.

IOW, symbol tables are a crazy mess, see
http://sourceware.org/gdb/wiki/SymbolHandling

Built and regtested on x86-64 Fedora 16, with the comdat-debug gcc and
the system gcc.

Tom

2012-06-18 Tom Tromey <tromey@redhat.com>

* c-exp.y (operator): Remove trailing space after "delete" and
"delete[]".

diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 1e14337..bf53fbc 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -1224,11 +1224,11 @@ const_or_volatile_noopt: const_and_volatile
operator: OPERATOR NEW
{ $$ = operator_stoken (" new"); }
| OPERATOR DELETE
- { $$ = operator_stoken (" delete "); }
+ { $$ = operator_stoken (" delete"); }
| OPERATOR NEW '[' ']'
{ $$ = operator_stoken (" new[]"); }
| OPERATOR DELETE '[' ']'
- { $$ = operator_stoken (" delete[] "); }
+ { $$ = operator_stoken (" delete[]"); }
| OPERATOR '+'
{ $$ = operator_stoken ("+"); }
| OPERATOR '-'