aboutsummaryrefslogtreecommitdiff
path: root/gdb/parse.c
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1998-08-12 15:50:59 +0000
committerStu Grossman <grossman@cygnus>1998-08-12 15:50:59 +0000
commit433732f25e8aeb3587a1d4fe612009352cbb880c (patch)
tree1b458dc0618a6408d4287d09fb3876292232766e /gdb/parse.c
parent902459f256a3c49ce2b1b3a778d356042ed3b03f (diff)
downloadgdb-433732f25e8aeb3587a1d4fe612009352cbb880c.zip
gdb-433732f25e8aeb3587a1d4fe612009352cbb880c.tar.gz
gdb-433732f25e8aeb3587a1d4fe612009352cbb880c.tar.bz2
* c-typeprint.c (c_print_type): Don't crash if varstring is null.
* expprint.c expression.h (dump_expression): Rename to dump_prefix_expression. * Print out the expression in normal form. Call print_longest instead of trying to do it ourselves. * (dump_postfix_expression): New function, prints out the expression with indentation and better formatting and interpretation. * parse.c (parse_exp_1): Put calls to dump expressions under ifdef MAINTENANCE_CMDS and expressiondebug variable.
Diffstat (limited to 'gdb/parse.c')
-rw-r--r--gdb/parse.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/gdb/parse.c b/gdb/parse.c
index 1cb6217..a7cd80d 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -38,6 +38,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "command.h"
#include "language.h"
#include "parser-defs.h"
+#include "gdbcmd.h"
#include "symfile.h" /* for overlay functions */
/* Global variables declared in parser-defs.h (and commented there). */
@@ -54,6 +55,10 @@ char *namecopy;
int paren_depth;
int comma_terminates;
+#ifdef MAINTENANCE_CMDS
+static int expressiondebug = 0;
+#endif
+
static void
free_funcalls PARAMS ((void));
@@ -911,9 +916,19 @@ parse_exp_1 (stringptr, block, comma)
/* Convert expression from postfix form as generated by yacc
parser, to a prefix form. */
- DUMP_EXPRESSION (expout, gdb_stdout, "before conversion to prefix form");
+#ifdef MAINTENANCE_CMDS
+ if (expressiondebug)
+ dump_prefix_expression (expout, gdb_stdout,
+ "before conversion to prefix form");
+#endif /* MAINTENANCE_CMDS */
+
prefixify_expression (expout);
- DUMP_EXPRESSION (expout, gdb_stdout, "after conversion to prefix form");
+
+#ifdef MAINTENANCE_CMDS
+ if (expressiondebug)
+ dump_postfix_expression (expout, gdb_stdout,
+ "after conversion to prefix form");
+#endif /* MAINTENANCE_CMDS */
*stringptr = lexptr;
return expout;
@@ -1043,4 +1058,14 @@ _initialize_parse ()
init_type (TYPE_CODE_INT, 1, 0,
"<variable (not text or data), no debug info>",
NULL);
+
+#ifdef MAINTENANCE_CMDS
+ add_show_from_set (
+ add_set_cmd ("expressiondebug", class_maintenance, var_zinteger,
+ (char *)&expressiondebug,
+ "Set expression debugging.\n\
+When non-zero, the internal representation of expressions will be printed.",
+ &setlist),
+ &showlist);
+#endif
}