[foreign-memaccess+abi] RFR: 8265222: revisit foreign library loading
Athijegannathan Sundararajan
sundar at openjdk.java.net
Thu May 6 11:05:25 UTC 2021
On Wed, 5 May 2021 18:24:11 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java line 422:
>>
>>> 420: FunctionDescriptor.of(C_POINTER, C_LONG_LONG));
>>> 421:
>>> 422: static final MethodHandle MH_FREE = linker.downcallHandle(CLinker.findNative("free").get(),
>>
>> These symbol lookups fail on Windows.
>
> Following fix works:
>
>
> diff --git a/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java b/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
> index d705d414c0d..708c005d1d9 100644
> --- a/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
> +++ b/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
> @@ -50,6 +50,7 @@ import java.lang.invoke.MethodType;
> import java.lang.invoke.VarHandle;
> import java.lang.ref.Reference;
> import java.nio.charset.Charset;
> +import java.nio.file.Path;
> import java.util.List;
> import java.util.Map;
> import java.util.function.Consumer;
> @@ -415,6 +416,9 @@ public class SharedUtils {
> private static class AllocHolder {
>
> private static final CLinker linker = getSystemLinker();
> + static {
> + System.load(Path.of(System.getenv("SystemRoot"), "System32", "msvcrt.dll").toAbsolutePath().toString());
> + }
> static final MethodHandle MH_MALLOC = linker.downcallHandle(CLinker.findNative("malloc").get(),
> MethodType.methodType(MemoryAddress.class, long.class),
> FunctionDescriptor.of(C_POINTER, C_LONG_LONG));
Yes, will add this as temporary hack for Windows.
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/526
More information about the panama-dev
mailing list