From 949414cd59e5fc2a610fdd3f773df884662801cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20Pl=C3=B6se?= Date: Mon, 8 Apr 2024 21:10:03 +0200 Subject: [PATCH] Updated to OpenJDK-22 --- de.ibapl.jnhw.common/pom.xml | 32 --- .../memory/AbstractMemoryAccessorImpl.java | 19 +- .../jnhw/common/memory/MemoryAccessor.java | 11 +- .../ibapl/jnhw/common/memory/MemoryHeap.java | 6 +- .../de/ibapl/jnhw/common/memory/PtrChar.java | 13 +- .../CallbackFactory__V__Union_I_MA.java | 225 ++++++++---------- .../jnhw/common/util/jni/LibJnhwCommon.java | 1 + .../lib/x86_64-linux-gnu/libjnhw-common.so.4 | Bin 87952 -> 0 bytes .../test/memory/MemoryAccessorTest.java | 15 +- .../test/memory/layout/StructLayoutTest.java | 28 +++ .../upcall/Callback__V__Union_I_MA_Test.java | 5 +- de.ibapl.jnhw.libloader/pom.xml | 2 +- de.ibapl.jnhw.posix/pom.xml | 2 +- .../main/java/de/ibapl/jnhw/posix/Fcntl.java | 20 +- .../main/java/de/ibapl/jnhw/posix/Locale.java | 26 +- .../main/java/de/ibapl/jnhw/posix/Signal.java | 4 +- .../main/java/de/ibapl/jnhw/posix/Stdio.java | 2 +- .../de/ibapl/jnhw/posix/StringHeader.java | 6 +- .../main/java/de/ibapl/jnhw/posix/Time.java | 26 +- de.ibapl.jnhw.syscall.linux/pom.xml | 2 +- de.ibapl.jnhw.winapi/pom.xml | 2 +- .../jnhw/it/hello_world_async_io/App.java | 2 +- it/jnhw-jna-jnr/pom.xml | 4 +- pom.xml | 8 +- 24 files changed, 229 insertions(+), 232 deletions(-) delete mode 100755 de.ibapl.jnhw.common/src/main/resources/lib/x86_64-linux-gnu/libjnhw-common.so.4 diff --git a/de.ibapl.jnhw.common/pom.xml b/de.ibapl.jnhw.common/pom.xml index 15492869..521efacf 100644 --- a/de.ibapl.jnhw.common/pom.xml +++ b/de.ibapl.jnhw.common/pom.xml @@ -38,15 +38,6 @@ - org.apache.maven.plugins @@ -60,7 +51,6 @@ - --enable-preview -h ${basedir}/src/main/native/include/ @@ -71,29 +61,7 @@ org.apache.maven.plugins maven-surefire-plugin - - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview - - diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/AbstractMemoryAccessorImpl.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/AbstractMemoryAccessorImpl.java index 46fd34e4..5df94d96 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/AbstractMemoryAccessorImpl.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/AbstractMemoryAccessorImpl.java @@ -29,6 +29,7 @@ import java.lang.foreign.ValueLayout; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.charset.Charset; /** * @@ -249,13 +250,23 @@ public void uintptr_t_AtIndex(MemorySegment mem, long index, MemorySegment dest) } @Override - public String getUTF_8String(MemorySegment mem, long offset) { - return mem.getUtf8String(offset); + public String getString(MemorySegment mem, long offset) { + return mem.getString(offset); } @Override - public void setUTF_8String(MemorySegment mem, long offset, String s) { - mem.setUtf8String(offset, s); + public void setString(MemorySegment mem, long offset, String s) { + mem.setString(offset, s); + } + + @Override + public String getString(MemorySegment mem, long offset, Charset charset) { + return mem.getString(offset, charset); + } + + @Override + public void setString(MemorySegment mem, long offset, String s, Charset charset) { + mem.setString(offset, s, charset); } @Override diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryAccessor.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryAccessor.java index 4ad5fdb6..7f8b796e 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryAccessor.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryAccessor.java @@ -38,6 +38,7 @@ import java.lang.foreign.MemorySegment; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.charset.Charset; /** * @@ -654,12 +655,18 @@ default String getSignedLongOf_nativeToString(MemorySegment mem, long offset, in * @param offset * @return */ - String getUTF_8String(MemorySegment mem, long offset); + String getString(MemorySegment mem, long offset); - void setUTF_8String(MemorySegment mem, long offset, String s); + void setString(MemorySegment mem, long offset, String s); + String getString(MemorySegment mem, long offset, Charset charset); + + void setString(MemorySegment mem, long offset, String s, Charset charset); + + @Deprecated //TODO use getString + Charset String getUnicodeString(MemorySegment mem, long offset, int len); + @Deprecated //TODO use setString + Charset void setUnicodeString(MemorySegment mem, long offset, int len, String s); static long getBitsInLong(long value, int bitpos, int bitsize) { diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryHeap.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryHeap.java index 3ead3b58..4e4acc5d 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryHeap.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/MemoryHeap.java @@ -74,14 +74,14 @@ public BaseDataType getBaseDataType() { return BaseDataType.intptr_t; } + /* @Deprecated public long nextOffset(OpaqueMemory fieldOnTheFly, Alignment fieldAlignment) { - return OpaqueMemory.calcOffsetForAlignment(this, fieldAlignment, memorySegment.segmentOffset(fieldOnTheFly.memorySegment) + fieldOnTheFly.sizeof()); + //return OpaqueMemory.calcOffsetForAlignment(this, fieldAlignment, memorySegment.segmentOffset(fieldOnTheFly.memorySegment) + fieldOnTheFly.sizeof()); } + */ - @Deprecated public long getAlignmentOffset(long offset, Alignment alignment) { return OpaqueMemory.calcOffsetForAlignment(this, alignment, offset); } - } diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/PtrChar.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/PtrChar.java index 5c67f139..d1fee7b6 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/PtrChar.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/memory/PtrChar.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.lang.foreign.Arena; import java.lang.foreign.MemorySegment; +import java.nio.charset.Charset; /** * @@ -47,11 +48,19 @@ public static PtrChar map(OpaqueMemory mem, long offset) { } public String get() { - return MEM_ACCESS.getUTF_8String(memorySegment, 0); + return MEM_ACCESS.getString(memorySegment, 0); } public void set(String value) { - MEM_ACCESS.setUTF_8String(memorySegment, 0, value); + MEM_ACCESS.setString(memorySegment, 0, value); + } + + public String get(Charset charset) { + return MEM_ACCESS.getString(memorySegment, 0, charset); + } + + public void set(String value, Charset charset) { + MEM_ACCESS.setString(memorySegment, 0, value, charset); } @Override diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/upcall/CallbackFactory__V__Union_I_MA.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/upcall/CallbackFactory__V__Union_I_MA.java index dde07362..9f200bc7 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/upcall/CallbackFactory__V__Union_I_MA.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/upcall/CallbackFactory__V__Union_I_MA.java @@ -91,24 +91,22 @@ protected final static void trampoline_0(final long value_ptr, final int value_i protected final static void trampoline_0(final MemorySegment value) { try { REFS[0].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_0(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_0(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_0(%s)", + value), t ); } @@ -141,24 +139,22 @@ protected final static void trampoline_1(final long value_ptr, final int value_i protected final static void trampoline_1(final MemorySegment value) { try { REFS[1].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log( Level.SEVERE, String.format( "Unassigned callback for trampoline_1(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_1(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_1(%s)", + value), t ); } @@ -192,23 +188,22 @@ protected final static void trampoline_2(final long value_ptr, final int value_i protected final static void trampoline_2(final MemorySegment value) { try { REFS[2].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_2(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, - String.format("Exception was thrown in trampoline_2(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + String.format( + "Exception was thrown in trampoline_2(%s)", + value), t ); } @@ -242,24 +237,22 @@ protected final static void trampoline_3(final long value_ptr, final int value_i protected final static void trampoline_3(final MemorySegment value) { try { REFS[3].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_3(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_3(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_3(%s)", + value), t); } } @@ -292,24 +285,22 @@ protected final static void trampoline_4(final long value_ptr, final int value_i protected final static void trampoline_4(final MemorySegment value) { try { REFS[4].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_4(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_4(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_4(%s)", + value), t ); } @@ -343,24 +334,22 @@ protected final static void trampoline_5(final long value_ptr, final int value_i protected final static void trampoline_5(final MemorySegment value) { try { REFS[5].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_5(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_5(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_5(%s)", + value), t ); } @@ -394,24 +383,22 @@ protected final static void trampoline_6(final long value_ptr, final int value_i protected final static void trampoline_6(final MemorySegment value) { try { REFS[6].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_6(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_6(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_6(%s)", + value), t ); } @@ -445,24 +432,22 @@ protected final static void trampoline_7(final long value_ptr, final int value_i protected final static void trampoline_7(final MemorySegment value) { try { REFS[7].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_7(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_7(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_7(%s)", + value), t ); } @@ -496,24 +481,22 @@ protected final static void trampoline_8(final long value_ptr, final int value_i protected final static void trampoline_8(final MemorySegment value) { try { REFS[8].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_8(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_8(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_8(%s)", + value), t ); } @@ -546,22 +529,20 @@ protected final static void trampoline_9(final long value_ptr, final int value_i protected final static void trampoline_9(final MemorySegment value) { try { REFS[9].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format("Unassigned callback for trampoline_9(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, - String.format("Exception was thrown in trampoline_9(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + String.format("Exception was thrown in trampoline_9(%s)", + value), t ); } @@ -595,24 +576,22 @@ protected final static void trampoline_10(final long value_ptr, final int value_ protected final static void trampoline_10(final MemorySegment value) { try { REFS[10].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_10(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_10(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_10(%s)", + value), t ); } @@ -646,24 +625,22 @@ protected final static void trampoline_11(final long value_ptr, final int value_ protected final static void trampoline_11(final MemorySegment value) { try { REFS[11].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_11(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_11(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_11(%s)", + value), t ); } @@ -697,24 +674,22 @@ protected final static void trampoline_12(final long value_ptr, final int value_ protected final static void trampoline_12(final MemorySegment value) { try { REFS[12].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_12(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_12(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_12(%s)", + value), t ); } @@ -748,24 +723,22 @@ protected final static void trampoline_13(final long value_ptr, final int value_ protected final static void trampoline_13(final MemorySegment value) { try { REFS[13].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_13(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_13(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_13(%s)", + value), t ); } @@ -799,24 +772,22 @@ protected final static void trampoline_14(final long value_ptr, final int value_ protected final static void trampoline_14(final MemorySegment value) { try { REFS[14].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_14(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_14(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_14(%s)", + value), t ); } @@ -850,24 +821,22 @@ protected final static void trampoline_15(final long value_ptr, final int value_ protected final static void trampoline_15(final MemorySegment value) { try { REFS[15].callback( - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ); } catch (NullPointerException npe) { LOG.log(Level.SEVERE, String.format( "Unassigned callback for trampoline_15(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) + (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value, 0L), + (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value, 0L) ) ); } catch (Throwable t) { LOG.log(Level.SEVERE, String.format( - "Exception was thrown in trampoline_15(%s, %d)", - (MemorySegment) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_PTR.get(value), - (int) JnhwCallbackFactory__V__Union_I_MA.HANDLE_VALUE_INT.get(value) - ), + "Exception was thrown in trampoline_15(%s)", + value), t ); } diff --git a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/util/jni/LibJnhwCommon.java b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/util/jni/LibJnhwCommon.java index 987299c5..9dd0f3e0 100644 --- a/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/util/jni/LibJnhwCommon.java +++ b/de.ibapl.jnhw.common/src/main/java/de/ibapl/jnhw/common/util/jni/LibJnhwCommon.java @@ -39,6 +39,7 @@ public class LibJnhwCommon { private static LoadResult LIB_JNHW_COMMON_LOAD_RESULT; static { + //TODO only load jni lib if it is neccesary LIB_JNHW_COMMON_LOAD_RESULT = NativeLibResolver.loadNativeLib(LIB_JNHW_COMMON, LIB_JNHW_COMMON_VERSION, LibJnhwCommon::doSystemLoad); } diff --git a/de.ibapl.jnhw.common/src/main/resources/lib/x86_64-linux-gnu/libjnhw-common.so.4 b/de.ibapl.jnhw.common/src/main/resources/lib/x86_64-linux-gnu/libjnhw-common.so.4 deleted file mode 100755 index f26c5fe104adfdd8757cc6e0f83c041303bc9d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87952 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 diff --git a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/MemoryAccessorTest.java b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/MemoryAccessorTest.java index 090cfd32..fd8b41c8 100644 --- a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/MemoryAccessorTest.java +++ b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/MemoryAccessorTest.java @@ -843,15 +843,16 @@ public void testStringAsUnicodeBE__With_Non_ASCII() { assertEquals("263a0020 00480069 00210020 263a0000 | &:\u0000 \u0000H\u0000i\u0000!\u0000 &:\u0000\u0000", OpaqueMemory.printMemory(buff_16, false)); assertEquals(expectedString, maBE.getUnicodeString(OpaqueMemory.getMemorySegment(buff_16), 0, LENGTH)); + //TODO use getString + Charset } @Test public void testStringAsUTF_ASCII_Only() { String expectedString = "Hello!"; - ma.setUTF_8String(OpaqueMemory.getMemorySegment(buff_16), 0, expectedString); + ma.setString(OpaqueMemory.getMemorySegment(buff_16), 0, expectedString); assertEquals("48656c6c 6f210000 00000000 00000000 | Hello!\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000", OpaqueMemory.printMemory(buff_16, false)); - assertEquals(expectedString, ma.getUTF_8String(OpaqueMemory.getMemorySegment(buff_16), 0)); + assertEquals(expectedString, ma.getString(OpaqueMemory.getMemorySegment(buff_16), 0)); } @@ -864,20 +865,20 @@ public void testStringAsUTF_With_Non_ASCII() { assertEquals(LENGTH, chars.length); // assertEquals(LENGTH + 4, NATIVE_LENGTH); - ma.setUTF_8String(OpaqueMemory.getMemorySegment(buff_16), 0, expectedString); - assertEquals(expectedString, ma.getUTF_8String(OpaqueMemory.getMemorySegment(buff_16), 0)); + ma.setString(OpaqueMemory.getMemorySegment(buff_16), 0, expectedString); + assertEquals(expectedString, ma.getString(OpaqueMemory.getMemorySegment(buff_16), 0)); assertEquals(""" e298ba48 6921e298 ba000000 00000000 | \u00e2\u0098\u00ba\u0048\u0069\u0021\u00e2\u0098\u00ba\u0000\u0000\u0000\u0000\u0000\u0000\u0000""", OpaqueMemory.printMemory(buff_16, false)); assertThrows(IndexOutOfBoundsException.class, () -> { - ma.setUTF_8String(OpaqueMemory.getMemorySegment(heap), heap.sizeof() - 4, expectedString); + ma.setString(OpaqueMemory.getMemorySegment(heap), heap.sizeof() - 4, expectedString); }); assertThrows(IndexOutOfBoundsException.class, () -> { - ma.setUTF_8String(OpaqueMemory.getMemorySegment(heap).asSlice(0, mem32.sizeof()), mem32.sizeof(), expectedString); + ma.setString(OpaqueMemory.getMemorySegment(heap).asSlice(0, mem32.sizeof()), mem32.sizeof(), expectedString); }); assertThrows(IndexOutOfBoundsException.class, () -> { //Just try to override some memory - ma.setUTF_8String(OpaqueMemory.getMemorySegment(mem32), 0, expectedString); + ma.setString(OpaqueMemory.getMemorySegment(mem32), 0, expectedString); }); } diff --git a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/layout/StructLayoutTest.java b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/layout/StructLayoutTest.java index df1072d8..ca92aecf 100644 --- a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/layout/StructLayoutTest.java +++ b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/memory/layout/StructLayoutTest.java @@ -26,6 +26,12 @@ import de.ibapl.jnhw.common.test.JnhwTestLogger; import de.ibapl.jnhw.common.test.LibJnhwCommonTestLoader; import de.ibapl.jnhw.libloader.MultiarchTupelBuilder; +import java.lang.foreign.Arena; +import java.lang.foreign.MemoryLayout; +import java.lang.foreign.MemorySegment; +import java.lang.foreign.UnionLayout; +import java.lang.foreign.ValueLayout; +import java.lang.invoke.VarHandle; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; @@ -327,4 +333,26 @@ public void testNativeLayout() { } + @Test + public void testForeignUnion_I_MA() { + final UnionLayout LAYOUT__UNION_I_MA = MemoryLayout.unionLayout( + ValueLayout.ADDRESS.withName("value_ptr"), + ValueLayout.JAVA_INT.withName("value_int") + ); + + final VarHandle HANDLE_VALUE_PTR + = LAYOUT__UNION_I_MA.varHandle(MemoryLayout.PathElement.groupElement("value_ptr")); + final VarHandle HANDLE_VALUE_INT + = LAYOUT__UNION_I_MA.varHandle(MemoryLayout.PathElement.groupElement("value_int")); + + try (Arena a = Arena.ofConfined()) { + MemorySegment seg = a.allocate(LAYOUT__UNION_I_MA); + HANDLE_VALUE_INT.set(seg, 0L, 42); + Assertions.assertEquals(42, HANDLE_VALUE_INT.get(seg, 0L)); + + HANDLE_VALUE_PTR.set(seg, 0L, MemorySegment.ofAddress(11)); + Assertions.assertEquals(11, ((MemorySegment) HANDLE_VALUE_PTR.get(seg, 0L)).address()); + } + } + } diff --git a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/upcall/Callback__V__Union_I_MA_Test.java b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/upcall/Callback__V__Union_I_MA_Test.java index 5079c603..95e7fb4f 100644 --- a/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/upcall/Callback__V__Union_I_MA_Test.java +++ b/de.ibapl.jnhw.common/src/test/java/de/ibapl/jnhw/common/test/upcall/Callback__V__Union_I_MA_Test.java @@ -270,7 +270,10 @@ protected void callback(MemorySegment sival_ptr, int sival_int) { default -> throw new AssertionError("Can`t handle memory model: " + MultiarchTupelBuilder.getMemoryModel()); } - + } catch (Throwable t1) { + System.err.println(t1); + System.err.flush(); + throw t1; } finally { callback.release(); } diff --git a/de.ibapl.jnhw.libloader/pom.xml b/de.ibapl.jnhw.libloader/pom.xml index 264e83fc..1a8e2a72 100644 --- a/de.ibapl.jnhw.libloader/pom.xml +++ b/de.ibapl.jnhw.libloader/pom.xml @@ -33,7 +33,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} diff --git a/de.ibapl.jnhw.posix/pom.xml b/de.ibapl.jnhw.posix/pom.xml index 0b47e36c..89251852 100644 --- a/de.ibapl.jnhw.posix/pom.xml +++ b/de.ibapl.jnhw.posix/pom.xml @@ -54,7 +54,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Fcntl.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Fcntl.java index e7d9baaa..c55bac3e 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Fcntl.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Fcntl.java @@ -1023,7 +1023,7 @@ public static interface OpenBsdDefines extends BsdDefines { public final static int creat(String path, @mode_t int mode) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = creat.invoke_sI___A_uI(_path, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1045,7 +1045,7 @@ public final static int creat(String path, @mode_t int mode) throws NativeErrorE public final static int creat64(String path, @mode_t int mode) throws NativeErrorException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = creat64.invoke_sI___A_uI(_path, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1153,7 +1153,7 @@ public final static int fcntl64(int fildes, int cmd, int vararg_0) throws Native public final static int open(String path, int oflag) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = open.invoke_sI___A_sI(_path, oflag); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1178,7 +1178,7 @@ public final static int open(String path, int oflag) throws NativeErrorException public final static int open(String path, int oflag, @mode_t int mode) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = open__VARARG_mode_t.invoke_sI___A_sI_uI(_path, oflag, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1205,7 +1205,7 @@ public final static int open(String path, int oflag, @mode_t int mode) throws Na public final static int open64(String path, int oflag) throws NativeErrorException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = open64.invoke_sI___A_sI(_path, oflag); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1232,7 +1232,7 @@ public final static int open64(String path, int oflag) throws NativeErrorExcepti public final static int open64(String path, int oflag, @mode_t int mode) throws NativeErrorException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = open64__VARARG_mode_t.invoke_sI___A_sI_uI(_path, oflag, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1261,7 +1261,7 @@ public final static int open64(String path, int oflag, @mode_t int mode) throws public final static int openat(int fd, String path, int oflag) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = openat.invoke_sI__sI__A_sI(fd, _path, oflag); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1287,7 +1287,7 @@ public final static int openat(int fd, String path, int oflag) throws NativeErro public final static int openat(int fd, String path, int oflag, @mode_t int mode) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = openat__VARARG_mode_t.invoke_sI__sI__A_sI_uI(fd, _path, oflag, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1314,7 +1314,7 @@ public final static int openat(int fd, String path, int oflag, @mode_t int mode) public final static int openat64(int fd, String path, int oflag) throws NativeErrorException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = openat64.invoke_sI__sI__A_sI(fd, _path, oflag); if (result == -1) { throw new NativeErrorException(Errno.errno()); @@ -1343,7 +1343,7 @@ public final static int openat64(int fd, String path, int oflag) throws NativeEr public final static int openat64(int fd, String path, int oflag, @mode_t int mode) throws NativeErrorException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); final int result = openat64__VARARG_mode_t.invoke_sI__sI__A_sI_uI(fd, _path, oflag, mode); if (result == -1) { throw new NativeErrorException(Errno.errno()); diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Locale.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Locale.java index e106b30e..8925501f 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Locale.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Locale.java @@ -269,7 +269,7 @@ public Lconv(MemorySegment memorySegment, long offset) { * @return the native value of currency_symbol. */ public final String currency_symbol() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Currency_symbol); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Currency_symbol); } /** @@ -277,7 +277,7 @@ public final String currency_symbol() { * @return the native value of decimal_point. */ public final String decimal_point() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Decimal_point); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Decimal_point); } /** @@ -298,7 +298,7 @@ public final short frac_digits() { * @return the native value of grouping. */ public final String grouping() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Grouping); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Grouping); } /** @@ -309,7 +309,7 @@ public final String grouping() { * @return the native value of int_curr_symbol. */ public final String int_curr_symbol() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Int_curr_symbol); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Int_curr_symbol); } /** @@ -413,7 +413,7 @@ public final short int_p_sign_posn() { * @return the native value of mon_decimal_point. */ public final String mon_decimal_point() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Mon_decimal_point); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Mon_decimal_point); } /** @@ -425,7 +425,7 @@ public final String mon_decimal_point() { * @return the native value of mon_grouping. */ public final String mon_grouping() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Mon_grouping); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Mon_grouping); } /** @@ -438,7 +438,7 @@ public final String mon_grouping() { * @return the native value of mon_thousands_sep. */ public final String mon_thousands_sep() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Mon_thousands_sep); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Mon_thousands_sep); } /** @@ -518,7 +518,7 @@ public void nativeToString(Appendable sb, String indentPrefix, String indent) th * @return the native value of negative_sign. */ public final String negative_sign() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Negative_sign); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Negative_sign); } /** @@ -568,7 +568,7 @@ public final short p_sign_posn() { * @return the native value of positive_sign. */ public final String positive_sign() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Positive_sign); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Positive_sign); } /** @@ -576,7 +576,7 @@ public final String positive_sign() { * @return the native value of thousands_sep. */ public final String thousands_sep() { - return MEM_ACCESS.getUTF_8String(memorySegment, Lconv.offsetof_Thousands_sep); + return MEM_ACCESS.getString(memorySegment, Lconv.offsetof_Thousands_sep); } } @@ -946,7 +946,7 @@ public final static Locale_t newlocale(int category_mask, String locale, Locale_ } try (Arena arena = Arena.ofConfined()) { MemorySegment _locale = arena.allocate(locale.length() + 1); - _locale.setUtf8String(0, locale); + _locale.setString(0, locale); final MemorySegment resultAdr = newlocale.invoke_MA__sI__A__P(category_mask, _locale, base); if (resultAdr.address() == 0L) { throw new NativeErrorException(Errno.errno()); @@ -972,13 +972,13 @@ public final static String setlocale(int category, String locale) { resultAdr = setlocale.invoke_MA__sI__A(category, MemorySegment.NULL); } else { MemorySegment _locale = arena.allocate(locale.length() + 1); - _locale.setUtf8String(0, locale); + _locale.setString(0, locale); resultAdr = setlocale.invoke_MA__sI__A(category, _locale); } if (resultAdr.address() == 0L) { return null; } else { - return resultAdr.getUtf8String(0); + return resultAdr.getString(0); } } } diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Signal.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Signal.java index c73bce74..60dafe02 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Signal.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Signal.java @@ -3164,7 +3164,7 @@ public final static void psiginfo(Siginfo_t pinfo, String message) throws Native message = ""; } MemorySegment _message = arena.allocate(message.length() + 1); - _message.setUtf8String(0, message); + _message.setString(0, message); final int old_errno = Errno.errno(); Errno.errno(0); psiginfo.invoke__V___P__A(pinfo, _message); @@ -3190,7 +3190,7 @@ public final static void psignal(int signum, String message) throws NativeErrorE message = ""; } MemorySegment _message = arena.allocate(message.length() + 1); - _message.setUtf8String(0, message); + _message.setString(0, message); final int old_errno = Errno.errno(); Errno.errno(0); psignal.invoke__V__sI__A(signum, _message); diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Stdio.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Stdio.java index c71c87cd..0623132a 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Stdio.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Stdio.java @@ -190,7 +190,7 @@ public static void putchar(char c) throws NativeErrorException { public final static void remove(String path) throws NativeErrorException { try (Arena arena = Arena.ofConfined()) { MemorySegment _path = arena.allocate(path.length() + 1); - _path.setUtf8String(0, path); + _path.setString(0, path); int result = remove.invoke_sI___A(_path); if (result != 0) { throw new NativeErrorException(Errno.errno()); diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/StringHeader.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/StringHeader.java index d6236db7..253098f4 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/StringHeader.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/StringHeader.java @@ -95,7 +95,7 @@ public final static String strerror(int errnum) throws NativeErrorException { if (result.address() == 0L) { throw new NativeErrorException(Errno.errno()); } - return result.getUtf8String(0); + return result.getString(0); } /** @@ -111,7 +111,7 @@ public final static String strerror_l(int errnum, Locale.Locale_t locale) throws if (result.address() == 0L) { throw new NativeErrorException(Errno.errno()); } - return result.getUtf8String(0); + return result.getString(0); } /** @@ -124,7 +124,7 @@ public final static String strsignal(int signum) { if (result.address() == 0L) { return null; } - return result.getUtf8String(0); + return result.getString(0); } } diff --git a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Time.java b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Time.java index 4c0e122e..956f3996 100644 --- a/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Time.java +++ b/de.ibapl.jnhw.posix/src/main/java/de/ibapl/jnhw/posix/Time.java @@ -1067,7 +1067,7 @@ public final static String asctime(Tm tm) { if (resultAdr.address() == 0L) { return null; } else { - return resultAdr.getUtf8String(0); + return resultAdr.getString(0); } } @@ -1090,7 +1090,7 @@ public final static String asctime_r(Tm tm, OpaqueMemory buf) { if (resultAdr.address() == 0L) { return null; } else { - return buf.toMemorySegment().getUtf8String(0); + return buf.toMemorySegment().getString(0); } } @@ -1227,7 +1227,7 @@ public final static String ctime(Types.Time_t clock) { if (resultAdr.address() == 0L) { return null; } else { - return resultAdr.getUtf8String(0); + return resultAdr.getString(0); } } @@ -1252,7 +1252,7 @@ public final static String ctime_r(Types.Time_t clock, OpaqueMemory buf) { if (resultAdr.address() == 0L) { return null; } else { - return buf.toMemorySegment().getUtf8String(0); + return buf.toMemorySegment().getString(0); } } @@ -1318,7 +1318,7 @@ public final static int getdate_err() throws NoSuchNativeSymbolException { public final static Tm getdate(String string) throws NativeException, NoSuchNativeMethodException { try (Arena arena = Arena.ofConfined()) { MemorySegment _string = arena.allocate(string.length() + 1); - _string.setUtf8String(0, string); + _string.setString(0, string); final MemorySegment result = getdate.invoke_MA___A(_string); if (result.address() == 0L) { throw new NativeException("getdate"); @@ -1473,12 +1473,12 @@ public final static String strftime(@size_t long maxsize, String format, Tm time try (Arena arena = Arena.ofConfined()) { MemorySegment s = arena.allocate(maxsize); MemorySegment _format = arena.allocate(format.length() + 1); - _format.setUtf8String(0, format); + _format.setString(0, format); final int result = strftime.invoke_sI___A_uL__A__P(s, maxsize, _format, timeptr); if (result == 0) { return null; } else { - return s.getUtf8String(0); + return s.getString(0); } } } @@ -1500,12 +1500,12 @@ public final static String strftime_l(@size_t long maxsize, String format, Tm ti try (Arena arena = Arena.ofConfined()) { MemorySegment s = arena.allocate(maxsize); MemorySegment _format = arena.allocate(format.length() + 1); - _format.setUtf8String(0, format); + _format.setString(0, format); final int result = strftime_l.invoke_sI___A_uL_A__P__P(s, maxsize, _format, timeptr, locale); if (result == 0) { return null; } else { - return s.getUtf8String(0); + return s.getString(0); } } } @@ -1526,14 +1526,14 @@ public final static String strftime_l(@size_t long maxsize, String format, Tm ti public final static String strptime(String buf, String format, Tm tm) { try (Arena arena = Arena.ofConfined()) { MemorySegment _format = arena.allocate(format.length() + 1); - _format.setUtf8String(0, format); + _format.setString(0, format); MemorySegment _buf = arena.allocate(buf.length() + 1); - _buf.setUtf8String(0, buf); + _buf.setString(0, buf); final MemorySegment result = strptime.invoke_MA__A_A_P(_buf, _format, tm); if (result.address() == 0L) { return null; } else { - return result.getUtf8String(0); + return result.getString(0); } } } @@ -1691,7 +1691,7 @@ public final static String[] tzname() { final String[] result = new String[TZNAME_ENTRIES]; for (int i = 0; i < TZNAME_ENTRIES; i++) { // its a string so we do not know the size in advance so use Long.MAX_VALUE... TODO set saveguards??? - result[i] = tzname.get(ValueLayout.ADDRESS.withTargetLayout(MemoryLayout.paddingLayout(Long.MAX_VALUE)), i * ValueLayout.ADDRESS.byteSize()).getUtf8String(0); + result[i] = tzname.get(ValueLayout.ADDRESS.withTargetLayout(MemoryLayout.paddingLayout(Long.MAX_VALUE)), i * ValueLayout.ADDRESS.byteSize()).getString(0); } return result; } diff --git a/de.ibapl.jnhw.syscall.linux/pom.xml b/de.ibapl.jnhw.syscall.linux/pom.xml index 880df4e3..cd82367c 100644 --- a/de.ibapl.jnhw.syscall.linux/pom.xml +++ b/de.ibapl.jnhw.syscall.linux/pom.xml @@ -37,7 +37,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} diff --git a/de.ibapl.jnhw.winapi/pom.xml b/de.ibapl.jnhw.winapi/pom.xml index 52ed4575..98952253 100644 --- a/de.ibapl.jnhw.winapi/pom.xml +++ b/de.ibapl.jnhw.winapi/pom.xml @@ -50,7 +50,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} diff --git a/it/hello-world-async-io/src/main/java/de/ibapl/jnhw/it/hello_world_async_io/App.java b/it/hello-world-async-io/src/main/java/de/ibapl/jnhw/it/hello_world_async_io/App.java index 80f8b2c3..db04f558 100644 --- a/it/hello-world-async-io/src/main/java/de/ibapl/jnhw/it/hello_world_async_io/App.java +++ b/it/hello-world-async-io/src/main/java/de/ibapl/jnhw/it/hello_world_async_io/App.java @@ -37,7 +37,7 @@ public static void main(String[] args) throws Exception { try (Arena arena = Arena.ofConfined()) { String STRING_TO_WRITE = "\n\t\tHello World! - AIO from POSIX\n\n"; final MemorySegment aioBuffer = arena.allocate(STRING_TO_WRITE.length() + 1, 1); - aioBuffer.setUtf8String(0, STRING_TO_WRITE); + aioBuffer.setString(0, STRING_TO_WRITE); final File file = File.createTempFile("JNHW-Win-aio", "txt"); if (MultiarchTupelBuilder.getOS() == OS.WINDOWS) { diff --git a/it/jnhw-jna-jnr/pom.xml b/it/jnhw-jna-jnr/pom.xml index 4c0fca2c..f0736121 100644 --- a/it/jnhw-jna-jnr/pom.xml +++ b/it/jnhw-jna-jnr/pom.xml @@ -20,12 +20,12 @@ com.github.jnr jnr-ffi - 2.2.13 + 2.2.16 net.java.dev.jna jna - 5.12.1 + 5.14.0 diff --git a/pom.xml b/pom.xml index 77f91589..1cf7ef31 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ - 21 - 21 + 22 + 22 UTF-8 de.ibapl.jnhw.common.util.NativeProvider @@ -172,7 +172,7 @@ - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} @@ -180,7 +180,7 @@ exec-maven-plugin 3.2.0 - ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider} --enable-preview + ${commandLineArg.ChooseVM} ${commandLineArg.NativeProvider}