diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 126e0c836ee..6341396673f 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2005-05-12 Aaron Luchko + + * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'. + 2005-05-11 Tom Tromey * gcj.texi (Code Generation): Document -fbootstrap-classes. diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi index 3b2f12e57fd..28316bf21d4 100644 --- a/gcc/java/gcj.texi +++ b/gcc/java/gcj.texi @@ -1095,6 +1095,11 @@ Equivalent to @code{-Xms}. @item -mx=@var{number} Equivalent to @code{-Xmx}. +@item -noverify +Do not verify compliance of bytecode with the VM specification. In addition, +this option disables type verification which is otherwise performed on BC-ABI +compiled code. + @item -X @itemx -X@var{argument} Supplying @code{-X} by itself will cause @code{gij} to list all the @@ -1137,7 +1142,8 @@ Each time a class is initialized, print a short message on standard error. compatibility with existing application launch scripts: @code{-client}, @code{-server}, @code{-hotspot}, @code{-jrockit}, @code{-agentlib}, @code{-agentpath}, @code{-debug}, @code{-d32}, -@code{-d64}, @code{-javaagent} and @code{-noclassgc}. +@code{-d64}, @code{-javaagent}, @code{-noclassgc}, @code{-verify}, +and @code{-verifyremote}. @c man end diff --git a/libjava/ChangeLog b/libjava/ChangeLog index e0508a5c337..469bb76bc2a 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,18 @@ +2005-05-12 Bryce McKinlay + + * include/jvm.h (gcj::verifyClasses): Declare. + * link.cc (gcj::verbose_class_flag): Moved. + * prims.cc (gcj::verifyClasses): Define here. + (gcj::verbose_class_flag): Move definition here. + (_Jv_Linker::wait_for_state): Don't call verify_class + if gcj::verifyClasses is not set. + * gij.cc (main): Set gcj::verifyClasses when '-noverify' is given. + +2005-05-12 Aaron Luchko + + * gij.cc (main): Recognize '-verify', '-noverify', and + '-verifyremote' + 2005-05-12 Kaz Kojima * configure.host: Set IEEESPEC to -mieee for sh*-*-*. diff --git a/libjava/gij.cc b/libjava/gij.cc index 010e72fb5fc..60d5b34817d 100644 --- a/libjava/gij.cc +++ b/libjava/gij.cc @@ -296,6 +296,14 @@ main (int argc, char const** argv) nonstandard_opts_help (); else if (! strncmp (arg, "-X", 2)) add_option (vm_args, arg, NULL); + // Obsolete options recognized for backwards-compatibility. + else if (! strcmp (arg, "-verify") + || ! strcmp (arg, "-verifyremote")) + continue; + else if (! strcmp (arg, "-noverify")) + { + gcj::verifyClasses = false; + } else { fprintf (stderr, "gij: unrecognized option -- `%s'\n", argv[i]); diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h index 6b978f906e4..bceb291fb58 100644 --- a/libjava/include/jvm.h +++ b/libjava/include/jvm.h @@ -230,6 +230,9 @@ namespace gcj /* Print out class names as they are initialized. */ extern bool verbose_class_flag; + + /* When true, enable the bytecode verifier and BC-ABI verification. */ + extern bool verifyClasses; } // This class handles all aspects of class preparation and linking. diff --git a/libjava/link.cc b/libjava/link.cc index 0a705736628..3fe073463f9 100644 --- a/libjava/link.cc +++ b/libjava/link.cc @@ -44,9 +44,6 @@ details. */ using namespace gcj; -// When true, print debugging information about class loading. -bool gcj::verbose_class_flag; - typedef unsigned int uaddr __attribute__ ((mode (pointer))); template @@ -1728,7 +1725,8 @@ _Jv_Linker::wait_for_state (jclass klass, int state) if (state >= JV_STATE_LINKED && klass->state < JV_STATE_LINKED) { - verify_class (klass); + if (gcj::verifyClasses) + verify_class (klass); ensure_class_linked (klass); link_exception_table (klass); diff --git a/libjava/prims.cc b/libjava/prims.cc index 98d30232451..af177241acf 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -953,6 +953,12 @@ namespace gcj _Jv_Utf8Const *finit_name; bool runtimeInitialized = false; + + // When true, print debugging information about class loading. + bool verbose_class_flag; + + // When true, enable the bytecode verifier and BC-ABI type verification. + bool verifyClasses = true; } // We accept all non-standard options accepted by Sun's java command,