diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/management/LibManagementExtSupport.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/management/LibManagementExtSupport.java deleted file mode 100644 index 9e5462bde5b1..000000000000 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/management/LibManagementExtSupport.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2022, 2022, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.svm.core.jdk.management; - -import static com.oracle.svm.core.c.function.CEntryPointOptions.NoEpilogue; -import static com.oracle.svm.core.c.function.CEntryPointOptions.NoPrologue; -import static org.graalvm.nativeimage.c.function.CFunction.Transition.NO_TRANSITION; - -import org.graalvm.nativeimage.IsolateThread; -import org.graalvm.nativeimage.StackValue; -import org.graalvm.nativeimage.c.function.CEntryPoint; -import org.graalvm.nativeimage.c.function.CEntryPoint.Publish; -import org.graalvm.nativeimage.c.function.CFunction; -import org.graalvm.nativeimage.c.function.CLibrary; -import org.graalvm.nativeimage.c.type.CCharPointer; -import org.graalvm.word.UnsignedWord; -import org.graalvm.word.WordFactory; - -import com.oracle.svm.core.Uninterruptible; -import com.oracle.svm.core.c.CGlobalData; -import com.oracle.svm.core.c.CGlobalDataFactory; -import com.oracle.svm.core.c.function.CEntryPointOptions; -import com.oracle.svm.core.headers.LibC; - -public final class LibManagementExtSupport { - private static final CGlobalData ERRMSG_FORMAT = CGlobalDataFactory.createCString("errno: %d error: %s\n"); - - /** - * Reimplementation of the native {@code throw_internal_error} function in Java. - */ - @Uninterruptible(reason = "No Java context.") - @CEntryPoint(name = "throw_internal_error", include = CEntryPoint.NotIncludedAutomatically.class, publishAs = Publish.SymbolOnly) - @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class) - private static void throwInternalError(IsolateThread env, CCharPointer msg) { - /* - * Ported from `src/jdk.management/share/native/libmanagement_ext/management_ext.c`. - */ - CCharPointer errmsg = StackValue.get(128); - - snprintf(errmsg, WordFactory.unsigned(128), ERRMSG_FORMAT.get(), LibC.errno(), msg); - jnuThrowInternalError(env, errmsg); - } - - @CFunction(transition = NO_TRANSITION) - private static native int snprintf(CCharPointer str, UnsignedWord size, CCharPointer format, int errno, CCharPointer msg); - - @CLibrary(value = "java", requireStatic = true) - @CFunction(value = "JNU_ThrowInternalError", transition = NO_TRANSITION) - private static native void jnuThrowInternalError(IsolateThread env, CCharPointer msg); -} diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JNIRegistrationManagementExt.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JNIRegistrationManagementExt.java index f847ec0d8f69..db7f41216e4a 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JNIRegistrationManagementExt.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JNIRegistrationManagementExt.java @@ -24,21 +24,12 @@ */ package com.oracle.svm.hosted.jdk; -import java.lang.reflect.Method; - -import org.graalvm.nativeimage.IsolateThread; -import org.graalvm.nativeimage.c.type.CCharPointer; - import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature; import com.oracle.svm.core.feature.InternalFeature; import com.oracle.svm.core.jdk.JNIRegistrationUtil; import com.oracle.svm.core.jdk.PlatformNativeLibrarySupport; -import com.oracle.svm.core.jdk.management.LibManagementExtSupport; import com.oracle.svm.hosted.FeatureImpl.DuringAnalysisAccessImpl; import com.oracle.svm.hosted.c.NativeLibraries; -import com.oracle.svm.hosted.code.CEntryPointCallStubSupport; -import com.oracle.svm.hosted.code.CEntryPointData; -import com.oracle.svm.util.ReflectionUtil; @AutomaticallyRegisteredFeature public class JNIRegistrationManagementExt extends JNIRegistrationUtil implements InternalFeature { @@ -60,14 +51,6 @@ private void linkManagementExt(DuringAnalysisAccess access) { nativeLibraries.addStaticNonJniLibrary("management_ext", "java"); if (isWindows()) { nativeLibraries.addDynamicNonJniLibrary("psapi"); - } else { - /* - * Register our port of the native function `throw_internal_error`. This avoids linking - * the entire object file of the original function, which is necessary to prevent linker - * errors such as JDK-8264047. - */ - Method method = ReflectionUtil.lookupMethod(LibManagementExtSupport.class, "throwInternalError", IsolateThread.class, CCharPointer.class); - CEntryPointCallStubSupport.singleton().registerStubForMethod(method, () -> CEntryPointData.create(method)); } } }