Make jprint.exp not rely on inferior output
Pedro Alves
palves@redhat.com
Wed Jan 18 19:19:00 GMT 2012
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 ();
More information about the Gdb-patches
mailing list