aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/cp-name-parser.y67
2 files changed, 22 insertions, 58 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1beccaa..1fcd489 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2009-07-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix gcc-4.5 HEAD warnings.
+ * cp-name-parser.y (%union <typed_val_int>, %token GLOBAL)
+ (GLOBAL_CONSTRUCTORS, GLOBAL_DESTRUCTORS, demangler_special <GLOBAL>):
+ Remove.
+ (yylex <"global constructors keyed to ">)
+ (yylex <"global destructors keyed to ">): Base it on DEMANGLER_SPECIAL.
+ (cp_comp_to_string): Remove variables str, prefix and buf. Remove the
+ GLOBAL_DESTRUCTORS and GLOBAL_CONSTRUCTORS handling.
+ (cp_print): Remove the GLOBAL_DESTRUCTORS and GLOBAL_CONSTRUCTORS
+ handling.
+
2009-07-28 Daniel Jacobowitz <dan@codesourcery.com>
* NEWS: Mention ARM VFP support.
diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y
index b70ad21..62800b8 100644
--- a/gdb/cp-name-parser.y
+++ b/gdb/cp-name-parser.y
@@ -255,10 +255,6 @@ make_name (const char *name, int len)
int fold_flag;
} abstract;
int lval;
- struct {
- int val;
- struct demangle_component *type;
- } typed_val_int;
const char *opname;
}
@@ -313,14 +309,6 @@ make_name (const char *name, int len)
/* Non-C++ things we get from the demangler. */
%token <lval> DEMANGLER_SPECIAL
%token CONSTRUCTION_VTABLE CONSTRUCTION_IN
-%token <typed_val_int> GLOBAL
-
-%{
-enum {
- GLOBAL_CONSTRUCTORS = DEMANGLE_COMPONENT_LITERAL + 20,
- GLOBAL_DESTRUCTORS = DEMANGLE_COMPONENT_LITERAL + 21
-};
-%}
/* Precedence declarations. */
@@ -430,10 +418,6 @@ demangler_special
d_right ($$) = NULL; }
| CONSTRUCTION_VTABLE start CONSTRUCTION_IN start
{ $$ = fill_comp (DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE, $2, $4); }
- | GLOBAL
- { $$ = make_empty ($1.val);
- d_left ($$) = $1.type;
- d_right ($$) = NULL; }
;
operator : OPERATOR NEW
@@ -1861,23 +1845,23 @@ yylex (void)
{
const char *p;
lexptr = tokstart + 29;
- yylval.typed_val_int.val = GLOBAL_CONSTRUCTORS;
+ yylval.lval = DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS;
/* Find the end of the symbol. */
p = symbol_end (lexptr);
- yylval.typed_val_int.type = make_name (lexptr, p - lexptr);
+ yylval.comp = make_name (lexptr, p - lexptr);
lexptr = p;
- return GLOBAL;
+ return DEMANGLER_SPECIAL;
}
if (strncmp (tokstart, "global destructors keyed to ", 28) == 0)
{
const char *p;
lexptr = tokstart + 28;
- yylval.typed_val_int.val = GLOBAL_DESTRUCTORS;
+ yylval.lval = DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS;
/* Find the end of the symbol. */
p = symbol_end (lexptr);
- yylval.typed_val_int.type = make_name (lexptr, p - lexptr);
+ yylval.comp = make_name (lexptr, p - lexptr);
lexptr = p;
- return GLOBAL;
+ return DEMANGLER_SPECIAL;
}
HANDLE_SPECIAL ("vtable for ", DEMANGLE_COMPONENT_VTABLE);
@@ -1976,32 +1960,10 @@ allocate_info (void)
char *
cp_comp_to_string (struct demangle_component *result, int estimated_len)
{
- char *str, *prefix = NULL, *buf;
- size_t err = 0;
+ size_t err;
- if (result->type == GLOBAL_DESTRUCTORS)
- {
- result = d_left (result);
- prefix = "global destructors keyed to ";
- }
- else if (result->type == GLOBAL_CONSTRUCTORS)
- {
- result = d_left (result);
- prefix = "global constructors keyed to ";
- }
-
- str = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, result, estimated_len, &err);
- if (str == NULL)
- return NULL;
-
- if (prefix == NULL)
- return str;
-
- buf = malloc (strlen (str) + strlen (prefix) + 1);
- strcpy (buf, prefix);
- strcat (buf, str);
- free (str);
- return (buf);
+ return cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, result, estimated_len,
+ &err);
}
/* Convert a demangled name to a demangle_component tree. On success,
@@ -2048,17 +2010,6 @@ cp_print (struct demangle_component *result)
char *str;
size_t err = 0;
- if (result->type == GLOBAL_DESTRUCTORS)
- {
- result = d_left (result);
- fputs ("global destructors keyed to ", stdout);
- }
- else if (result->type == GLOBAL_CONSTRUCTORS)
- {
- result = d_left (result);
- fputs ("global constructors keyed to ", stdout);
- }
-
str = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, result, 64, &err);
if (str == NULL)
return;