RFR: 8306033: Resolve multiple definition of 'throwIOException' and friends when statically linking with JDK native libraries
Mark Powers
mpowers at openjdk.org
Mon Apr 24 22:45:13 UTC 2023
On Mon, 17 Apr 2023 16:56:31 GMT, Jiangli Zhou <jiangli at openjdk.org> wrote:
> - Make functions 'static' when feasible:
> - throwByName() in src/java.security.jgss/share/native/libj2gss/NativeUtil.c.
> - throwByName(), throwIOException() and throwNullPointerException() in src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c.
> - throwByName() in src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c.
> - throwOutOfMemoryError() in src/java.smartcardio/share/native/libj2pcsc/pcsc.c.
> - Move throwDisconnectedRuntimeException() to src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c since it's only used in the file. Make it static.
> - Move throw_internal_error() to src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c as it's only used in the file. Make it static.
>
> - Rename functions by following the existing naming usages in different libraries code:
> - Rename throwOutOfMemoryError() to gssThrowOutOfMemoryError() in libj2gss.
> - Rename throwOutOfMemoryError() to p11ThrowOutOfMemoryError() in libj2pks11.
> - Rename throwNullPointerException() to p11ThrowNullPointerException() in libj2pks11.
> - Rename throwIOException() to p11ThrowIOException() in libj2pks11.
> - Rename throwPKCS11RuntimeException() to p11ThrowPKCS11RuntimeException() in libj2pks11. This function only exists in libj2pks11. The rename is done so the function naming is consistent with the other throw<exception> functions.
>
> - Remove throw_internal_error() from src/java.management/share/native/libmanagement/management.h and src/java.management/share/native/libmanagement/management.c. It's not used.
> - Remove throw_internal_error() from src/jdk.management/share/native/libmanagement_ext/management_ext.h and src/jdk.management/share/native/libmanagement_ext/management_ext.c.
Update copyrights to 2023.
src/java.security.jgss/share/native/libj2gss/GSSLibStub.c line 201:
> 199: cb = malloc(sizeof(struct gss_channel_bindings_struct));
> 200: if (cb == NULL) {
> 201: gssThrowOutOfMemoryError(env,NULL);
While you're fixing this, add a space between arguments, e.g. `(env,NULL) `becomes `(env, NULL)`.
src/java.security.jgss/share/native/libj2gss/NativeUtil.c line 456:
> 454:
> 455: /* Throws a Java Exception by name */
> 456: static void throwByName(JNIEnv *env, const char *name, const char *msg) {
Why can't you move the few lines of `throwByName()` into `gssThrowOutOfMemoryError()` and totally remove `throwByName()`?
-------------
PR Review: https://git.openjdk.org/jdk/pull/13497#pullrequestreview-1398895019
PR Review Comment: https://git.openjdk.org/jdk/pull/13497#discussion_r1175839776
PR Review Comment: https://git.openjdk.org/jdk/pull/13497#discussion_r1175840162
More information about the serviceability-dev
mailing list