This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]