aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog16
-rw-r--r--libjava/include/java-interp.h4
-rw-r--r--libjava/prims.cc7
-rw-r--r--libjava/testsuite/lib/libjava.exp8
-rw-r--r--libjava/testsuite/libjava.jvmti/dummyagent.c9
-rw-r--r--libjava/testsuite/libjava.jvmti/jvmti-interp.exp21
6 files changed, 53 insertions, 12 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index f109d240..b7216a5 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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.
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index 52a04e7..204a49f 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -466,9 +466,9 @@ public:
if (pc_ptr == NULL)
pc = 0;
else
- pc = *pc_ptr;
+ pc = *pc_ptr - 1;
- return pc - 1;
+ return pc;
}
};
diff --git a/libjava/prims.cc b/libjava/prims.cc
index c2ecaf1..706ab4b 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -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)
diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp
index 09d4f09..c684bf6 100644
--- a/libjava/testsuite/lib/libjava.exp
+++ b/libjava/testsuite/lib/libjava.exp
@@ -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
index 0000000..9e704a0
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/dummyagent.c
@@ -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
+}
+
diff --git a/libjava/testsuite/libjava.jvmti/jvmti-interp.exp b/libjava/testsuite/libjava.jvmti/jvmti-interp.exp
index 73a0582..c99dd34 100644
--- a/libjava/testsuite/libjava.jvmti/jvmti-interp.exp
+++ b/libjava/testsuite/libjava.jvmti/jvmti-interp.exp
@@ -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"
}
}