* c-exp.y (lcurly, rcurly): New nonterminals.
* c-exp.y (exp): Use lcurly and rcurly for arrays and UNOP_MEMVAL constructs. * parse.c (free_funcalls): Moved prototype from parser-defs.h, made function static. * parse.c (struct funcall): Moved struct def from parser-defs.h. * parse.c (funcall_chain): Moved from parser-defs.h, made static. * parse.c (start_arglist): * parser-defs.h (free_funcalls): Moved prototype to parse.c. * parser-defs.h (struct funcall): Moved struct def to parse.c. * parser-defs.h (funcall_chain): Moved to parse.c. * printcmd.c (print_frame_nameless_args): Fix prototype. * tm-mips.h (setup_arbitrary_frame): Fix prototype. * tm-sparc.h (setup_arbitrary_frame): Fix prototype. * valops.c (typecmp): Moved prototype from values.h. * value.h (typecmp): Moved prototype to valops.c, made static. **** start-sanitize-chill **** * ch-exp.y (yylex): Change way control sequences are disabled. **** end-sanitize-chill ****
This commit is contained in:
parent
58bcc08c60
commit
9da75ad32e
7 changed files with 61 additions and 27 deletions
|
@ -1,3 +1,25 @@
|
||||||
|
Tue Feb 2 16:10:31 1993 Fred Fish (fnf@cygnus.com)
|
||||||
|
|
||||||
|
* c-exp.y (lcurly, rcurly): New nonterminals.
|
||||||
|
* c-exp.y (exp): Use lcurly and rcurly for arrays and UNOP_MEMVAL
|
||||||
|
constructs.
|
||||||
|
* parse.c (free_funcalls): Moved prototype from parser-defs.h,
|
||||||
|
made function static.
|
||||||
|
* parse.c (struct funcall): Moved struct def from parser-defs.h.
|
||||||
|
* parse.c (funcall_chain): Moved from parser-defs.h, made static.
|
||||||
|
* parse.c (start_arglist):
|
||||||
|
* parser-defs.h (free_funcalls): Moved prototype to parse.c.
|
||||||
|
* parser-defs.h (struct funcall): Moved struct def to parse.c.
|
||||||
|
* parser-defs.h (funcall_chain): Moved to parse.c.
|
||||||
|
* printcmd.c (print_frame_nameless_args): Fix prototype.
|
||||||
|
* tm-mips.h (setup_arbitrary_frame): Fix prototype.
|
||||||
|
* tm-sparc.h (setup_arbitrary_frame): Fix prototype.
|
||||||
|
* valops.c (typecmp): Moved prototype from values.h.
|
||||||
|
* value.h (typecmp): Moved prototype to valops.c, made static.
|
||||||
|
**** start-sanitize-chill ****
|
||||||
|
* ch-exp.y (yylex): Change way control sequences are disabled.
|
||||||
|
**** end-sanitize-chill ****
|
||||||
|
|
||||||
Tue Feb 2 16:11:43 1993 John Gilmore (gnu@cygnus.com)
|
Tue Feb 2 16:11:43 1993 John Gilmore (gnu@cygnus.com)
|
||||||
|
|
||||||
* tm-mips.h, tm-sparc.h: Fix thinko in SETUP_ARBITRARY_FRAME.
|
* tm-mips.h, tm-sparc.h: Fix thinko in SETUP_ARBITRARY_FRAME.
|
||||||
|
|
20
gdb/c-exp.y
20
gdb/c-exp.y
|
@ -128,7 +128,8 @@ static int
|
||||||
parse_number PARAMS ((char *, int, int, YYSTYPE *));
|
parse_number PARAMS ((char *, int, int, YYSTYPE *));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%type <voidval> exp exp1 type_exp start variable qualified_name
|
%type <voidval> exp exp1 type_exp start variable qualified_name lcurly
|
||||||
|
%type <lval> rcurly
|
||||||
%type <tval> type typebase
|
%type <tval> type typebase
|
||||||
%type <tvec> nonempty_typelist
|
%type <tvec> nonempty_typelist
|
||||||
/* %type <bval> block */
|
/* %type <bval> block */
|
||||||
|
@ -307,6 +308,10 @@ exp : exp '('
|
||||||
write_exp_elt_opcode (OP_FUNCALL); }
|
write_exp_elt_opcode (OP_FUNCALL); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
lcurly : '{'
|
||||||
|
{ start_arglist (); }
|
||||||
|
;
|
||||||
|
|
||||||
arglist :
|
arglist :
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -318,18 +323,17 @@ arglist : arglist ',' exp %prec ABOVE_COMMA
|
||||||
{ arglist_len++; }
|
{ arglist_len++; }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : '{'
|
rcurly : '}'
|
||||||
/* This is to save the value of arglist_len
|
{ $$ = end_arglist () - 1; }
|
||||||
being accumulated by an outer function call. */
|
;
|
||||||
{ start_arglist (); }
|
exp : lcurly arglist rcurly %prec ARROW
|
||||||
arglist '}' %prec ARROW
|
|
||||||
{ write_exp_elt_opcode (OP_ARRAY);
|
{ write_exp_elt_opcode (OP_ARRAY);
|
||||||
write_exp_elt_longcst ((LONGEST) 0);
|
write_exp_elt_longcst ((LONGEST) 0);
|
||||||
write_exp_elt_longcst ((LONGEST) end_arglist () - 1);
|
write_exp_elt_longcst ((LONGEST) $3);
|
||||||
write_exp_elt_opcode (OP_ARRAY); }
|
write_exp_elt_opcode (OP_ARRAY); }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : '{' type '}' exp %prec UNARY
|
exp : lcurly type rcurly exp %prec UNARY
|
||||||
{ write_exp_elt_opcode (UNOP_MEMVAL);
|
{ write_exp_elt_opcode (UNOP_MEMVAL);
|
||||||
write_exp_elt_type ($2);
|
write_exp_elt_type ($2);
|
||||||
write_exp_elt_opcode (UNOP_MEMVAL); }
|
write_exp_elt_opcode (UNOP_MEMVAL); }
|
||||||
|
|
|
@ -1420,7 +1420,7 @@ match_character_literal ()
|
||||||
|
|
||||||
if ((*tokptr == '^') && (*(tokptr + 1) == '('))
|
if ((*tokptr == '^') && (*(tokptr + 1) == '('))
|
||||||
{
|
{
|
||||||
return (0); /* Disable, see note above. */
|
#if 0 /* Disable, see note above. -fnf */
|
||||||
/* Match and decode a control sequence. Return zero if we don't
|
/* Match and decode a control sequence. Return zero if we don't
|
||||||
find a valid integer literal, or if the next unconsumed character
|
find a valid integer literal, or if the next unconsumed character
|
||||||
after the integer literal is not the trailing ')'.
|
after the integer literal is not the trailing ')'.
|
||||||
|
@ -1431,6 +1431,9 @@ match_character_literal ()
|
||||||
{
|
{
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return (0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
19
gdb/parse.c
19
gdb/parse.c
|
@ -38,6 +38,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
|
|
||||||
|
static void
|
||||||
|
free_funcalls PARAMS ((void));
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prefixify_expression PARAMS ((struct expression *));
|
prefixify_expression PARAMS ((struct expression *));
|
||||||
|
|
||||||
|
@ -47,6 +50,17 @@ length_of_subexp PARAMS ((struct expression *, int));
|
||||||
static void
|
static void
|
||||||
prefixify_subexp PARAMS ((struct expression *, struct expression *, int, int));
|
prefixify_subexp PARAMS ((struct expression *, struct expression *, int, int));
|
||||||
|
|
||||||
|
/* Data structure for saving values of arglist_len for function calls whose
|
||||||
|
arguments contain other function calls. */
|
||||||
|
|
||||||
|
struct funcall
|
||||||
|
{
|
||||||
|
struct funcall *next;
|
||||||
|
int arglist_len;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct funcall *funcall_chain;
|
||||||
|
|
||||||
/* Assign machine-independent names to certain registers
|
/* Assign machine-independent names to certain registers
|
||||||
(unless overridden by the REGISTER_NAMES table) */
|
(unless overridden by the REGISTER_NAMES table) */
|
||||||
|
|
||||||
|
@ -82,8 +96,9 @@ unsigned num_std_regs = (sizeof std_regs / sizeof std_regs[0]);
|
||||||
void
|
void
|
||||||
start_arglist ()
|
start_arglist ()
|
||||||
{
|
{
|
||||||
register struct funcall *new = (struct funcall *) xmalloc (sizeof (struct funcall));
|
register struct funcall *new;
|
||||||
|
|
||||||
|
new = (struct funcall *) xmalloc (sizeof (struct funcall));
|
||||||
new->next = funcall_chain;
|
new->next = funcall_chain;
|
||||||
new->arglist_len = arglist_len;
|
new->arglist_len = arglist_len;
|
||||||
arglist_len = 0;
|
arglist_len = 0;
|
||||||
|
@ -107,7 +122,7 @@ end_arglist ()
|
||||||
/* Free everything in the funcall chain.
|
/* Free everything in the funcall chain.
|
||||||
Used when there is an error inside parsing. */
|
Used when there is an error inside parsing. */
|
||||||
|
|
||||||
void
|
static void
|
||||||
free_funcalls ()
|
free_funcalls ()
|
||||||
{
|
{
|
||||||
register struct funcall *call, *next;
|
register struct funcall *call, *next;
|
||||||
|
|
|
@ -49,17 +49,6 @@ struct block *block_found;
|
||||||
/* Number of arguments seen so far in innermost function call. */
|
/* Number of arguments seen so far in innermost function call. */
|
||||||
int arglist_len;
|
int arglist_len;
|
||||||
|
|
||||||
/* Data structure for saving values of arglist_len
|
|
||||||
for function calls whose arguments contain other function calls. */
|
|
||||||
|
|
||||||
struct funcall
|
|
||||||
{
|
|
||||||
struct funcall *next;
|
|
||||||
int arglist_len;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct funcall *funcall_chain;
|
|
||||||
|
|
||||||
/* A string token, either a char-string or bit-string. Char-strings are
|
/* A string token, either a char-string or bit-string. Char-strings are
|
||||||
used, for example, for the names of symbols. */
|
used, for example, for the names of symbols. */
|
||||||
|
|
||||||
|
@ -129,9 +118,6 @@ start_arglist PARAMS ((void));
|
||||||
extern int
|
extern int
|
||||||
end_arglist PARAMS ((void));
|
end_arglist PARAMS ((void));
|
||||||
|
|
||||||
extern void
|
|
||||||
free_funcalls PARAMS ((void));
|
|
||||||
|
|
||||||
extern char *
|
extern char *
|
||||||
copy_name PARAMS ((struct stoken));
|
copy_name PARAMS ((struct stoken));
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,8 @@ typedef struct mips_extra_func_info {
|
||||||
multiple functions with the same SP that are at different stack levels. */
|
multiple functions with the same SP that are at different stack levels. */
|
||||||
|
|
||||||
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
|
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
|
||||||
extern struct frame_info *setup_arbitrary_frame ();
|
/* FIXME: Depends on equivalence between FRAME and "struct frame_info *",
|
||||||
|
and equivalence between CORE_ADDR and FRAME_ADDR. */
|
||||||
|
extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
|
||||||
|
|
||||||
#define STAB_REG_TO_REGNUM(num) ((num) < 32 ? (num) : (num)+FP0_REGNUM-32)
|
#define STAB_REG_TO_REGNUM(num) ((num) < 32 ? (num) : (num)+FP0_REGNUM-32)
|
||||||
|
|
|
@ -552,7 +552,9 @@ extern void single_step ();
|
||||||
"frame" or "info frame" command. */
|
"frame" or "info frame" command. */
|
||||||
|
|
||||||
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
|
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
|
||||||
extern struct frame_info *setup_arbitrary_frame ();
|
/* FIXME: Depends on equivalence between FRAME and "struct frame_info *",
|
||||||
|
and equivalence between CORE_ADDR and FRAME_ADDR. */
|
||||||
|
extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
|
||||||
|
|
||||||
/* To print every pair of float registers as a double, we use this hook. */
|
/* To print every pair of float registers as a double, we use this hook. */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue