-
Bug
-
Resolution: Fixed
-
P3
-
None
-
repo-panama
-
generic
-
generic
File: t.h
struct Point2D {
int i, j;
};
struct Point {
int k;
struct Point2D point2d;
};
struct Point func(void);
File: t.c
#include "t.h"
struct Point point = { 44, { 567, 33 } };
struct Point func(void) {
return point;
}
File: Main.java
import static org.acme.t_h.*;
class Main {
public static void main(String[] args) {
System.out.println(CPoint.$LAYOUT());
System.out.println(func());
}
}
File: compile.sh
cc -shared -o libt.dylib t.c
jextract -t org.acme -l t t.h
javac --add-modules jdk.incubator.foreign Main.java
File: run.sh
java --add-modules jdk.incubator.foreign -Dforeign.restricted=permit Main
When running, the above results in the following stack trace:
java.lang.BootstrapMethodError: bootstrap method initialization exception
at org.acme.t_h.func(t_h.java:20)
at Main.main(Main.java:6)
Caused by: java.lang.BootstrapMethodError: bootstrap method initialization exception
at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:194)
at java.base/java.lang.invoke.ConstantBootstraps.makeConstant(ConstantBootstraps.java:72)
at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstantImpl(MethodHandleNatives.java:326)
at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstant(MethodHandleNatives.java:318)
at org.acme.t_h$constants.func$MH(Unknown Source)
at org.acme.t_h.func(t_h.java:18)
... 1 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger$StorageCalculator.structStorages(CallArranger.java:262)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger$BoxBindingCalculator.getBindings(CallArranger.java:368)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.getBindings(CallArranger.java:111)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.arrangeDowncall(CallArranger.java:130)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.SysVx64ABI.downcallHandle(SysVx64ABI.java:61)
at org.acme.RuntimeHelper.lambda$downcallHandle$2(RuntimeHelper.java:62)
struct Point2D {
int i, j;
};
struct Point {
int k;
struct Point2D point2d;
};
struct Point func(void);
File: t.c
#include "t.h"
struct Point point = { 44, { 567, 33 } };
struct Point func(void) {
return point;
}
File: Main.java
import static org.acme.t_h.*;
class Main {
public static void main(String[] args) {
System.out.println(CPoint.$LAYOUT());
System.out.println(func());
}
}
File: compile.sh
cc -shared -o libt.dylib t.c
jextract -t org.acme -l t t.h
javac --add-modules jdk.incubator.foreign Main.java
File: run.sh
java --add-modules jdk.incubator.foreign -Dforeign.restricted=permit Main
When running, the above results in the following stack trace:
java.lang.BootstrapMethodError: bootstrap method initialization exception
at org.acme.t_h.func(t_h.java:20)
at Main.main(Main.java:6)
Caused by: java.lang.BootstrapMethodError: bootstrap method initialization exception
at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:194)
at java.base/java.lang.invoke.ConstantBootstraps.makeConstant(ConstantBootstraps.java:72)
at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstantImpl(MethodHandleNatives.java:326)
at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstant(MethodHandleNatives.java:318)
at org.acme.t_h$constants.func$MH(Unknown Source)
at org.acme.t_h.func(t_h.java:18)
... 1 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger$StorageCalculator.structStorages(CallArranger.java:262)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger$BoxBindingCalculator.getBindings(CallArranger.java:368)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.getBindings(CallArranger.java:111)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.arrangeDowncall(CallArranger.java:130)
at jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.SysVx64ABI.downcallHandle(SysVx64ABI.java:61)
at org.acme.RuntimeHelper.lambda$downcallHandle$2(RuntimeHelper.java:62)