mirror of
https://github.com/darlinghq/darling-openjdk.git
synced 2024-11-23 12:29:56 +00:00
8238225: Issues reported after replacing symlink at Contents/MacOS/libjli.dylib with binary
Reviewed-by: clanger, alanb, ihse
This commit is contained in:
parent
39f5567cbc
commit
cbc657255a
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2020, 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
|
||||||
@ -515,11 +515,27 @@ GetJREPath(char *path, jint pathsize, jboolean speculative)
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t indexOfLastPathComponent = pathLen - sizeOfLastPathComponent;
|
size_t indexOfLastPathComponent = pathLen - sizeOfLastPathComponent;
|
||||||
if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, lastPathComponent, sizeOfLastPathComponent - 1)) {
|
if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, lastPathComponent, sizeOfLastPathComponent)) {
|
||||||
realPathToSelf[indexOfLastPathComponent + 1] = '\0';
|
realPathToSelf[indexOfLastPathComponent + 1] = '\0';
|
||||||
return JNI_TRUE;
|
return JNI_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If libjli.dylib is loaded from a macos bundle MacOS dir, find the JRE dir
|
||||||
|
// in ../Home.
|
||||||
|
const char altLastPathComponent[] = "/MacOS/libjli.dylib";
|
||||||
|
size_t sizeOfAltLastPathComponent = sizeof(altLastPathComponent) - 1;
|
||||||
|
if (pathLen < sizeOfLastPathComponent) {
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t indexOfAltLastPathComponent = pathLen - sizeOfAltLastPathComponent;
|
||||||
|
if (0 == strncmp(realPathToSelf + indexOfAltLastPathComponent, altLastPathComponent, sizeOfAltLastPathComponent)) {
|
||||||
|
JLI_Snprintf(realPathToSelf + indexOfAltLastPathComponent, sizeOfAltLastPathComponent, "%s", "/Home");
|
||||||
|
if (access(realPathToSelf, F_OK) == 0) {
|
||||||
|
return JNI_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!speculative)
|
if (!speculative)
|
||||||
JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL);
|
JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL);
|
||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2016, 2020, 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
|
||||||
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @bug 8213362
|
* @bug 8213362 8238225
|
||||||
* @comment Test JLI_Launch for tools distributed outside JDK
|
* @comment Test JLI_Launch for tools distributed outside JDK
|
||||||
* @library /test/lib
|
* @library /test/lib
|
||||||
* @run main/native JliLaunchTest
|
* @run main/native JliLaunchTest
|
||||||
@ -56,6 +56,26 @@ public class JliLaunchTest {
|
|||||||
|
|
||||||
OutputAnalyzer outputf = new OutputAnalyzer(pb.start());
|
OutputAnalyzer outputf = new OutputAnalyzer(pb.start());
|
||||||
outputf.shouldHaveExitValue(0);
|
outputf.shouldHaveExitValue(0);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (Platform.isOSX()) {
|
||||||
|
Path javaHome = Paths.get(Utils.TEST_JDK);
|
||||||
|
if (javaHome.getFileName().toString().equals("Home")) {
|
||||||
|
// To exercise this test path you need to make sure the JDK under test is
|
||||||
|
// the MacOS bundle and not the simple jdk image. This can currently be
|
||||||
|
// achieved by running something like this (from the build output dir):
|
||||||
|
// $ make test-only TEST=test/jdk/tools/launcher/JliLaunchTest.java \
|
||||||
|
// JDK_IMAGE_DIR=$PWD/images/jdk-bundle/jdk-15.jdk/Contents/Home
|
||||||
|
System.out.println("MacOS bundle distribution detected, also testing Contents/MacOS/libjli.dylib");
|
||||||
|
String macosDir = javaHome.getParent().resolve("MacOS").toString();
|
||||||
|
ProcessBuilder pb2 = new ProcessBuilder(launcher.toString(), "--version");
|
||||||
|
env = pb2.environment();
|
||||||
|
env.compute(pathEnvVar, (k, v) -> (v == null) ? macosDir : macosDir + File.pathSeparator + v);
|
||||||
|
|
||||||
|
OutputAnalyzer output2 = new OutputAnalyzer(pb2.start());
|
||||||
|
output2.shouldHaveExitValue(0);
|
||||||
|
} else {
|
||||||
|
System.out.println("Not a MacOS bundle distribution, not testing Contents/MacOS/libjli.dylib");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user