/* Print in infix form a struct expression.
- Copyright (C) 1986, 1989, 1991 Free Software Foundation, Inc.
+ Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GDB.
/* Prototypes for local functions */
-static void
-print_subexp PARAMS ((struct expression *, int *, GDB_FILE *, enum precedence));
+static void print_subexp (struct expression *, int *, struct ui_file *,
+ enum precedence);
void
-print_expression (exp, stream)
- struct expression *exp;
- GDB_FILE *stream;
+print_expression (struct expression *exp, struct ui_file *stream)
{
int pc = 0;
print_subexp (exp, &pc, stream, PREC_NULL);
parentheses are needed here. */
static void
-print_subexp (exp, pos, stream, prec)
- register struct expression *exp;
- register int *pos;
- GDB_FILE *stream;
- enum precedence prec;
+print_subexp (register struct expression *exp, register int *pos,
+ struct ui_file *stream, enum precedence prec)
{
register unsigned tem;
register const struct op_print *op_print_tab;
a string. NULL indicates that the opcode was not found in the
current language table. */
char *
-op_string (op)
- enum exp_opcode op;
+op_string (enum exp_opcode op)
{
int tem;
register const struct op_print *op_print_tab;
/* Support for dumping the raw data from expressions in a human readable
form. */
-static char *op_name PARAMS ((int opcode));
+static char *op_name (int opcode);
static char *
-op_name (opcode)
- int opcode;
+op_name (int opcode)
{
switch (opcode)
{
return "BINOP_MIN";
case BINOP_MAX:
return "BINOP_MAX";
- case BINOP_SCOPE:
- return "BINOP_SCOPE";
case STRUCTOP_MEMBER:
return "STRUCTOP_MEMBER";
case STRUCTOP_MPTR:
}
void
-dump_prefix_expression (exp, stream, note)
- struct expression *exp;
- GDB_FILE *stream;
- char *note;
+dump_prefix_expression (struct expression *exp, struct ui_file *stream,
+ char *note)
{
int elt;
char *opcode_name;
int eltsize;
fprintf_filtered (stream, "Dump of expression @ ");
- gdb_print_address (exp, stream);
+ gdb_print_host_address (exp, stream);
fprintf_filtered (stream, ", %s:\nExpression: `", note);
if (exp->elts[0].opcode != OP_TYPE)
print_expression (exp, stream);
else
fprintf_filtered (stream, "Type printing not yet supported....");
- fprintf_filtered (stream, "'\n\tLanguage %s, %d elements, %d bytes each.\n",
+ fprintf_filtered (stream, "'\n\tLanguage %s, %d elements, %ld bytes each.\n",
exp->language_defn->la_name, exp->nelts,
- sizeof (union exp_element));
+ (long) sizeof (union exp_element));
fprintf_filtered (stream, "\t%5s %20s %16s %s\n", "Index", "Opcode",
"Hex Value", "String Value");
for (elt = 0; elt < exp->nelts; elt++)
}
}
-static int dump_subexp PARAMS ((struct expression * exp, GDB_FILE * stream, int elt));
+static int dump_subexp (struct expression *exp, struct ui_file *stream,
+ int elt);
static int
-dump_subexp (exp, stream, elt)
- struct expression *exp;
- GDB_FILE *stream;
- int elt;
+dump_subexp (struct expression *exp, struct ui_file *stream, int elt)
{
static int indent = 0;
int i;
case BINOP_EXP:
case BINOP_MIN:
case BINOP_MAX:
- case BINOP_SCOPE:
case BINOP_INTDIV:
case BINOP_ASSIGN_MODIFY:
case BINOP_VAL:
elt = dump_subexp (exp, stream, elt);
break;
case OP_LONG:
- fprintf_filtered (stream, "Type @0x%x (", exp->elts[elt].type);
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
type_print (exp->elts[elt].type, NULL, stream, 0);
fprintf_filtered (stream, "), value %ld (0x%lx)",
(long) exp->elts[elt + 1].longconst,
elt += 3;
break;
case OP_DOUBLE:
- fprintf_filtered (stream, "Type @0x%x (", exp->elts[elt].type);
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
type_print (exp->elts[elt].type, NULL, stream, 0);
fprintf_filtered (stream, "), value %g",
(double) exp->elts[elt + 1].doubleconst);
elt += 3;
break;
case OP_VAR_VALUE:
- fprintf_filtered (stream, "Block @0x%x, symbol @0x%x (%s)",
- exp->elts[elt].block,
- exp->elts[elt + 1].symbol,
+ fprintf_filtered (stream, "Block @");
+ gdb_print_host_address (exp->elts[elt].block, stream);
+ fprintf_filtered (stream, ", symbol @");
+ gdb_print_host_address (exp->elts[elt + 1].symbol, stream);
+ fprintf_filtered (stream, " (%s)",
SYMBOL_NAME (exp->elts[elt + 1].symbol));
elt += 3;
break;
elt += 2;
break;
case OP_INTERNALVAR:
- fprintf_filtered (stream, "Internal var @0x%x (%s)",
- exp->elts[elt].internalvar,
+ fprintf_filtered (stream, "Internal var @");
+ gdb_print_host_address (exp->elts[elt].internalvar, stream);
+ fprintf_filtered (stream, " (%s)",
exp->elts[elt].internalvar->name);
elt += 2;
break;
break;
case UNOP_MEMVAL:
case UNOP_CAST:
- fprintf_filtered (stream, "Type @0x%x (",
- exp->elts[elt].type);
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
type_print (exp->elts[elt].type, NULL, stream, 0);
fprintf_filtered (stream, ")");
elt = dump_subexp (exp, stream, elt + 2);
break;
case OP_TYPE:
- fprintf_filtered (stream, "Type @0x%x (",
- exp->elts[elt].type);
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
type_print (exp->elts[elt].type, NULL, stream, 0);
fprintf_filtered (stream, ")");
elt += 2;
char *elem_name;
int len;
- fprintf_filtered (stream, "Type @0x%x (", exp->elts[elt].type);
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
type_print (exp->elts[elt].type, NULL, stream, 0);
fprintf_filtered (stream, ") ");
}
void
-dump_postfix_expression (exp, stream, note)
- struct expression *exp;
- GDB_FILE *stream;
- char *note;
+dump_postfix_expression (struct expression *exp, struct ui_file *stream,
+ char *note)
{
int elt;
fprintf_filtered (stream, "Dump of expression @ ");
- gdb_print_address (exp, stream);
+ gdb_print_host_address (exp, stream);
fprintf_filtered (stream, ", %s:\nExpression: `", note);
if (exp->elts[0].opcode != OP_TYPE)
print_expression (exp, stream);
else
fputs_filtered ("Type printing not yet supported....", stream);
- fprintf_filtered (stream, "'\n\tLanguage %s, %d elements, %d bytes each.\n",
+ fprintf_filtered (stream, "'\n\tLanguage %s, %d elements, %ld bytes each.\n",
exp->language_defn->la_name, exp->nelts,
- sizeof (union exp_element));
+ (long) sizeof (union exp_element));
fputs_filtered ("\n", stream);
for (elt = 0; elt < exp->nelts;)