8066474: Remove the lib/ directory from Linux and Solaris images
Reviewed-by: tbell, ihse
This commit is contained in:
parent
fdedfbc0f3
commit
1ba6d00a72
@ -100,8 +100,7 @@ else
|
|||||||
# Allow override by ALT_JVMCFG_SRC if it exists
|
# Allow override by ALT_JVMCFG_SRC if it exists
|
||||||
JVMCFG_SRC := $(if $(wildcard $(ALT_JVMCFG_SRC)),$(ALT_JVMCFG_SRC),$(JVMCFG_SRC))
|
JVMCFG_SRC := $(if $(wildcard $(ALT_JVMCFG_SRC)),$(ALT_JVMCFG_SRC),$(JVMCFG_SRC))
|
||||||
endif
|
endif
|
||||||
JVMCFG_DIR := $(LIB_DST_DIR)$(OPENJDK_TARGET_CPU_LIBDIR)
|
JVMCFG := $(LIB_DST_DIR)/jvm.cfg
|
||||||
JVMCFG := $(JVMCFG_DIR)/jvm.cfg
|
|
||||||
|
|
||||||
# To do: should this also support -zeroshark?
|
# To do: should this also support -zeroshark?
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -64,7 +64,7 @@ ifneq ($(FREETYPE_BUNDLE_LIB_PATH), )
|
|||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
FREETYPE_TARGET_LIB := $(LIB_DST_DIR)/$(call SHARED_LIBRARY,freetype)
|
FREETYPE_TARGET_LIB := $(LIB_DST_DIR)/$(call SHARED_LIBRARY,freetype)
|
||||||
else
|
else
|
||||||
FREETYPE_TARGET_LIB := $(LIB_DST_DIR)$(OPENJDK_TARGET_CPU_LIBDIR)/$(call SHARED_LIBRARY,freetype).6
|
FREETYPE_TARGET_LIB := $(LIB_DST_DIR)/$(call SHARED_LIBRARY,freetype).6
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# We can't use $(install-file) in this rule because it preserves symbolic links and
|
# We can't use $(install-file) in this rule because it preserves symbolic links and
|
||||||
|
@ -74,7 +74,7 @@ $(eval $(call SetupBuildLauncher, keytool, \
|
|||||||
BUILD_JEXEC :=
|
BUILD_JEXEC :=
|
||||||
BUILD_JEXEC_SRC :=
|
BUILD_JEXEC_SRC :=
|
||||||
BUILD_JEXEC_INC :=
|
BUILD_JEXEC_INC :=
|
||||||
BUILD_JEXEC_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)
|
BUILD_JEXEC_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base
|
||||||
|
|
||||||
#
|
#
|
||||||
# UNHANDLED:
|
# UNHANDLED:
|
||||||
@ -138,7 +138,7 @@ endif
|
|||||||
BUILD_JSPAWNHELPER :=
|
BUILD_JSPAWNHELPER :=
|
||||||
BUILD_JSPAWNHELPER_SRC := $(JDK_TOPDIR)/src/java.base/unix/native/jspawnhelper
|
BUILD_JSPAWNHELPER_SRC := $(JDK_TOPDIR)/src/java.base/unix/native/jspawnhelper
|
||||||
JSPAWNHELPER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/unix/native/libjava
|
JSPAWNHELPER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/unix/native/libjava
|
||||||
BUILD_JSPAWNHELPER_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)
|
BUILD_JSPAWNHELPER_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base
|
||||||
LINK_JSPAWNHELPER_OBJECTS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o
|
LINK_JSPAWNHELPER_OBJECTS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o
|
||||||
BUILD_JSPAWNHELPER_LDFLAGS :=
|
BUILD_JSPAWNHELPER_LDFLAGS :=
|
||||||
|
|
||||||
|
@ -32,13 +32,13 @@ else
|
|||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
DISABLE_MAPFILES := true
|
DISABLE_MAPFILES := true
|
||||||
endif
|
endif
|
||||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli)
|
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli)
|
||||||
|
|
||||||
# Applications expect to be able to link against libjawt without invoking
|
# Applications expect to be able to link against libjawt without invoking
|
||||||
# System.loadLibrary("jawt") first. This was the behaviour described in the
|
# System.loadLibrary("jawt") first. This was the behaviour described in the
|
||||||
# devloper documentation of JAWT and what worked with OpenJDK6.
|
# devloper documentation of JAWT and what worked with OpenJDK6.
|
||||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
|
ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
|
||||||
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib$(OPENJDK_TARGET_CPU_LIBDIR))
|
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -190,9 +190,9 @@ define SetupBuildLauncherBody
|
|||||||
$$(ORIGIN_ARG) \
|
$$(ORIGIN_ARG) \
|
||||||
$$($1_LDFLAGS), \
|
$$($1_LDFLAGS), \
|
||||||
LDFLAGS_linux := \
|
LDFLAGS_linux := \
|
||||||
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli, \
|
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \
|
||||||
LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
|
LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
|
||||||
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli, \
|
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \
|
||||||
MAPFILE := $$($1_MAPFILE), \
|
MAPFILE := $$($1_MAPFILE), \
|
||||||
LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
|
LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
|
||||||
LIBS_unix := $$($1_LIBS_unix), \
|
LIBS_unix := $$($1_LIBS_unix), \
|
||||||
|
@ -324,9 +324,6 @@ endif
|
|||||||
|
|
||||||
LIBJLI_CFLAGS += $(addprefix -I, $(LIBJLI_SRC_DIRS))
|
LIBJLI_CFLAGS += $(addprefix -I, $(LIBJLI_SRC_DIRS))
|
||||||
|
|
||||||
# Append defines depending on target platform
|
|
||||||
LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS)
|
|
||||||
|
|
||||||
ifneq ($(USE_EXTERNAL_LIBZ), true)
|
ifneq ($(USE_EXTERNAL_LIBZ), true)
|
||||||
LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
|
LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
|
||||||
LIBJLI_EXTRA_FILES += \
|
LIBJLI_EXTRA_FILES += \
|
||||||
|
@ -171,8 +171,6 @@ struct NSAppArgs {
|
|||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define GetArch() GetArchPath(CURRENT_DATA_MODEL)
|
|
||||||
|
|
||||||
/* Store the name of the executable once computed */
|
/* Store the name of the executable once computed */
|
||||||
static char *execname = NULL;
|
static char *execname = NULL;
|
||||||
|
|
||||||
@ -184,16 +182,6 @@ GetExecName() {
|
|||||||
return execname;
|
return execname;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
|
||||||
GetArchPath(int nbits)
|
|
||||||
{
|
|
||||||
switch(nbits) {
|
|
||||||
default:
|
|
||||||
return LIBARCHNAME;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exports the JNI interface from libjli
|
* Exports the JNI interface from libjli
|
||||||
*
|
*
|
||||||
@ -211,7 +199,7 @@ static InvocationFunctions *GetExportedJNIFunctions() {
|
|||||||
if (sExportedJNIFunctions != NULL) return sExportedJNIFunctions;
|
if (sExportedJNIFunctions != NULL) return sExportedJNIFunctions;
|
||||||
|
|
||||||
char jrePath[PATH_MAX];
|
char jrePath[PATH_MAX];
|
||||||
jboolean gotJREPath = GetJREPath(jrePath, sizeof(jrePath), GetArch(), JNI_FALSE);
|
jboolean gotJREPath = GetJREPath(jrePath, sizeof(jrePath), JNI_FALSE);
|
||||||
if (!gotJREPath) {
|
if (!gotJREPath) {
|
||||||
JLI_ReportErrorMessage("Failed to GetJREPath()");
|
JLI_ReportErrorMessage("Failed to GetJREPath()");
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -229,7 +217,7 @@ static InvocationFunctions *GetExportedJNIFunctions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char jvmPath[PATH_MAX];
|
char jvmPath[PATH_MAX];
|
||||||
jboolean gotJVMPath = GetJVMPath(jrePath, preferredJVM, jvmPath, sizeof(jvmPath), GetArch(), CURRENT_DATA_MODEL);
|
jboolean gotJVMPath = GetJVMPath(jrePath, preferredJVM, jvmPath, sizeof(jvmPath), CURRENT_DATA_MODEL);
|
||||||
if (!gotJVMPath) {
|
if (!gotJVMPath) {
|
||||||
JLI_ReportErrorMessage("Failed to GetJVMPath()");
|
JLI_ReportErrorMessage("Failed to GetJVMPath()");
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -390,7 +378,6 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
|
|
||||||
/* Check data model flags, and exec process, if needed */
|
/* Check data model flags, and exec process, if needed */
|
||||||
{
|
{
|
||||||
char *arch = (char *)GetArch(); /* like sparc or sparcv9 */
|
|
||||||
char * jvmtype = NULL;
|
char * jvmtype = NULL;
|
||||||
int argc = *pargc;
|
int argc = *pargc;
|
||||||
char **argv = *pargv;
|
char **argv = *pargv;
|
||||||
@ -462,7 +449,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
jvmpath does not exist */
|
jvmpath does not exist */
|
||||||
if (wanted == running) {
|
if (wanted == running) {
|
||||||
/* Find out where the JRE is that we will be using. */
|
/* Find out where the JRE is that we will be using. */
|
||||||
if (!GetJREPath(jrepath, so_jrepath, arch, JNI_FALSE) ) {
|
if (!GetJREPath(jrepath, so_jrepath, JNI_FALSE) ) {
|
||||||
JLI_ReportErrorMessage(JRE_ERROR1);
|
JLI_ReportErrorMessage(JRE_ERROR1);
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
@ -481,7 +468,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, arch, wanted)) {
|
if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, wanted)) {
|
||||||
JLI_ReportErrorMessage(CFG_ERROR8, jvmtype, jvmpath);
|
JLI_ReportErrorMessage(CFG_ERROR8, jvmtype, jvmpath);
|
||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
@ -502,7 +489,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
#if defined(DUAL_MODE)
|
#if defined(DUAL_MODE)
|
||||||
if (running != wanted) {
|
if (running != wanted) {
|
||||||
/* Find out where the JRE is that we will be using. */
|
/* Find out where the JRE is that we will be using. */
|
||||||
if (!GetJREPath(jrepath, so_jrepath, GetArchPath(wanted), JNI_TRUE)) {
|
if (!GetJREPath(jrepath, so_jrepath, JNI_TRUE)) {
|
||||||
/* give up and let other code report error message */
|
/* give up and let other code report error message */
|
||||||
JLI_ReportErrorMessage(JRE_ERROR2, wanted);
|
JLI_ReportErrorMessage(JRE_ERROR2, wanted);
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -526,7 +513,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* exec child can do error checking on the existence of the path */
|
/* exec child can do error checking on the existence of the path */
|
||||||
jvmpathExists = GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, GetArchPath(wanted), wanted);
|
jvmpathExists = GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, wanted);
|
||||||
}
|
}
|
||||||
#else /* ! DUAL_MODE */
|
#else /* ! DUAL_MODE */
|
||||||
JLI_ReportErrorMessage(JRE_ERROR2, wanted);
|
JLI_ReportErrorMessage(JRE_ERROR2, wanted);
|
||||||
@ -579,7 +566,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
*/
|
*/
|
||||||
static jboolean
|
static jboolean
|
||||||
GetJVMPath(const char *jrepath, const char *jvmtype,
|
GetJVMPath(const char *jrepath, const char *jvmtype,
|
||||||
char *jvmpath, jint jvmpathsize, const char * arch, int bitsWanted)
|
char *jvmpath, jint jvmpathsize, int bitsWanted)
|
||||||
{
|
{
|
||||||
struct stat s;
|
struct stat s;
|
||||||
|
|
||||||
@ -613,7 +600,7 @@ GetJVMPath(const char *jrepath, const char *jvmtype,
|
|||||||
* Find path to JRE based on .exe's location or registry settings.
|
* Find path to JRE based on .exe's location or registry settings.
|
||||||
*/
|
*/
|
||||||
static jboolean
|
static jboolean
|
||||||
GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative)
|
GetJREPath(char *path, jint pathsize, jboolean speculative)
|
||||||
{
|
{
|
||||||
char libjava[MAXPATHLEN];
|
char libjava[MAXPATHLEN];
|
||||||
|
|
||||||
@ -841,7 +828,7 @@ static void* hSplashLib = NULL;
|
|||||||
void* SplashProcAddress(const char* name) {
|
void* SplashProcAddress(const char* name) {
|
||||||
if (!hSplashLib) {
|
if (!hSplashLib) {
|
||||||
char jrePath[PATH_MAX];
|
char jrePath[PATH_MAX];
|
||||||
if (!GetJREPath(jrePath, sizeof(jrePath), GetArch(), JNI_FALSE)) {
|
if (!GetJREPath(jrePath, sizeof(jrePath), JNI_FALSE)) {
|
||||||
JLI_ReportErrorMessage(JRE_ERROR1);
|
JLI_ReportErrorMessage(JRE_ERROR1);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -109,13 +109,9 @@ final class ProcessImpl extends Process {
|
|||||||
private String helperPath(String javahome, String osArch) {
|
private String helperPath(String javahome, String osArch) {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case SOLARIS:
|
case SOLARIS:
|
||||||
if (osArch.equals("x86")) { osArch = "i386"; }
|
|
||||||
else if (osArch.equals("x86_64")) { osArch = "amd64"; }
|
|
||||||
// fall through...
|
// fall through...
|
||||||
case LINUX:
|
case LINUX:
|
||||||
case AIX:
|
case AIX:
|
||||||
return javahome + "/lib/" + osArch + "/jspawnhelper";
|
|
||||||
|
|
||||||
case BSD:
|
case BSD:
|
||||||
return javahome + "/lib/jspawnhelper";
|
return javahome + "/lib/jspawnhelper";
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ ServerClassMachineImpl(void) {
|
|||||||
result = JNI_TRUE;
|
result = JNI_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JLI_TraceLauncher("unix_" LIBARCHNAME "_ServerClassMachine: %s\n",
|
JLI_TraceLauncher("unix_ServerClassMachine: %s\n",
|
||||||
(result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE"));
|
(result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE"));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ ServerClassMachineImpl(void) {
|
|||||||
result = JNI_TRUE;
|
result = JNI_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JLI_TraceLauncher("solaris_" LIBARCHNAME "_ServerClassMachine: %s\n",
|
JLI_TraceLauncher("solaris_ServerClassMachine: %s\n",
|
||||||
(result == JNI_TRUE ? "true" : "false"));
|
(result == JNI_TRUE ? "true" : "false"));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -193,7 +193,7 @@ ServerClassMachineImpl(void) {
|
|||||||
result = JNI_TRUE;
|
result = JNI_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JLI_TraceLauncher("linux_" LIBARCHNAME "_ServerClassMachine: %s\n",
|
JLI_TraceLauncher("linux_ServerClassMachine: %s\n",
|
||||||
(result == JNI_TRUE ? "true" : "false"));
|
(result == JNI_TRUE ? "true" : "false"));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -54,10 +54,8 @@ char *FindExecName(char *program);
|
|||||||
const char *SetExecname(char **argv);
|
const char *SetExecname(char **argv);
|
||||||
const char *GetExecName();
|
const char *GetExecName();
|
||||||
static jboolean GetJVMPath(const char *jrepath, const char *jvmtype,
|
static jboolean GetJVMPath(const char *jrepath, const char *jvmtype,
|
||||||
char *jvmpath, jint jvmpathsize, const char * arch,
|
char *jvmpath, jint jvmpathsize, int bitsWanted);
|
||||||
int bitsWanted);
|
static jboolean GetJREPath(char *path, jint pathsize, jboolean speculative);
|
||||||
static jboolean GetJREPath(char *path, jint pathsize, const char * arch,
|
|
||||||
jboolean speculative);
|
|
||||||
|
|
||||||
#if defined(_AIX)
|
#if defined(_AIX)
|
||||||
#include "java_md_aix.h"
|
#include "java_md_aix.h"
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __solaris__
|
#ifdef __solaris__
|
||||||
# ifndef LIBARCHNAME
|
|
||||||
# error "The macro LIBARCHNAME was not defined on the compile line"
|
|
||||||
# endif
|
|
||||||
# include <sys/systeminfo.h>
|
# include <sys/systeminfo.h>
|
||||||
# include <sys/elf.h>
|
# include <sys/elf.h>
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
@ -188,12 +185,13 @@ JvmExists(const char *path) {
|
|||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* contains a lib/$LIBARCHNAME/{server,client}/libjvm.so ?
|
* contains a lib/{server,client}/libjvm.so ?
|
||||||
*/
|
*/
|
||||||
static jboolean
|
static jboolean
|
||||||
ContainsLibJVM(const char *env) {
|
ContainsLibJVM(const char *env) {
|
||||||
char clientPattern[PATH_MAX + 1];
|
/* the usual suspects */
|
||||||
char serverPattern[PATH_MAX + 1];
|
char clientPattern[] = "lib/client";
|
||||||
|
char serverPattern[] = "lib/server";
|
||||||
char *envpath;
|
char *envpath;
|
||||||
char *path;
|
char *path;
|
||||||
jboolean clientPatternFound;
|
jboolean clientPatternFound;
|
||||||
@ -204,10 +202,6 @@ ContainsLibJVM(const char *env) {
|
|||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the usual suspects */
|
|
||||||
JLI_Snprintf(clientPattern, PATH_MAX, "lib/%s/client", LIBARCHNAME);
|
|
||||||
JLI_Snprintf(serverPattern, PATH_MAX, "lib/%s/server", LIBARCHNAME);
|
|
||||||
|
|
||||||
/* to optimize for time, test if any of our usual suspects are present. */
|
/* to optimize for time, test if any of our usual suspects are present. */
|
||||||
clientPatternFound = JLI_StrStr(env, clientPattern) != NULL;
|
clientPatternFound = JLI_StrStr(env, clientPattern) != NULL;
|
||||||
serverPatternFound = JLI_StrStr(env, serverPattern) != NULL;
|
serverPatternFound = JLI_StrStr(env, serverPattern) != NULL;
|
||||||
@ -322,7 +316,6 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
|
|
||||||
/* Check data model flags, and exec process, if needed */
|
/* Check data model flags, and exec process, if needed */
|
||||||
{
|
{
|
||||||
char *arch = LIBARCHNAME; /* like sparc or sparcv9 */
|
|
||||||
char * jvmtype = NULL;
|
char * jvmtype = NULL;
|
||||||
int argc = *pargc;
|
int argc = *pargc;
|
||||||
char **argv = *pargv;
|
char **argv = *pargv;
|
||||||
@ -408,12 +401,12 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
jvmpath does not exist */
|
jvmpath does not exist */
|
||||||
if (wanted == running) {
|
if (wanted == running) {
|
||||||
/* Find out where the JRE is that we will be using. */
|
/* Find out where the JRE is that we will be using. */
|
||||||
if (!GetJREPath(jrepath, so_jrepath, arch, JNI_FALSE) ) {
|
if (!GetJREPath(jrepath, so_jrepath, JNI_FALSE) ) {
|
||||||
JLI_ReportErrorMessage(JRE_ERROR1);
|
JLI_ReportErrorMessage(JRE_ERROR1);
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
JLI_Snprintf(jvmcfg, so_jvmcfg, "%s%slib%s%s%sjvm.cfg",
|
JLI_Snprintf(jvmcfg, so_jvmcfg, "%s%slib%s%sjvm.cfg",
|
||||||
jrepath, FILESEP, FILESEP, arch, FILESEP);
|
jrepath, FILESEP, FILESEP, FILESEP);
|
||||||
/* Find the specified JVM type */
|
/* Find the specified JVM type */
|
||||||
if (ReadKnownVMs(jvmcfg, JNI_FALSE) < 1) {
|
if (ReadKnownVMs(jvmcfg, JNI_FALSE) < 1) {
|
||||||
JLI_ReportErrorMessage(CFG_ERROR7);
|
JLI_ReportErrorMessage(CFG_ERROR7);
|
||||||
@ -427,7 +420,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, arch, 0 )) {
|
if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, 0 )) {
|
||||||
JLI_ReportErrorMessage(CFG_ERROR8, jvmtype, jvmpath);
|
JLI_ReportErrorMessage(CFG_ERROR8, jvmtype, jvmpath);
|
||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
@ -457,8 +450,8 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
* We will set the LD_LIBRARY_PATH as follows:
|
* We will set the LD_LIBRARY_PATH as follows:
|
||||||
*
|
*
|
||||||
* o $JVMPATH (directory portion only)
|
* o $JVMPATH (directory portion only)
|
||||||
* o $JRE/lib/$LIBARCHNAME
|
* o $JRE/lib
|
||||||
* o $JRE/../lib/$LIBARCHNAME
|
* o $JRE/../lib
|
||||||
*
|
*
|
||||||
* followed by the user's previous effective LD_LIBRARY_PATH, if
|
* followed by the user's previous effective LD_LIBRARY_PATH, if
|
||||||
* any.
|
* any.
|
||||||
@ -518,10 +511,10 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
|
|
||||||
jvmpath = JLI_StringDup(jvmpath);
|
jvmpath = JLI_StringDup(jvmpath);
|
||||||
new_runpath_size = ((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
|
new_runpath_size = ((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
|
||||||
2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) +
|
2 * JLI_StrLen(jrepath) +
|
||||||
#ifdef AIX
|
#ifdef AIX
|
||||||
/* On AIX we additionally need 'jli' in the path because ld doesn't support $ORIGIN. */
|
/* On AIX we additionally need 'jli' in the path because ld doesn't support $ORIGIN. */
|
||||||
JLI_StrLen(jrepath) + JLI_StrLen(arch) + JLI_StrLen("/lib//jli:") +
|
JLI_StrLen(jrepath) + JLI_StrLen("/lib//jli:") +
|
||||||
#endif
|
#endif
|
||||||
JLI_StrLen(jvmpath) + 52;
|
JLI_StrLen(jvmpath) + 52;
|
||||||
new_runpath = JLI_MemAlloc(new_runpath_size);
|
new_runpath = JLI_MemAlloc(new_runpath_size);
|
||||||
@ -539,17 +532,17 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
|
|
||||||
sprintf(new_runpath, LD_LIBRARY_PATH "="
|
sprintf(new_runpath, LD_LIBRARY_PATH "="
|
||||||
"%s:"
|
"%s:"
|
||||||
"%s/lib/%s:"
|
"%s/lib:"
|
||||||
#ifdef AIX
|
#ifdef AIX
|
||||||
"%s/lib/%s/jli:" /* Needed on AIX because ld doesn't support $ORIGIN. */
|
"%s/lib/jli:" /* Needed on AIX because ld doesn't support $ORIGIN. */
|
||||||
#endif
|
#endif
|
||||||
"%s/../lib/%s",
|
"%s/../lib",
|
||||||
jvmpath,
|
jvmpath,
|
||||||
jrepath, arch,
|
jrepath,
|
||||||
#ifdef AIX
|
#ifdef AIX
|
||||||
jrepath, arch,
|
jrepath,
|
||||||
#endif
|
#endif
|
||||||
jrepath, arch
|
jrepath
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -638,14 +631,14 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
*/
|
*/
|
||||||
static jboolean
|
static jboolean
|
||||||
GetJVMPath(const char *jrepath, const char *jvmtype,
|
GetJVMPath(const char *jrepath, const char *jvmtype,
|
||||||
char *jvmpath, jint jvmpathsize, const char * arch, int bitsWanted)
|
char *jvmpath, jint jvmpathsize, int bitsWanted)
|
||||||
{
|
{
|
||||||
struct stat s;
|
struct stat s;
|
||||||
|
|
||||||
if (JLI_StrChr(jvmtype, '/')) {
|
if (JLI_StrChr(jvmtype, '/')) {
|
||||||
JLI_Snprintf(jvmpath, jvmpathsize, "%s/" JVM_DLL, jvmtype);
|
JLI_Snprintf(jvmpath, jvmpathsize, "%s/" JVM_DLL, jvmtype);
|
||||||
} else {
|
} else {
|
||||||
JLI_Snprintf(jvmpath, jvmpathsize, "%s/lib/%s/%s/" JVM_DLL, jrepath, arch, jvmtype);
|
JLI_Snprintf(jvmpath, jvmpathsize, "%s/lib/%s/" JVM_DLL, jrepath, jvmtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
JLI_TraceLauncher("Does `%s' exist ... ", jvmpath);
|
JLI_TraceLauncher("Does `%s' exist ... ", jvmpath);
|
||||||
@ -663,14 +656,14 @@ GetJVMPath(const char *jrepath, const char *jvmtype,
|
|||||||
* Find path to JRE based on .exe's location or registry settings.
|
* Find path to JRE based on .exe's location or registry settings.
|
||||||
*/
|
*/
|
||||||
static jboolean
|
static jboolean
|
||||||
GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative)
|
GetJREPath(char *path, jint pathsize, jboolean speculative)
|
||||||
{
|
{
|
||||||
char libjava[MAXPATHLEN];
|
char libjava[MAXPATHLEN];
|
||||||
struct stat s;
|
struct stat s;
|
||||||
|
|
||||||
if (GetApplicationHome(path, pathsize)) {
|
if (GetApplicationHome(path, pathsize)) {
|
||||||
/* Is JRE co-located with the application? */
|
/* Is JRE co-located with the application? */
|
||||||
JLI_Snprintf(libjava, sizeof(libjava), "%s/lib/%s/" JAVA_DLL, path, arch);
|
JLI_Snprintf(libjava, sizeof(libjava), "%s/lib/" JAVA_DLL, path);
|
||||||
if (access(libjava, F_OK) == 0) {
|
if (access(libjava, F_OK) == 0) {
|
||||||
JLI_TraceLauncher("JRE path is %s\n", path);
|
JLI_TraceLauncher("JRE path is %s\n", path);
|
||||||
return JNI_TRUE;
|
return JNI_TRUE;
|
||||||
@ -681,7 +674,7 @@ GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative)
|
|||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
/* Does the app ship a private JRE in <apphome>/jre directory? */
|
/* Does the app ship a private JRE in <apphome>/jre directory? */
|
||||||
JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/%s/" JAVA_DLL, path, arch);
|
JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/" JAVA_DLL, path);
|
||||||
if (access(libjava, F_OK) == 0) {
|
if (access(libjava, F_OK) == 0) {
|
||||||
JLI_StrCat(path, "/jre");
|
JLI_StrCat(path, "/jre");
|
||||||
JLI_TraceLauncher("JRE path is %s\n", path);
|
JLI_TraceLauncher("JRE path is %s\n", path);
|
||||||
@ -690,7 +683,7 @@ GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GetApplicationHomeFromDll(path, pathsize)) {
|
if (GetApplicationHomeFromDll(path, pathsize)) {
|
||||||
JLI_Snprintf(libjava, sizeof(libjava), "%s/lib/%s/" JAVA_DLL, path, arch);
|
JLI_Snprintf(libjava, sizeof(libjava), "%s/lib/" JAVA_DLL, path);
|
||||||
if (stat(libjava, &s) == 0) {
|
if (stat(libjava, &s) == 0) {
|
||||||
JLI_TraceLauncher("JRE path is %s\n", path);
|
JLI_TraceLauncher("JRE path is %s\n", path);
|
||||||
return JNI_TRUE;
|
return JNI_TRUE;
|
||||||
@ -856,12 +849,12 @@ void* SplashProcAddress(const char* name) {
|
|||||||
char jrePath[MAXPATHLEN];
|
char jrePath[MAXPATHLEN];
|
||||||
char splashPath[MAXPATHLEN];
|
char splashPath[MAXPATHLEN];
|
||||||
|
|
||||||
if (!GetJREPath(jrePath, sizeof(jrePath), LIBARCHNAME, JNI_FALSE)) {
|
if (!GetJREPath(jrePath, sizeof(jrePath), JNI_FALSE)) {
|
||||||
JLI_ReportErrorMessage(JRE_ERROR1);
|
JLI_ReportErrorMessage(JRE_ERROR1);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ret = JLI_Snprintf(splashPath, sizeof(splashPath), "%s/lib/%s/%s",
|
ret = JLI_Snprintf(splashPath, sizeof(splashPath), "%s/lib/%s",
|
||||||
jrePath, LIBARCHNAME, SPLASHSCREEN_SO);
|
jrePath, SPLASHSCREEN_SO);
|
||||||
|
|
||||||
if (ret >= (int) sizeof(splashPath)) {
|
if (ret >= (int) sizeof(splashPath)) {
|
||||||
JLI_ReportErrorMessage(JRE_ERROR11);
|
JLI_ReportErrorMessage(JRE_ERROR11);
|
||||||
|
@ -150,22 +150,6 @@ IsJavaw()
|
|||||||
return _isjavaw;
|
return _isjavaw;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns the arch path, to get the current arch use the
|
|
||||||
* macro GetArch, nbits here is ignored for now.
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
GetArchPath(int nbits)
|
|
||||||
{
|
|
||||||
#ifdef _M_AMD64
|
|
||||||
return "amd64";
|
|
||||||
#elif defined(_M_IA64)
|
|
||||||
return "ia64";
|
|
||||||
#else
|
|
||||||
return "i386";
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -207,8 +191,8 @@ CreateExecutionEnvironment(int *pargc, char ***pargv,
|
|||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
JLI_Snprintf(jvmcfg, so_jvmcfg, "%s%slib%s%s%sjvm.cfg",
|
JLI_Snprintf(jvmcfg, so_jvmcfg, "%s%slib%sjvm.cfg",
|
||||||
jrepath, FILESEP, FILESEP, (char*)GetArch(), FILESEP);
|
jrepath, FILESEP, FILESEP);
|
||||||
|
|
||||||
/* Find the specified JVM type */
|
/* Find the specified JVM type */
|
||||||
if (ReadKnownVMs(jvmcfg, JNI_FALSE) < 1) {
|
if (ReadKnownVMs(jvmcfg, JNI_FALSE) < 1) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,7 +32,7 @@ LINK = ld
|
|||||||
|
|
||||||
J_INC = $(TESTJAVA)/include
|
J_INC = $(TESTJAVA)/include
|
||||||
INCLUDES = -I$(J_INC) -I$(J_INC)/$(SYST) -I.
|
INCLUDES = -I$(J_INC) -I$(J_INC)/$(SYST) -I.
|
||||||
LIBS = -L$(TESTJAVA)/lib/$(ARCH) -ljawt -lX11
|
LIBS = -L$(TESTJAVA)/lib -ljawt -lX11
|
||||||
|
|
||||||
all: $(CLASSES) libmylib.so
|
all: $(CLASSES) libmylib.so
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -64,7 +64,7 @@ public class RunpathTest extends TestHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void testRpath() {
|
void testRpath() {
|
||||||
String expectedRpath = ".*RPATH.*\\$ORIGIN/../lib/" + getJreArch() + ".*";
|
String expectedRpath = ".*RPATH.*\\$ORIGIN/../lib.*";
|
||||||
elfCheck(javaCmd, expectedRpath);
|
elfCheck(javaCmd, expectedRpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user