Index: gdb/m2-exp.y |
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y |
index 1e3e3cbcabc18dfd9c7b2d807c180ac4aeff1b63..19f9c24545a7c26f4671e1dcd124368a95eb62c1 100644 |
--- a/gdb/m2-exp.y |
+++ b/gdb/m2-exp.y |
@@ -100,6 +100,12 @@ |
#define yygindex m2_yygindex |
#define yytable m2_yytable |
#define yycheck m2_yycheck |
+#define yyss m2_yyss |
+#define yysslim m2_yysslim |
+#define yyssp m2_yyssp |
+#define yystacksize m2_yystacksize |
+#define yyvs m2_yyvs |
+#define yyvsp m2_yyvsp |
#ifndef YYDEBUG |
#define YYDEBUG 1 /* Default to yydebug support */ |
@@ -113,21 +119,11 @@ static int yylex (void); |
void yyerror (char *); |
-#if 0 |
-static char *make_qualname (char *, char *); |
-#endif |
- |
static int parse_number (int); |
/* The sign of the number being parsed. */ |
static int number_sign = 1; |
-/* The block that the module specified by the qualifer on an identifer is |
- contained in, */ |
-#if 0 |
-static struct block *modblock=0; |
-#endif |
- |
%} |
/* Although the yacc "value" of an expression is not used, |
@@ -588,6 +584,13 @@ variable: block COLONCOLON NAME |
if (sym == 0) |
error (_("No symbol \"%s\" in specified context."), |
copy_name ($3)); |
+ if (symbol_read_needs_frame (sym)) |
+ { |
+ if (innermost_block == 0 |
+ || contained_in (block_found, |
+ innermost_block)) |
+ innermost_block = block_found; |
+ } |
write_exp_elt_opcode (OP_VAR_VALUE); |
/* block_found is set by lookup_symbol. */ |
@@ -658,8 +661,7 @@ type |
/*** Needs some error checking for the float case ***/ |
static int |
-parse_number (olen) |
- int olen; |
+parse_number (int olen) |
{ |
char *p = lexptr; |
LONGEST n = 0; |
@@ -1069,23 +1071,8 @@ yylex (void) |
} |
} |
-#if 0 /* Unused */ |
-static char * |
-make_qualname(mod,ident) |
- char *mod, *ident; |
-{ |
- char *new = malloc(strlen(mod)+strlen(ident)+2); |
- |
- strcpy(new,mod); |
- strcat(new,"."); |
- strcat(new,ident); |
- return new; |
-} |
-#endif /* 0 */ |
- |
void |
-yyerror (msg) |
- char *msg; |
+yyerror (char *msg) |
{ |
if (prev_lexptr) |
lexptr = prev_lexptr; |