* configure.ac (JAVA_ARCH): Added.
authortwisti <none@none>
Sun, 19 Aug 2007 17:56:23 +0000 (17:56 +0000)
committertwisti <none@none>
Sun, 19 Aug 2007 17:56:23 +0000 (17:56 +0000)
* src/vm/vm.c (opts): Added Xverify:none (should be handled better).
(vm_create) [WITH_JRE_LAYOUT && WITH_CLASSPATH_SUN]: Implemented.

* src/vm/properties.c (properties_init) [WITH_CLASSPATH_GNU]: Use
JAVA_ARCH.

configure.ac
src/vm/properties.c
src/vm/vm.c

index 74312f04a8e72afb36a156b213e92c69e95df0f2..1eed2156f767f1bdd827c2e16f7b2a647bf0369b 100644 (file)
@@ -22,7 +22,7 @@ dnl along with this program; if not, write to the Free Software
 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 dnl 02110-1301, USA.
 dnl 
-dnl $Id: configure.ac 8301 2007-08-13 13:34:12Z twisti $
+dnl $Id: configure.ac 8351 2007-08-19 17:56:23Z twisti $
 
 dnl Process this file with autoconf to produce a configure script.
 
@@ -51,56 +51,69 @@ case "$host_cpu" in
 alpha | alphaev56 | alphapca56 )
     ARCH_DIR="alpha"
     ARCH_CFLAGS="-mieee -D__ALPHA__"
+    JAVA_ARCH="alpha"
     ;;
 
 arm | armv4 | armv4tl | armv5b | armv5l )
     ARCH_DIR="arm"
     ARCH_CFLAGS="-D__ARM__"
+    JAVA_ARCH="arm"
     ;;
 
 hppa2.0 )
     ARCH_DIR="parisc"
     ARCH_CFLAGS="-D__PARISC__"
+    JAVA_ARCH="hppa"
     ;;
 
 i386 | i486 | i586 | i686 )
     ARCH_DIR="i386"
     ARCH_CFLAGS="-D__I386__"
+    JAVA_ARCH="i386"
     ;;
 
 m68k )
     ARCH_DIR="m68k"
     ARCH_CFLAGS="-D__M68K__"
+    JAVA_ARCH="m68k"
     ;;
 
 mips | mipsel )
     ARCH_DIR="mips"
     ARCH_CFLAGS="-D__MIPS__"
+    dnl Is this correct for mipsel?
+    JAVA_ARCH="mips"
     ;;
 
 powerpc )
     ARCH_DIR="powerpc"
     ARCH_CFLAGS="-D__POWERPC__"
+    JAVA_ARCH="ppc"
     ;;
 
 powerpc64 )
     ARCH_DIR="powerpc64"
     ARCH_CFLAGS="-D__POWERPC64__"
+    JAVA_ARCH="ppc64"
     ;;
 
 s390 )
     ARCH_DIR="s390"
     ARCH_CFLAGS="-D__S390__"
+    JAVA_ARCH="s390"
     ;;
 
 sparc | sparc64 )
     ARCH_DIR="sparc64"
     ARCH_CFLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
+    dnl Is this correct for 64-bits?
+    JAVA_ARCH="sparc"
     ;;
 
 x86_64 )
     ARCH_DIR="x86_64"
     ARCH_CFLAGS="-D__X86_64__"
+    JAVA_ARCH="amd64"
     ;;
 
 xdspcore )
@@ -194,6 +207,7 @@ AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS", [CFLAGS used])
 
 dnl define and substitute some architecture specific variables
 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
+AC_DEFINE_UNQUOTED([JAVA_ARCH], "${JAVA_ARCH}", [Java architecture name])
 AC_SUBST(ARCH_DIR)
 AC_SUBST(OS_DIR)
 AC_SUBST(USE_SCHEDULER)
index 69458063f24cd0dc0221f97fb04e0cbea8f77864..e793c3594fb25a1fff81e8ece69ed6385d0be1ab 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: properties.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: properties.c 8351 2007-08-19 17:56:23Z twisti $
 
 */
 
@@ -229,22 +229,7 @@ bool properties_init(void)
        properties_add("os.name", "unknown");
        properties_add("os.version", "unknown");
 #  else
-       /* We need to set the os.arch hardcoded to be compatible with SUN. */
-
-#   if defined(__I386__)
-       /* map all x86 architectures (i386, i486, i686) to i386 */
-
-       properties_add("os.arch", "i386");
-#   elif defined(__POWERPC__)
-       properties_add("os.arch", "ppc");
-#   elif defined(__X86_64__)
-       properties_add("os.arch", "amd64");
-#   else
-       /* default to what uname returns */
-
-       properties_add("os.arch", utsnamebuf->machine);
-#   endif
-
+       properties_add("os.arch", JAVA_ARCH);
        properties_add("os.name", utsnamebuf->sysname);
        properties_add("os.version", utsnamebuf->release);
 #  endif
index 63cc936132fd41243c8c0256b2167a6c5d588d5a..d5ae42fd85815ca827252231ff37f92321612a63 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: vm.c 8329 2007-08-16 17:57:27Z twisti $
+   $Id: vm.c 8351 2007-08-19 17:56:23Z twisti $
 
 */
 
@@ -329,6 +329,7 @@ opt_struct opts[] = {
        { "noasyncgc",         false, OPT_IGNORE },
 #if defined(ENABLE_VERIFIER)
        { "noverify",          false, OPT_NOVERIFY },
+       { "Xverify:none",      false, OPT_NOVERIFY },
 #endif
        { "v",                 false, OPT_VERBOSE1 },
        { "verbose:",          true,  OPT_VERBOSE },
@@ -846,32 +847,68 @@ bool vm_create(JavaVMInitArgs *vm_args)
        if (readlink("/proc/self/exe", cacao_prefix, 4095) == -1)
                vm_abort("readlink failed: %s\n", strerror(errno));
 
-       /* get the path of the current executable */
+       /* Get the path of the current executable. */
 
        cacao_prefix = dirname(cacao_prefix);
 
        if ((strlen(cacao_prefix) + strlen("/..") + strlen("0")) > 4096)
                vm_abort("libjvm name to long for buffer\n");
 
-       /* concatenate the library name */
+       /* Walk up one directory. */
 
        strcat(cacao_prefix, "/..");
 
-       /* now set path to libjvm.so */
+# if defined(WITH_CLASSPATH_GNU)
+
+       /* Set path to libjvm.so. */
 
-       len = strlen(cacao_prefix) + strlen("/lib/libjvm") + strlen("0");
+       len =
+               strlen(cacao_prefix) + strlen("/lib/libjvm") +
+               strlen("0");
 
        cacao_libjvm = MNEW(char, len);
+
        strcpy(cacao_libjvm, cacao_prefix);
        strcat(cacao_libjvm, "/lib/libjvm");
 
-       /* and finally set the path to GNU Classpath libraries */
+       /* Set the path to Java core native libraries. */
 
-       len = strlen(cacao_prefix) + strlen("/lib/classpath") + strlen("0");
+       len =
+               strlen(cacao_prefix) + strlen("/lib/classpath") +
+               strlen("0");
 
        classpath_libdir = MNEW(char, len);
+
        strcpy(classpath_libdir, cacao_prefix);
        strcat(classpath_libdir, "/lib/classpath");
+
+# elif defined(WITH_CLASSPATH_SUN)
+
+       /* Set path to libjvm.so. */
+
+       len =
+               strlen(cacao_prefix) + strlen("/lib/"JAVA_ARCH"/server/libjvm") +
+               strlen("0");
+
+       cacao_libjvm = MNEW(char, len);
+
+       strcpy(cacao_libjvm, cacao_prefix);
+       strcat(cacao_libjvm, "/lib/"JAVA_ARCH"/server/libjvm");
+
+       /* Set the path to Java core native libraries. */
+
+       len =
+               strlen(cacao_prefix) + strlen("/lib/"JAVA_ARCH) +
+               strlen("0");
+
+       classpath_libdir = MNEW(char, len);
+
+       strcpy(classpath_libdir, cacao_prefix);
+       strcat(classpath_libdir, "/lib/"JAVA_ARCH);
+
+# else
+#  error unknown classpath configuration
+# endif
 #else
        cacao_prefix     = CACAO_PREFIX;
        cacao_libjvm     = CACAO_LIBDIR"/libjvm";
@@ -883,7 +920,7 @@ bool vm_create(JavaVMInitArgs *vm_args)
 # endif
 #endif
 
-       /* set the bootclasspath */
+       /* Set the bootclasspath. */
 
        cp = getenv("BOOTCLASSPATH");
 
@@ -893,83 +930,121 @@ bool vm_create(JavaVMInitArgs *vm_args)
        }
        else {
 #if defined(WITH_JRE_LAYOUT)
-               len =
 # if defined(WITH_CLASSPATH_GNU)
-                       strlen(cacao_prefix) +
-                       strlen("/share/cacao/vm.zip") +
-                       strlen(":") +
-# endif
-                       strlen(cacao_prefix) +
-                       strlen("/share/classpath/glibj.zip") +
+
+               len =
+                       strlen(cacao_prefix) + strlen("/share/cacao/vm.zip:") +
+                       strlen(cacao_prefix) + strlen("/share/classpath/glibj.zip") +
                        strlen("0");
 
                _Jv_bootclasspath = MNEW(char, len);
-# if defined(WITH_CLASSPATH_GNU)
-               strcat(_Jv_bootclasspath, cacao_prefix);
+
+               strcpy(_Jv_bootclasspath, cacao_prefix);
                strcat(_Jv_bootclasspath, "/share/cacao/vm.zip");
                strcat(_Jv_bootclasspath, ":");
-# endif
                strcat(_Jv_bootclasspath, cacao_prefix);
                strcat(_Jv_bootclasspath, "/share/classpath/glibj.zip");
+
+# elif defined(WITH_CLASSPATH_SUN)
+
+               /* This is the bootclasspath taken from HotSpot (see
+                  hotspot/src/share/vm/runtime/os.cpp
+                  (os::set_boot_path)). */
+
+               len =
+                       strlen(cacao_prefix) + strlen("/lib/resources.jar:") +
+                       strlen(cacao_prefix) + strlen("/lib/rt.jar:") +
+                       strlen(cacao_prefix) + strlen("/lib/sunrsasign.jar:") +
+                       strlen(cacao_prefix) + strlen("/lib/jsse.jar:") +
+                       strlen(cacao_prefix) + strlen("/lib/jce.jar:") +
+                       strlen(cacao_prefix) + strlen("/lib/charsets.jar:") +
+                       strlen(cacao_prefix) + strlen("/classes") +
+                       strlen("0");
+
+               _Jv_bootclasspath = MNEW(char, len);
+
+               strcpy(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/resources.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/rt.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/sunrsasign.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/jsse.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/jce.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/lib/charsets.jar:");
+               strcat(_Jv_bootclasspath, cacao_prefix);
+               strcat(_Jv_bootclasspath, "/classes");
+
+# else
+#  error unknown classpath configuration
+# endif
 #else
 # if defined(WITH_CLASSPATH_GNU)
+
                len =
                        strlen(CACAO_VM_ZIP) +
                        strlen(":") +
                        strlen(CLASSPATH_CLASSES) +
                        strlen("0");
+
+               _Jv_bootclasspath = MNEW(char, len);
+
+               strcpy(_Jv_bootclasspath, CACAO_VM_ZIP);
+               strcat(_Jv_bootclasspath, ":");
+               strcat(_Jv_bootclasspath, CLASSPATH_CLASSES);
+
 # elif defined(WITH_CLASSPATH_SUN)
+
                /* This is the bootclasspath taken from HotSpot (see
                   hotspot/src/share/vm/runtime/os.cpp
                   (os::set_boot_path)). */
 
                len =
-                       strlen(CLASSPATH_PREFIX"/lib/resources.jar:"
-                                  CLASSPATH_PREFIX"/lib/rt.jar:"
-                                  CLASSPATH_PREFIX"/lib/sunrsasign.jar:"
-                                  CLASSPATH_PREFIX"/lib/jsse.jar:"
-                                  CLASSPATH_PREFIX"/lib/jce.jar:"
-                                  CLASSPATH_PREFIX"/lib/charsets.jar:"
-                                  CLASSPATH_PREFIX"/classes") +
+                       strlen(CLASSPATH_PREFIX"/lib/resources.jar:") +
+                       strlen(CLASSPATH_PREFIX"/lib/rt.jar:") +
+                       strlen(CLASSPATH_PREFIX"/lib/sunrsasign.jar:") +
+                       strlen(CLASSPATH_PREFIX"/lib/jsse.jar:") +
+                       strlen(CLASSPATH_PREFIX"/lib/jce.jar:") +
+                       strlen(CLASSPATH_PREFIX"/lib/charsets.jar:") +
+                       strlen(CLASSPATH_PREFIX"/classes") +
                        strlen("0");
+
+               _Jv_bootclasspath = MNEW(char, len);
+
+               strcpy(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/resources.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/rt.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/sunrsasign.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/jsse.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/jce.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/lib/charsets.jar:");
+               strcat(_Jv_bootclasspath, CLASSPATH_PREFIX"/classes");
+
 # elif defined(WITH_CLASSPATH_CLDC1_1)
+
                len =
                        strlen(CLASSPATH_CLASSES) +
                        strlen("0");
-# else
-#  error unknown classpath configuration
-# endif
 
                _Jv_bootclasspath = MNEW(char, len);
 
-# if defined(WITH_CLASSPATH_GNU)
-               strcpy(_Jv_bootclasspath, CACAO_VM_ZIP);
-               strcat(_Jv_bootclasspath, ":");
-               strcat(_Jv_bootclasspath, CLASSPATH_CLASSES);
-# elif defined(WITH_CLASSPATH_SUN)
-               strcpy(_Jv_bootclasspath,
-                          CLASSPATH_PREFIX"/lib/resources.jar:"
-                          CLASSPATH_PREFIX"/lib/rt.jar:"
-                          CLASSPATH_PREFIX"/lib/sunrsasign.jar:"
-                          CLASSPATH_PREFIX"/lib/jsse.jar:"
-                          CLASSPATH_PREFIX"/lib/jce.jar:"
-                          CLASSPATH_PREFIX"/lib/charsets.jar:"
-                          CLASSPATH_PREFIX"/classes");
-# elif defined(WITH_CLASSPATH_CLDC1_1)
                strcat(_Jv_bootclasspath, CLASSPATH_CLASSES);
+
 # else
 #  error unknown classpath configuration
 # endif
 #endif
        }
 
-       /* set the classpath */
+       /* Set the classpath. */
 
        cp = getenv("CLASSPATH");
 
        if (cp != NULL) {
                _Jv_classpath = MNEW(char, strlen(cp) + strlen("0"));
-               strcat(_Jv_classpath, cp);
+               strcpy(_Jv_classpath, cp);
        }
        else {
                _Jv_classpath = MNEW(char, strlen(".") + strlen("0"));