This is the mail archive of the 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: [patch, testsuite] require readline for gdb.linespec/explicit.exp tab-completion tests

On 09/17/2015 12:28 AM, Sandra Loosemore wrote:
> Tab-completion tests require readline support.  The ones in
> gdb.base/completion.exp are already conditional, but the recently-added
> gdb.linespec/explicit.exp tests are not.  This patch fixes that, and
> also an obvious typo ("faill" -> "fail").  The patch is kind of long
> because I had to insert an "if" block and reindent, but there's nothing
> else going on here.  OK to commit?

I'm not a maintainer, but I wouldn't hesitate to commit this as obvious.
Thank you for catching (and fixing) that.

> The immediate problem is that the response to the "break -function
> mai\t" test doesn't always include the ^G character in the output
> pattern, and the other FAILs are cascading off of the testcase not being
> structured to recover from a pattern match failure (it's sending more
> commands without a newline to terminate the one that failed).  But, I
> have no clue why GDB is giving a ^G in some configurations and not
> others (I observed that this test fails on nios2-elf target but passes
> on nios2-linux-gnu, for instance), or whether this difference is
> indicative of an actual bug.  So I've not touched that part of the
> testcase.

Can you reliably reproduce the failure? I have been unable to do so
locally, but I have a couple of guesses why this test might fail.

I've attached a patch where I've made two changes. First, I've switched
from using "main" as a unique completion to some goofy new function
where the name is hopefully truly unique.

Second I believe the test is incorrect (or at least in combination with
some readline versions?). ^G is output only for non-unique completions.
So with this particular test, I don't think it should be present at all.
I've removed it in the patch.

If you can reliably reproduce the failure, I sure would love to know
whether this patch helps at all.

diff --git a/gdb/testsuite/gdb.linespec/explicit.c b/gdb/testsuite/gdb.linespec/explicit.c
index 4e1c635..5b65311 100644
--- a/gdb/testsuite/gdb.linespec/explicit.c
+++ b/gdb/testsuite/gdb.linespec/explicit.c
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2013 Free Software Foundation, Inc.
+   Copyright 2012-2015 Free Software Foundation, Inc.
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -42,6 +42,12 @@ myfunction (int arg)
   return r;
+static int
+explicit_exp_really_unique_function_name (int arg)
+  return arg;
 main (void)
@@ -52,5 +58,5 @@ main (void)
   for (i = 0, j = 0; i < 1000; ++i)
     j += myfunction (0);
-  return myfunction2 (j);
+  return explicit_exp_really_unique_function_name (myfunction2 (j));
diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp
index a0851cd..6b9c8e0 100644
--- a/gdb/testsuite/gdb.linespec/explicit.exp
+++ b/gdb/testsuite/gdb.linespec/explicit.exp
@@ -181,9 +181,9 @@ namespace eval $testfile {
     set tst "complete unique function name"
-    send_gdb "break -function mai\t"
+    send_gdb "break -function explicit_exp_really_unique_f\t"
     gdb_test_multiple "" $tst {
-	"break -function mai\\\x07n" {
+	"break -function explicit_exp_really_unique_function_name " {
 	    send_gdb "\n"
 	    gdb_test "" ".*Breakpoint \[0-9\]+.*" $tst
 	    gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"

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