[8u] RFR (XS) 8265832: runtime/StackGap/testme.sh fails to compile in 8u

Aleksey Shipilev shade at redhat.com
Fri Apr 23 07:44:12 UTC 2021

This is 8u-specific bug, because in original 11u fix (JDK-8197429) the build is handled by the build 
system itself.

In 8u, however, it fails with:

Compilation flag:
openjdk version "1.8.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-shade_2021_04_22_19_10-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00-fastdebug, mixed mode)
/usr/bin/ld: /tmp/ccj5AhI1.o: in function `create_vm':
exestack-gap.c:(.text+0x103): undefined reference to `JNI_CreateJavaVM'
collect2: error: ld returned 1 exit status
/home/shade/trunks/jdk8u-dev/hotspot/test/runtime/StackGap/testme.sh: 72: ./stack-gap: not found

Ultimately, that is because the link options order matters for this test, as linker would try to 
search for external functions from left to right, so the library containing the definition should 
appear after the source file that uses it. This was apparently lax in older gcc-s, but newer gcc-s 
are breaking with the error above.

This fixes 8u:

diff -r d05490a39074 test/runtime/StackGap/testme.sh
--- a/test/runtime/StackGap/testme.sh   Thu Apr 22 20:27:11 2021 +0200
+++ b/test/runtime/StackGap/testme.sh   Fri Apr 23 09:37:01 2021 +0200
@@ -65,9 +65,10 @@
  # for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation.

  $gcc_cmd -DLINUX ${CFLAGS} -o stack-gap \
      -I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \
      -L${COMPILEJAVA}/jre/lib/${VM_CPU}/${VM_TYPE} \
-    -ljvm -lpthread exestack-gap.c
+    exestack-gap.c \
+    -ljvm -lpthread

  ./stack-gap || exit $?
  ./stack-gap -XX:+DisablePrimordialThreadGuardPages || exit $?

Testing: affected test, now passes


More information about the jdk8u-dev mailing list