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]

Make jprint.exp not rely on inferior output


With gdbserver, on Fedora 16, I see:

 FAIL: gdb.java/jprint.exp: unambiguous static call
 FAIL: gdb.java/jprint.exp: single argument print call
 FAIL: gdb.java/jprint.exp: double argument print call
 FAIL: gdb.java/jprint.exp: virtual fn call
 FAIL: gdb.java/jprint.exp: inherited static call
 FAIL: gdb.java/jprint.exp: inherited virtual fn call

While with a native run, I see:

 FAIL: gdb.java/jprint.exp: virtual fn call
 FAIL: gdb.java/jprint.exp: inherited virtual fn call

The problem is that the test relies on inferior output (printf/System.out.println,
which doesn't work with gdbserver.  I looked at the original email thread
introducing the patch [*], and I didn't see anything that would prevent making the
called functions return something other than void.  So instead of skipping the
test when gdb,noinferiorio is set, I adjusted it to not rely on inferior io
working.   I now get the same results gdbserver/native.

Anyone see a problem with this?

[*] http://sourceware.org/ml/gdb-patches/2004-03/msg00527.html .  The discussion
spawned several months.

gdb/testsuite/
2012-01-18  Pedro Alves  <palves@redhat.com>

	* gdb.java/jprint.exp: Don't rely on inferior output, but instead
	look at the funtions' returns.
	* gdb.java/jprint.java (jvclass.addprint, jprint.print(int))
	(jprint.print(int, int)): Change return type to int.  Adjust.

---

 gdb/testsuite/gdb.java/jprint.exp  |   12 ++++++------
 gdb/testsuite/gdb.java/jprint.java |    9 ++++++---
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/gdb/testsuite/gdb.java/jprint.exp b/gdb/testsuite/gdb.java/jprint.exp
index 97660e6..131dd47 100644
--- a/gdb/testsuite/gdb.java/jprint.exp
+++ b/gdb/testsuite/gdb.java/jprint.exp
@@ -49,16 +49,16 @@ if [set_lang_java] then {
     gdb_breakpoint "${function}void" { allow-pending }
     gdb_continue_to_breakpoint $function

-    gdb_test "p jvclass.addprint(4,5,6)" "sum is 15\r\n.*" "unambiguous static call"
+    gdb_test "p jvclass.addprint(4,5,6)" " = 15" "unambiguous static call"

     gdb_test "next" ""
     gdb_test "next" ""

-    gdb_test "p x.print(44)" "x is 44\r\n.*" "single argument print call"
-    gdb_test "p x.print(22,33)" "y is 33\r\n.*" "double argument print call"
-    gdb_test "call x.dothat(55)" "new value is 58\r\n.*= 62.*" "virtual fn call"
-    gdb_test "p x.addprint(1,2,3)" "sum is 6\r\n.*" "inherited static call"
-    gdb_test "call x.addk(44)" "adding k gives 121\r\n.*= 121.*" "inherited virtual fn call"
+    gdb_test "p x.print(44)" " = 44" "single argument call"
+    gdb_test "p x.print(22,33)" " = 33" "double argument call"
+    gdb_test "p x.dothat(55)" " = 62.*" "virtual fn call"
+    gdb_test "p x.addprint(1,2,3)" "= 6" "inherited static call"
+    gdb_test "p x.addk(44)" " = 121" "inherited virtual fn call"

     # Regression test for a crasher.
     # GCC does not output location information for static class members,
diff --git a/gdb/testsuite/gdb.java/jprint.java b/gdb/testsuite/gdb.java/jprint.java
index 5a4a424..3d55dc3 100644
--- a/gdb/testsuite/gdb.java/jprint.java
+++ b/gdb/testsuite/gdb.java/jprint.java
@@ -27,9 +27,10 @@ class jvclass {
   static {
     k = 77;
   }
-  public static void addprint (int x, int y, int z) {
+  public static int addprint (int x, int y, int z) {
     int sum = x + y + z;
     System.out.println ("sum is " + sum);
+    return sum;
   }

   public int addk (int x) {
@@ -48,11 +49,13 @@ public class jprint extends jvclass {
     System.out.println ("new value is " + y);
     return y + 4;
   }
-  public static void print (int x) {
+  public static int print (int x) {
     System.out.println("x is " + x);
+    return x;
   }
-  public static void print (int x, int y) {
+  public static int print (int x, int y) {
     System.out.println("y is " + y);
+    return y;
   }
   public static void main(String[] args) {
     jprint x = new jprint ();


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