| 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;
|
|
|