-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Describe GraalVM and your environment :
- GraalVM version or commit id if built from source: 19.3.1
- CE or EE: CE
- Build Time or run time failure: build-time
- JDK version: graalvm 19.3.1
- Native compiler information:
Run the following to capture compiler version
- In windows:
cl.exe
- In macOS :
cc -v
- In Linux:
gcc --version
- In windows:
**gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
**
- Native linker information:
Run the following to capture linker version
- In windows:
cl.exe
- In macOS :
cc -Wl,-v
- In Linux:
gcc -Wl,--version
- In windows:
**collect2 version 7.4.0**
- OS and OS Version: ubuntu 18
- Architecture: x64
- The output of
java -Xinternalversion
:
**OpenJDK 64-Bit Server VM (11.0.6+9-jvmci-19.3-b07) for linux-amd64 JRE (11.0.6+9-jvmci-19.3-b07), built on Jan 13 2020 20:43:28 by "buildslave" with gcc 7.3.0
**
Have you verified this issue still happens when using the latest snapshot?
You can find snapshot builds here: https://github.com/graalvm/graalvm-ce-dev-builds/releases
Describe the issue
A clear and concise description of the issue.
Describe the full native-image command
Capture full native-image command by running with the `--verbose` flag e.g.:
native-image --verbose --no-server --shared -H:Name=libhellonative -H:Log=InvokeCC: -cp classes/
Executing [
/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/bin/java \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
-Djava.lang.invoke.stringConcat=BC_SB \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED \
--add-exports \
jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED \
--add-opens \
jdk.internal.vm.compiler/org.graalvm.compiler.debug=ALL-UNNAMED \
--add-opens \
jdk.internal.vm.compiler/org.graalvm.compiler.nodes=ALL-UNNAMED \
--add-opens \
jdk.unsupported/sun.reflect=ALL-UNNAMED \
--add-opens \
java.base/jdk.internal.module=ALL-UNNAMED \
--add-opens \
java.base/jdk.internal.ref=ALL-UNNAMED \
--add-opens \
java.base/jdk.internal.reflect=ALL-UNNAMED \
--add-opens \
java.base/java.io=ALL-UNNAMED \
--add-opens \
java.base/java.lang=ALL-UNNAMED \
--add-opens \
java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens \
java.base/java.lang.invoke=ALL-UNNAMED \
--add-opens \
java.base/java.lang.ref=ALL-UNNAMED \
--add-opens \
java.base/java.net=ALL-UNNAMED \
--add-opens \
java.base/java.nio=ALL-UNNAMED \
--add-opens \
java.base/java.nio.file=ALL-UNNAMED \
--add-opens \
java.base/java.security=ALL-UNNAMED \
--add-opens \
java.base/javax.crypto=ALL-UNNAMED \
--add-opens \
java.base/java.util=ALL-UNNAMED \
--add-opens \
java.base/java.util.concurrent.atomic=ALL-UNNAMED \
--add-opens \
java.base/sun.security.x509=ALL-UNNAMED \
--add-opens \
java.base/jdk.internal.logger=ALL-UNNAMED \
--add-opens \
org.graalvm.sdk/org.graalvm.nativeimage.impl=ALL-UNNAMED \
--add-opens \
org.graalvm.sdk/org.graalvm.polyglot=ALL-UNNAMED \
--add-opens \
org.graalvm.truffle/com.oracle.truffle.polyglot=ALL-UNNAMED \
--add-opens \
org.graalvm.truffle/com.oracle.truffle.api.impl=ALL-UNNAMED \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx13341609160 \
-Duser.country=US \
-Duser.language=en \
-Dorg.graalvm.version=19.3.1 \
-Dorg.graalvm.config=CE \
-Dcom.oracle.graalvm.isaot=true \
--module-path \
/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/truffle/truffle-api.jar \
-javaagent:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/svm.jar \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
-cp \
/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/svm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/graal-llvm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/javacpp-shadowed.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/svm-llvm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/llvm-wrapper-shadowed.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/objectfile.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/pointsto.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/llvm-platform-specific-shadowed.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus \
-watchpid \
13917 \
-imagecp \
/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/svm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/graal-llvm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/javacpp-shadowed.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/svm-llvm.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/llvm-wrapper-shadowed.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/objectfile.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/pointsto.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/builder/llvm-platform-specific-shadowed.jar:/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/library-support.jar:/data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src/classes \
-H:Path=/data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src \
-H:+SharedLibrary \
-H:Name=libhellonative \
-H:Log=InvokeCC: \
-H:CLibraryPath=/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64
]
[libhellonative:13938] classlist: 795.31 ms
[libhellonative:13938] (cap): 448.67 ms
[libhellonative:13938] setup: 1,148.39 ms
[libhellonative:13938] (typeflow): 3,708.11 ms
[libhellonative:13938] (objects): 3,691.40 ms
[libhellonative:13938] (features): 165.94 ms
[libhellonative:13938] analysis: 7,845.74 ms
[libhellonative:13938] (clinit): 89.50 ms
[libhellonative:13938] universe: 292.31 ms
[libhellonative:13938] (parse): 338.44 ms
[libhellonative:13938] (inline): 1,162.03 ms
[libhellonative:13938] (compile): 3,353.02 ms
[libhellonative:13938] compile: 5,273.24 ms
[libhellonative:13938] image: 551.23 ms
[Use -Dgraal.LogFile=<path> to redirect Graal log output to a file.]
[thread:44] scope: ForkJoinPool-4-worker-19
[thread:44] scope: ForkJoinPool-4-worker-19.InvokeCC
Running command: cc -v -o /data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src/libhellonative.so -z noexecstack -Wl,--gc-sections -Wl,--dynamic-list -Wl,/tmp/SVM-13149438972001240237/exported_symbols.list -Wl,-x -shared -L/tmp/SVM-13149438972001240237 -L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib -L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64 /tmp/SVM-13149438972001240237/libhellonative.o /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libnet.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libjava.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libzip.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libnio.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libffi.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libjvm.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libstrictmath.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/liblibchelper.a -lm -lpthread -ldl -lz -lrt
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04.1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' '/data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src/libhellonative.so' '-z' 'noexecstack' '-shared' '-L/tmp/SVM-13149438972001240237' '-L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib' '-L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBpfsHi.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -shared -z relro -o /data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src/libhellonative.so -z noexecstack /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/tmp/SVM-13149438972001240237 -L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib -L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64 -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. --gc-sections --dynamic-list /tmp/SVM-13149438972001240237/exported_symbols.list -x /tmp/SVM-13149438972001240237/libhellonative.o /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libnet.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libjava.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libzip.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/libnio.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libffi.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libjvm.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/libstrictmath.a /data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64/liblibchelper.a -lm -lpthread -ldl -lz -lrt -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-v' '-o' '/data/sys/ssd/svn/sandbox/mapp-graalvmNative/hello-native/src/libhellonative.so' '-z' 'noexecstack' '-shared' '-L/tmp/SVM-13149438972001240237' '-L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib' '-L/data/sys/aux/opt/java/jdk/graalvm-ce-java11-19.3.1/lib/svm/clibraries/linux-amd64' '-mtune=generic' '-march=x86-64'
[libhellonative:13938] write: 103.96 ms
[libhellonative:13938] [total]: 16,145.05 ms
Code snippet or code repository that reproduces the issue
**https://github.com/oracle/graal/blob/master/substratevm/ImplementingNativeMethodsInJavaWithSVM.md**
Steps to reproduce the issue
Please include both build steps as well as run steps
i am trying to reproduce this hello world example.
when i check the shared library:
nm -a libhellonative.so | grep add
the "add" method does not occure.
and consequently:
java -Djava.library.path=. hello.Run
Exception in thread "main" java.lang.UnsatisfiedLinkError: hello/Run.createIsolate()J
at hello.Run.main(Run.java:28)
Expected behavior
i expect that the generated shared library contains a symbol for the native mthod.
but it does not.
Additional context
Details
i tried both variants, with "///" and without:
package hello;
import org.graalvm.nativeimage.c.function.CEntryPoint;
import org.graalvm.word.Pointer;
public class HelloNative
{
/// @CEntryPoint(name="Java_hello_HelloNative_createIsolate", builtin=CEntryPoint.Builtin.CREATE_ISOLATE)
@CEntryPoint(builtin=CEntryPoint.Builtin.CREATE_ISOLATE)
public static native long createIsolate();
/// @CEntryPoint(name="Java_hello_HelloNative_add")
@CEntryPoint
public static int add(Pointer jniEnv, Pointer clazz, @CEntryPoint.IsolateThreadContext long isolateId, int a, int b)
{ return a + b; }
}
javap -c classes/hello/HelloNative.class
Compiled from "HelloNative.java"
public class hello.HelloNative {
public hello.HelloNative();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static native long createIsolate();
public static int add(org.graalvm.word.Pointer, org.graalvm.word.Pointer, long, int, int);
Code:
0: iload 4
2: iload 5
4: iadd
5: ireturn
}
nm -a libhellonative.so | grep add
00000000003115c0 t getInet6Address_ipaddress
00000000003117f0 t getInetAddress_addr
00000000008a3d28 b ia6_ipaddressID
00000000008a3d88 b iac_addressID
000000000031bda0 T Java_sun_nio_fs_UnixNativeDispatcher_readdir
0000000000311be0 T NET_GetPortFromSockaddr
0000000000312d40 T NET_InetAddressToSockaddr
0000000000311a60 T NET_SockaddrEqualsInetAddress
00000000003118b0 T NET_SockaddrToInetAddress
U readdir64@@GLIBC_2.2.5
0000000000311640 t setInet6Address_ipaddress
0000000000311710 t setInetAddress_addr
U sigaddset@@GLIBC_2.2.5