This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Regression for gdb.base/default.exp: show convenience [Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen]
Jan Kratochvil writes:
> On Fri, 10 Aug 2012 06:14:24 +0200, dje@google.com wrote:
> > Ok to check in?
>
> 96e5de1146522ad853b4cb51ff58fdad6ad79f7d is the first bad commit
> commit 96e5de1146522ad853b4cb51ff58fdad6ad79f7d
> Author: Doug Evans <dje@google.com>
> Date: Fri Aug 10 20:25:50 2012 +0000
>
> Add $_memeq, $_regex, $_streq, $_strlen convenience functions.
>
> -PASS: gdb.base/default.exp: show convenience
> +FAIL: gdb.base/default.exp: show convenience ($_probe_arg0 = <error: No frame selected> not found)
>
> It happens on all OSes/archs but only without --without-python.
Blech. I'm used to skimming over a (small) list of failures and this one got lost.
[Note to self: Finish installation of validate_failures.py.]
There are two ways to proceed here, based on the answer to this question: Does "show conv" include convenience functions? I can argue either way, but I prefer it including functions, so I've updated the respective text.
Tested on amd64-linux with/without Python.
I will check this in in a few days if there are no objections.
[modulo doc RFA: Eli?]
btw, I changed "print $foo=1" to "set $foo=1" in the output of
"help show conv". I think it's cleaner.
2012-08-11 Doug Evans <dje@google.com>
* value.c (show_convenience): Tweak comment.
(_initialize_values): Mention convenience functions in the help text
for "show convenience".
doc/
* gdb.texinfo (Convenience Vars): Update text for "show convenience"
to include functions.
testsuite/
* gdb.base/default.exp: Update expected output of "show convenience".
Index: value.c
===================================================================
RCS file: /cvs/src/src/gdb/value.c,v
retrieving revision 1.160
diff -u -p -r1.160 value.c
--- value.c 13 Jun 2012 15:50:19 -0000 1.160
+++ value.c 11 Aug 2012 17:36:59 -0000
@@ -2255,11 +2255,17 @@ show_convenience (char *ignore, int from
printf_filtered (("\n"));
}
if (!varseen)
- printf_unfiltered (_("No debugger convenience variables now defined.\n"
- "Convenience variables have "
- "names starting with \"$\";\n"
- "use \"set\" as in \"set "
- "$foo = 5\" to define them.\n"));
+ {
+ /* This text does not mention convenience functions on purpose.
+ The user can't create them except via Python, and if Python support
+ is installed this message will never be printed ($_streq will
+ exist). */
+ printf_unfiltered (_("No debugger convenience variables now defined.\n"
+ "Convenience variables have "
+ "names starting with \"$\";\n"
+ "use \"set\" as in \"set "
+ "$foo = 5\" to define them.\n"));
+ }
}
/* Extract a value as a C number (either long or double).
@@ -3363,14 +3369,18 @@ void
_initialize_values (void)
{
add_cmd ("convenience", no_class, show_convenience, _("\
-Debugger convenience (\"$foo\") variables.\n\
-These variables are created when you assign them values;\n\
-thus, \"print $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\
+Debugger convenience (\"$foo\") variables and functions.\n\
+Convenience variables are created when you assign them values;\n\
+thus, \"set $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\
\n\
A few convenience variables are given values automatically:\n\
\"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
-\"$__\" holds the contents of the last address examined with \"x\"."),
- &showlist);
+\"$__\" holds the contents of the last address examined with \"x\"."
+#ifdef HAVE_PYTHON
+"\n\n\
+Convenience functions are defined via the Python API."
+#endif
+ ), &showlist);
add_cmd ("values", no_set_class, show_values, _("\
Elements of value history around item number IDX (or last ten)."),
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.1000
diff -u -p -r1.1000 gdb.texinfo
--- doc/gdb.texinfo 10 Aug 2012 20:25:56 -0000 1.1000
+++ doc/gdb.texinfo 11 Aug 2012 17:37:00 -0000
@@ -9225,9 +9225,10 @@ variable, when used as an expression, ha
@table @code
@kindex show convenience
-@cindex show all user variables
+@cindex show all user variables and functions
@item show convenience
-Print a list of convenience variables used so far, and their values.
+Print a list of convenience variables used so far, and their values,
+as well as a list of the convenience functions.
Abbreviated @code{show conv}.
@kindex init-if-undefined
Index: testsuite/gdb.base/default.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/default.exp,v
retrieving revision 1.60
diff -u -p -r1.60 default.exp
--- testsuite/gdb.base/default.exp 7 Aug 2012 05:49:02 -0000 1.60
+++ testsuite/gdb.base/default.exp 11 Aug 2012 17:37:00 -0000
@@ -595,11 +595,10 @@ gdb_test "show complaints" "Max number o
gdb_test "show confirm" "Whether to confirm potentially dangerous operations is o\[a-z\]*." "show confirm"
#test show convenience
-# This is tricker as there are multiple internal convenience vars and we
-# can't assume any particular order.
-gdb_test_list_exact "show convenience" "show convenience" \
- "\[^\r\n\]+\[\r\n\]+" \
- "\[^\r\n\]+" \
+# This is trickier as there are multiple internal convenience vars and
+# functions and we can't assume any particular order.
+# And we have to handle the extra convenience funs provided by Python.
+set show_conv_list \
{ \
{$_sdata = void} \
{$_siginfo = void} \
@@ -618,6 +617,19 @@ gdb_test_list_exact "show convenience" "
{$_probe_arg10 = <error: No frame selected>} \
{$_probe_arg11 = <error: No frame selected>} \
}
+if ![skip_python_tests] {
+ append show_conv_list \
+ {
+ {$_memeq = <internal function _memeq>} \
+ {$_regex = <internal function _regex>} \
+ {$_streq = <internal function _streq>} \
+ {$_strlen = <internal function _strlen>} \
+ }
+}
+gdb_test_list_exact "show convenience" "show convenience" \
+ "\[^\r\n\]+\[\r\n\]+" \
+ "\[^\r\n\]+" \
+ $show_conv_list
#test show directories
gdb_test "show directories" "Source directories searched: .cdir\[:;\].cwd" "show directories"
- References:
- [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen
- Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen
- Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen
- Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen
- Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen
- Regression for gdb.base/default.exp: show convenience [Re: [RFA, doc RFA] Implement $_memeq, $_streq, $_strlen]