From 472fd3a02595e9327ca96017fd9ce77b58c3fb34 Mon Sep 17 00:00:00 2001 From: lax1dude Date: Sun, 4 Aug 2024 01:00:24 -0700 Subject: [PATCH 1/4] Add check for SSE 4.2 and PCLMUL support to native zlib --- native/src/main/c/NativeCompressImpl.c | 5 +++++ native/src/main/c/cpuid_helper.h | 22 +++++++++++++++++++ ..._md_5_bungee_jni_zlib_NativeCompressImpl.h | 8 +++++++ .../java/net/md_5/bungee/jni/NativeCode.java | 19 ++++++++++++++-- .../md_5/bungee/jni/NativeCodeException.java | 6 +++++ .../bungee/jni/zlib/NativeCompressImpl.java | 2 ++ .../net/md_5/bungee/jni/zlib/NativeZlib.java | 8 +++++++ 7 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 native/src/main/c/cpuid_helper.h diff --git a/native/src/main/c/NativeCompressImpl.c b/native/src/main/c/NativeCompressImpl.c index 7fb8e6b985..b6b27682b0 100644 --- a/native/src/main/c/NativeCompressImpl.c +++ b/native/src/main/c/NativeCompressImpl.c @@ -3,6 +3,7 @@ #include #include "shared.h" +#include "cpuid_helper.h" #include "net_md_5_bungee_jni_zlib_NativeCompressImpl.h" typedef unsigned char byte; @@ -26,6 +27,10 @@ jint throwException(JNIEnv *env, const char* message, int err) { return (*env)->Throw(env, throwable); } +JNIEXPORT jboolean JNICALL Java_net_md_15_bungee_jni_zlib_NativeCompressImpl_checkSupported(JNIEnv* env, jobject obj) { + return (jboolean) checkCompressionNativesSupport(); +} + void JNICALL Java_net_md_15_bungee_jni_zlib_NativeCompressImpl_reset(JNIEnv* env, jobject obj, jlong ctx, jboolean compress) { z_stream* stream = (z_stream*) ctx; int ret = (compress) ? deflateReset(stream) : inflateReset(stream); diff --git a/native/src/main/c/cpuid_helper.h b/native/src/main/c/cpuid_helper.h new file mode 100644 index 0000000000..2394ecd6cf --- /dev/null +++ b/native/src/main/c/cpuid_helper.h @@ -0,0 +1,22 @@ +// Header to check for SSE 4.2 support in compression natives +// GCC only! + +#ifndef _INCLUDE_CPUID_HELPER_H +#define _INCLUDE_CPUID_HELPER_H + +#include +#include + +static inline bool checkCompressionNativesSupport() { + unsigned int eax; + unsigned int ebx; + unsigned int ecx; + unsigned int edx; + if(__get_cpuid(1, &eax, &ebx, &ecx, &edx)) { + return (ecx & bit_PCLMUL) != 0 && (ecx & bit_SSE4_2) != 0; + }else { + return false; + } +} + +#endif // _INCLUDE_CPUID_HELPER_H diff --git a/native/src/main/c/net_md_5_bungee_jni_zlib_NativeCompressImpl.h b/native/src/main/c/net_md_5_bungee_jni_zlib_NativeCompressImpl.h index befb7dcc30..5c73e1310d 100644 --- a/native/src/main/c/net_md_5_bungee_jni_zlib_NativeCompressImpl.h +++ b/native/src/main/c/net_md_5_bungee_jni_zlib_NativeCompressImpl.h @@ -15,6 +15,14 @@ extern "C" { JNIEXPORT void JNICALL Java_net_md_15_bungee_jni_zlib_NativeCompressImpl_initFields (JNIEnv *, jclass); +/* + * Class: net_md_5_bungee_jni_zlib_NativeCompressImpl + * Method: checkSupported + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_net_md_15_bungee_jni_zlib_NativeCompressImpl_checkSupported + (JNIEnv *, jobject); + /* * Class: net_md_5_bungee_jni_zlib_NativeCompressImpl * Method: end diff --git a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java index 62bdaa0e8c..85265d1aa5 100644 --- a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java +++ b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java @@ -17,6 +17,7 @@ public final class NativeCode private final Supplier nativeImpl; // private boolean loaded; + private boolean initializationFailed; public NativeCode(String name, Supplier javaImpl, Supplier nativeImpl) { @@ -27,12 +28,26 @@ public NativeCode(String name, Supplier javaImpl, Supplier Date: Sun, 4 Aug 2024 01:10:06 -0700 Subject: [PATCH 2/4] Recompile native-compress.so --- native/src/main/resources/native-compress.so | Bin 117320 -> 113696 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/native/src/main/resources/native-compress.so b/native/src/main/resources/native-compress.so index 2ebbfed6137a110f9e9923e101c85d2ea73f9493..76c1a41afbd8f76d0aaa3dff112b1ac34c630459 100755 GIT binary patch literal 113696 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 z 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%0DRQYv{NEuZ!Td9rV!`QoLpYQIv;)!RW_av_GTeWm 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 P|NWC|`G*aaX7PUk9&6G< literal 117320 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 P`0-C3^Nj{UqiX&Ix%{=U From 14767def6c06a135b9c842f5f79c75a436bb0932 Mon Sep 17 00:00:00 2001 From: lax1dude Date: Sun, 4 Aug 2024 12:08:09 -0700 Subject: [PATCH 3/4] Added system properties to disable native libraries --- native/src/main/java/net/md_5/bungee/jni/NativeCode.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java index 85265d1aa5..b2682d5364 100644 --- a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java +++ b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java @@ -15,6 +15,7 @@ public final class NativeCode private final String name; private final Supplier javaImpl; private final Supplier nativeImpl; + private final boolean enableNativeFlag; // private boolean loaded; private boolean initializationFailed; @@ -24,6 +25,7 @@ public NativeCode(String name, Supplier javaImpl, Supplier Date: Tue, 6 Aug 2024 21:35:05 -0700 Subject: [PATCH 4/4] Move compatibility check to load function --- .../java/net/md_5/bungee/jni/NativeCode.java | 36 ++++++++++--------- .../java/net/md_5/bungee/NativeZlibTest.java | 2 +- .../md_5/bungee/compress/CompressFactory.java | 2 +- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java index b2682d5364..be4d5b0b82 100644 --- a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java +++ b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java @@ -16,40 +16,32 @@ public final class NativeCode private final Supplier javaImpl; private final Supplier nativeImpl; private final boolean enableNativeFlag; + private final boolean extendedSupportCheck; // private boolean loaded; - private boolean initializationFailed; public NativeCode(String name, Supplier javaImpl, Supplier nativeImpl) + { + this( name, javaImpl, nativeImpl, false ); + } + + public NativeCode(String name, Supplier javaImpl, Supplier nativeImpl, boolean extendedSupportCheck) { this.name = name; this.javaImpl = javaImpl; this.nativeImpl = nativeImpl; this.enableNativeFlag = Boolean.parseBoolean( System.getProperty( "net.md_5.bungee.jni." + name + ".enable", "true" ) ); + this.extendedSupportCheck = extendedSupportCheck; } public T newInstance() { - if ( loaded ) - { - try - { - return nativeImpl.get(); - } catch ( NativeCodeException ex ) - { - // To catch the compatibility exception from the zlib library - System.out.println( "Could not init native " + name + " library: " + ex.getMessage() ); - loaded = false; - initializationFailed = true; - } - } - - return javaImpl.get(); + return ( loaded ) ? nativeImpl.get() : javaImpl.get(); } public boolean load() { - if ( enableNativeFlag && !loaded && !initializationFailed && isSupported() ) + if ( enableNativeFlag && !loaded && isSupported() ) { String fullName = "bungeecord-" + name; @@ -76,6 +68,13 @@ public boolean load() } System.load( temp.getPath() ); + + if ( extendedSupportCheck ) + { + // Should throw NativeCodeException if incompatible + nativeImpl.get(); + } + loaded = true; } catch ( IOException ex ) { @@ -83,6 +82,9 @@ public boolean load() } catch ( UnsatisfiedLinkError ex ) { System.out.println( "Could not load native library: " + ex.getMessage() ); + } catch ( NativeCodeException ex ) + { + System.out.println( "Native library " + name + " is incompatible: " + ex.getMessage() ); } } } diff --git a/native/src/test/java/net/md_5/bungee/NativeZlibTest.java b/native/src/test/java/net/md_5/bungee/NativeZlibTest.java index 70b2b475d5..112a3b83be 100644 --- a/native/src/test/java/net/md_5/bungee/NativeZlibTest.java +++ b/native/src/test/java/net/md_5/bungee/NativeZlibTest.java @@ -15,7 +15,7 @@ public class NativeZlibTest { - private final NativeCode factory = new NativeCode<>( "native-compress", JavaZlib::new, NativeZlib::new ); + private final NativeCode factory = new NativeCode<>( "native-compress", JavaZlib::new, NativeZlib::new, true ); @Test public void doTest() throws DataFormatException diff --git a/proxy/src/main/java/net/md_5/bungee/compress/CompressFactory.java b/proxy/src/main/java/net/md_5/bungee/compress/CompressFactory.java index 2e0c63d1f0..e4cbbeb765 100644 --- a/proxy/src/main/java/net/md_5/bungee/compress/CompressFactory.java +++ b/proxy/src/main/java/net/md_5/bungee/compress/CompressFactory.java @@ -8,5 +8,5 @@ public class CompressFactory { - public static final NativeCode zlib = new NativeCode<>( "native-compress", JavaZlib::new, NativeZlib::new ); + public static final NativeCode zlib = new NativeCode<>( "native-compress", JavaZlib::new, NativeZlib::new, true ); }