This is the mail archive of the gdb-patches@sources.redhat.com 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: [RFA/testsuite] Tweak gdb.java/jmisc.java to pass on PowerPC


On Mon, Apr 01, 2002 at 11:48:14PM -0500, Daniel Jacobowitz wrote:
> On Mon, Apr 01, 2002 at 10:01:44PM -0600, Michael Elizabeth Chastain wrote:
> > Okay, I'll volunteer, but I don't have any PPC hardware.  If you
> > send me a binary test program, will I be able to get somewhere with a
> > powerpc-unknown-eabi cross gdb?
> > 
> > I will see if I can at least make gdb throw up instead of going into a
> > silent death spiral.
> 
> I can't think how.  Running Java programs requires a threads package,
> as best I can tell - if it's possible without, I can't see how...
> 
> Actually, though, I figured out where the problem lies.  I'll spare you
> the investigation and try to fix it myself.

Here's a revised testsuite patch.  This one only adds tests, doesn't
remove any.  The patch to fix the others will be in my next message. 
This one better, Michael?

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

2002-04-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.java/jmisc.java: Add ``void foo (String[] args)''.  Call it.
	* gdb.java/jmisc2.java: New test.
	* gdb.java/jmisc.exp (ptype jmisc): Update to match ``foo''.  Add
	test for jmisc2.

Index: testsuite/gdb.java/jmisc2.java
===================================================================
RCS file: N/A
diff -u /dev/null testsuite/gdb.java/jmisc2.java
--- /dev/null	Wed Dec 31 19:00:00 1969
+++ testsuite/gdb.java/jmisc2.java	Tue Apr  2 02:03:47 2002
@@ -0,0 +1,7 @@
+public class jmisc2
+{
+  public static void main (String[] args)
+  {
+    return;
+  }
+}
Index: testsuite/gdb.java/jmisc.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.java/jmisc.exp,v
retrieving revision 1.2
diff -u -p -r1.2 jmisc.exp
--- testsuite/gdb.java/jmisc.exp	2001/03/06 08:21:58	1.2
+++ testsuite/gdb.java/jmisc.exp	2002/04/02 07:04:23
@@ -34,6 +34,14 @@ if  { [compile_java_from_source ${srcfil
     return -1
 }
 
+set testfile2 "jmisc2"
+set srcfile2 ${srcdir}/$subdir/${testfile2}.java
+set binfile2 ${objdir}/${subdir}/${testfile2}
+if  { [compile_java_from_source ${srcfile2} ${binfile2} "-g"] != "" } {
+    untested "Couldn't compile ${srcfile2}"
+    return -1
+}
+
 # Set the current language to java.  This counts as a test.  If it
 # fails, then we skip the other tests.
 
@@ -70,7 +78,7 @@ if ![set_lang_java] then {
 
     send_gdb "ptype jmisc\n"   
     gdb_expect {   
-	-re "type = class jmisc  extends java.lang.Object \{\[\r\n\ \t]+void main\\(java\.lang\.String\\\[]\\);\[\r\n\ \t]+void <init>\\(void\\);\[\r\n\ \t]+\}\[\r\n\ \t]+$gdb_prompt $"               { pass "ptype jmisc" }
+	-re "type = class jmisc  extends java.lang.Object \{\[\r\n\ \t\]+void foo\\(java\.lang\.String\\\[]\\);\[\r\n\ \t\]+void main\\(java\.lang\.String\\\[]\\);\[\r\n\ \t]+jmisc\\(\\);\[\r\n\ \t]+\}\[\r\n\ \t]+$gdb_prompt $"               { pass "ptype jmisc" }
 	-re ".*$gdb_prompt $"             { fail "ptype jmisc" }
 	timeout { fail "ptype jmisc (timeout)" ; return }
     }
@@ -87,5 +95,29 @@ if ![set_lang_java] then {
 	-re "\\\$2 = \{length: 0\}\[\r\n\ \t]+$gdb_prompt $"                                                             { pass "p *args" }
 	-re ".*$gdb_prompt $"             { fail "p *args" }
 	timeout { fail "p *args (timeout)" ; return }
+    }
+}
+
+# Start a clean gdb on jmisc2
+set testfile ${testfile2}
+set srcfile ${srcfile2}
+set binfile ${binfile2}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+
+if ![set_lang_java] then {
+    runto ${testfile}.main
+
+    # On architectures where arguments are passed in registers (not on the
+    # stack), if the argument to main is dead, GCJ's call to _Jv_Init may
+    # corrupt the argument pointer.  Make sure GDB doesn't crash printing
+    # the (possibly corrupt) pointer.
+    send_gdb "p *args\n"
+    gdb_expect {   
+	-re ".*$gdb_prompt $"
+		{ pass "p *args a second time" }
+	timeout { fail "p *args a second time (timeout)" ; return }
     }
 }
Index: testsuite/gdb.java/jmisc.java
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.java/jmisc.java,v
retrieving revision 1.1
diff -u -p -r1.1 jmisc.java
--- testsuite/gdb.java/jmisc.java	2000/07/24 04:34:52	1.1
+++ testsuite/gdb.java/jmisc.java	2002/04/02 07:04:23
@@ -1,7 +1,12 @@
 public class jmisc
 {
+  public static void foo (String[] args)
+  {
+    return;
+  }
   public static void main (String[] args)
   {
+    foo (args);
     return;
   }
 }


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