OSDN Git Service

* include/java-interp.h (_Jv_InterpFrame::get_pc): Only deduct
authorkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 May 2007 20:40:47 +0000 (20:40 +0000)
committerkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 May 2007 20:40:47 +0000 (20:40 +0000)
        one when pc_ptr is non-NULL.

        * prims.cc (parse_init_args): Enable JVMTI with agentlib
        and agentpath options.

        * testsuite/lib/libjava.exp (exec_gij): Add new addl_flags
        parameter.
        * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
        Pass '-agentlib:dummyagent' when executing gij.
        (gij_jvmti_run): Build dummy JVMTI agent before running tests,
        and remove it when finished.
        * testsuite/libjava.jvmti/dummyagent.c: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125040 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/include/java-interp.h
libjava/prims.cc
libjava/testsuite/lib/libjava.exp
libjava/testsuite/libjava.jvmti/dummyagent.c [new file with mode: 0644]
libjava/testsuite/libjava.jvmti/jvmti-interp.exp

index f109d24..b7216a5 100644 (file)
@@ -1,3 +1,19 @@
+2007-05-24  Keith Seitz  <keiths@redhat.com>
+
+       * include/java-interp.h (_Jv_InterpFrame::get_pc): Only deduct
+       one when pc_ptr is non-NULL.
+
+       * prims.cc (parse_init_args): Enable JVMTI with agentlib
+       and agentpath options.
+
+       * testsuite/lib/libjava.exp (exec_gij): Add new addl_flags
+       parameter.
+       * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
+       Pass '-agentlib:dummyagent' when executing gij.
+       (gij_jvmti_run): Build dummy JVMTI agent before running tests,
+       and remove it when finished.
+       * testsuite/libjava.jvmti/dummyagent.c: New file.
+
 2007-05-23  Steve Ellcey  <sje@cup.hp.com>
 
        * Makefile.in: Regenerate.
index 52a04e7..204a49f 100644 (file)
@@ -466,9 +466,9 @@ public:
     if (pc_ptr == NULL)
       pc = 0;
     else
-      pc = *pc_ptr;
+      pc = *pc_ptr - 1;
     
-    return pc - 1;
+    return pc;
   }
 };
 
index c2ecaf1..706ab4b 100644 (file)
@@ -1,6 +1,6 @@
 // prims.cc - Code for core of runtime environment.
 
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006  Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -1522,6 +1522,9 @@ parse_init_args (JvVMInitArgs* vm_args)
                {
                  return -1;
                }
+
+             // Mark JVMTI active
+             JVMTI::enabled = true;
             }
     
           continue;
@@ -1564,6 +1567,8 @@ parse_init_args (JvVMInitArgs* vm_args)
               return -1;
             }
        
+         // Mark JVMTI active
+         JVMTI::enabled = true;
           continue;
        }
       else if (vm_args->ignoreUnrecognized)
index 09d4f09..c684bf6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software Foundation
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation
 
 proc load_gcc_lib { filename } {
     global srcdir
@@ -494,7 +494,7 @@ proc gcj_invoke {program expectFile ld_library_additions} {
   }
 }
 
-proc exec_gij {jarfile expectFile ld_library_additions} {
+proc exec_gij {jarfile expectFile {ld_library_additions {}} {addl_flags {}}} {
   global env
   global libjava_ld_library_path
   global ld_library_path
@@ -512,9 +512,9 @@ proc exec_gij {jarfile expectFile ld_library_additions} {
   set gij [libjava_find_gij]
   set classname [file rootname [file tail $jarfile]]
   
-  puts "LD_LIBRARY_PATH=. $gij -cp $jarfile $classname"
+  puts "LD_LIBRARY_PATH=. $gij -cp $jarfile $addl_flags $classname"
        
-  set result [libjava_load $gij "-cp $jarfile $classname"]
+  set result [libjava_load $gij "-cp $jarfile $addl_flags $classname"]
   set status [lindex $result 0]
   set output [lindex $result 1]
 
diff --git a/libjava/testsuite/libjava.jvmti/dummyagent.c b/libjava/testsuite/libjava.jvmti/dummyagent.c
new file mode 100644 (file)
index 0000000..9e704a0
--- /dev/null
@@ -0,0 +1,9 @@
+#include <jvmti.h>
+
+JNIEXPORT jint JNICALL 
+Agent_OnLoad (JavaVM *vm, char *options, void *reserved)
+{
+  // nothing -- this is just a stub to get JVMTI properly
+  // initialized
+}
+
index 73a0582..c99dd34 100644 (file)
@@ -133,7 +133,8 @@ proc gij_jvmti_test_one {file} {
   libjava_arguments
   
   set jarfile [file join [file dirname $file] $main.jar]
-  if {! [exec_gij $jarfile [file rootname $file].out {}]} {
+  set gij_flags {-agentlib:dummyagent}
+  if {! [exec_gij $jarfile [file rootname $file].out {} $gij_flags]} {
       return 0
   }
 
@@ -151,14 +152,24 @@ proc gij_jvmti_run {} {
 
   # For now we only test JVMTI on native builds.
   if {$build_triplet == $host_triplet} {
-      catch { lsort [glob -nocomplain ${srcdir}/${subdir}/interp/*.jar] \
-             } srcfiles
+
+    # Build our dummy JVMTI agent library
+    if {![gcj_jni_compile_c_to_so [file join $srcdir $subdir dummyagent.c]]} {
+      fail "compiling dummy JVMTI agent"
+    } else {
+      pass "compiling dummy JVMTI agent"
+
+      catch {lsort [glob -nocomplain ${srcdir}/${subdir}/interp/*.jar]} \
+       srcfiles
 
       foreach x $srcfiles {
-        gij_jvmti_test_one $x
+       gij_jvmti_test_one $x
       }
+
+      gcj_cleanup libdummyagent.so
+    }
   } else {
-      verbose "JVMTI tests not run in cross-compilation environment"
+    verbose "JVMTI tests not run in cross-compilation environment"
   }
 }