From: Tom Tromey Date: Wed, 10 Feb 2010 18:57:21 +0000 (+0000) Subject: gdb X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=92981e24467c4247c8bf16780cac90b340c0a4c2;p=deliverable%2Fbinutils-gdb.git gdb * parser-defs.h (parser_debug): Declare. * parse.c (_initialize_parse): Install "debug parser" set/show command. (parser_debug): New global. (show_parserdebug): New function. * c-exp.y (c_parse): Set yydebug. gdb/testsuite * gdb.texinfo (Debugging Output): Document set debug parser and show debug parser. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 431ba1c7fe..c5bf4f9ca1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2010-02-10 Tom Tromey + + * parser-defs.h (parser_debug): Declare. + * parse.c (_initialize_parse): Install "debug parser" set/show + command. + (parser_debug): New global. + (show_parserdebug): New function. + * c-exp.y (c_parse): Set yydebug. + 2010-02-10 H.J. Lu * target-descriptions.c (tdesc_type): Add TDESC_TYPE_I387_EXT, diff --git a/gdb/c-exp.y b/gdb/c-exp.y index 8e00979ff8..845771c9b9 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -2450,6 +2450,9 @@ c_parse (void) gdb_assert (! macro_original_text); make_cleanup (scan_macro_cleanup, 0); + make_cleanup_restore_integer (&yydebug); + yydebug = parser_debug; + /* Initialize some state used by the lexer. */ last_was_structop = 0; saw_name_at_eof = 0; diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index dbd12dffc1..b5bef2f554 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2010-02-10 Tom Tromey + + * gdb.texinfo (Debugging Output): Document set debug parser and + show debug parser. + 2010-02-09 H.J. Lu * gdb.texinfo (Predefined Target Types): Add i387_ext, diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 81c0b6bebc..4fc064dda5 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -18848,6 +18848,15 @@ is off. @item show debug overload Displays the current state of displaying @value{GDBN} C@t{++} overload debugging info. +@cindex expression parser, debugging info +@cindex debug expression parser +@item set debug parser +Turns on or off the display of expression parser debugging output. +Internally, this sets the @code{yydebug} variable in the expression +parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for +details. The default is off. +@item show debug parser +Show the current state of expression parser debugging. @cindex packets, reporting on stdout @cindex serial connections, debugging @cindex debug remote protocol diff --git a/gdb/parse.c b/gdb/parse.c index d5a199bfc5..aabc4616c8 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -109,6 +109,18 @@ show_expressiondebug (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Expression debugging is %s.\n"), value); } + +/* Non-zero if an expression parser should set yydebug. */ +int parser_debug; + +static void +show_parserdebug (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Parser debugging is %s.\n"), value); +} + + static void free_funcalls (void *ignore); static int prefixify_expression (struct expression *); @@ -1377,4 +1389,12 @@ When non-zero, the internal representation of expressions will be printed."), NULL, show_expressiondebug, &setdebuglist, &showdebuglist); + add_setshow_boolean_cmd ("parser", class_maintenance, + &parser_debug, _("\ +Set parser debugging."), _("\ +Show parser debugging."), _("\ +When non-zero, expression parser tracing will be enabled."), + NULL, + show_parserdebug, + &setdebuglist, &showdebuglist); } diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h index 6fcf7ae530..c4eb1a042a 100644 --- a/gdb/parser-defs.h +++ b/gdb/parser-defs.h @@ -29,6 +29,8 @@ struct block; +extern int parser_debug; + extern struct expression *expout; extern int expout_size; extern int expout_ptr;