Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java
32284 views
1
/*
2
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 7051189 8023393
27
* @summary Need to suppress info message if -Xcheck:jni is used with libjsig.so
28
* @library /testlibrary
29
* @run main XCheckJSig
30
*/
31
32
import java.util.*;
33
import com.oracle.java.testlibrary.*;
34
35
public class XCheckJSig {
36
public static void main(String args[]) throws Throwable {
37
38
System.out.println("Regression test for bugs 7051189 and 8023393");
39
if (!Platform.isSolaris() && !Platform.isLinux() && !Platform.isOSX()) {
40
System.out.println("Test only applicable on Solaris, Linux, and Mac OSX, skipping");
41
return;
42
}
43
44
String jdk_path = System.getProperty("test.jdk");
45
String os_arch = Platform.getOsArch();
46
String libjsig;
47
String env_var;
48
if (Platform.isOSX()) {
49
libjsig = jdk_path + "/jre/lib/server/libjsig.dylib";
50
env_var = "DYLD_INSERT_LIBRARIES";
51
} else {
52
libjsig = jdk_path + "/jre/lib/" + os_arch + "/libjsig.so";
53
env_var = "LD_PRELOAD";
54
}
55
String java_program;
56
if (Platform.isSolaris()) {
57
// On Solaris, need to call the 64-bit Java directly in order for
58
// LD_PRELOAD to work because libjsig.so is 64-bit.
59
java_program = jdk_path + "/jre/bin/" + os_arch + "/java";
60
} else {
61
java_program = JDKToolFinder.getJDKTool("java");
62
}
63
// If this test fails, these might be useful to know.
64
System.out.println("libjsig: " + libjsig);
65
System.out.println("osArch: " + os_arch);
66
System.out.println("java_program: " + java_program);
67
68
ProcessBuilder pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-version");
69
Map<String, String> env = pb.environment();
70
env.put(env_var, libjsig);
71
OutputAnalyzer output = new OutputAnalyzer(pb.start());
72
output.shouldNotContain("libjsig is activated");
73
output.shouldHaveExitValue(0);
74
75
pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-verbose:jni", "-version");
76
env = pb.environment();
77
env.put(env_var, libjsig);
78
output = new OutputAnalyzer(pb.start());
79
output.shouldContain("libjsig is activated");
80
output.shouldHaveExitValue(0);
81
}
82
}
83
84