From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21807 invoked by alias); 18 Jan 2012 19:15:05 -0000 Received: (qmail 21789 invoked by uid 22791); 18 Jan 2012 19:15:03 -0000 X-SWARE-Spam-Status: No, hits=-6.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_JV,TW_VC,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Jan 2012 19:14:36 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q0IJEZ5B007815 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 18 Jan 2012 14:14:36 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q0IJEYVg019896 for ; Wed, 18 Jan 2012 14:14:35 -0500 Message-ID: <4F171A1A.8050302@redhat.com> Date: Wed, 18 Jan 2012 19:19:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0 MIME-Version: 1.0 To: GDB Patches Subject: Make jprint.exp not rely on inferior output Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00679.txt.bz2 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 * 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 ();