Questions about including a library for a JTREG native test being built in JPRT

Gerald Thornbrugh gerald.thornbrugh at oracle.com
Tue May 17 13:26:37 UTC 2016


Hi Everyone

I am trying to fix JDK-8144278 which is a bug to convert a "c" source 
file test from being built at test run time
to being built and included in the test bundle. The test relies on the 
"jvm" library to call JVM functions from a
"c" program.

Here are my changes to JtregNative.gmk:

diff -r 13a7f3426b89 make/test/JtregNative.gmk
--- a/make/test/JtregNative.gmk Thu Apr 14 20:43:16 2016 -0700
+++ b/make/test/JtregNative.gmk Mon May 09 07:51:26 2016 -0700
@@ -59,6 +59,15 @@
      $(HOTSPOT_TOPDIR)/test/runtime/ThreadSignalMask
  endif

+ifeq ($(OPENJDK_TARGET_OS), linux)
+BUILD_HOTSPOT_JTREG_NATIVE_SRC += \
+    $(HOTSPOT_TOPDIR)/test/runtime/StackGuardPages
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), linux)
+    BUILD_HOTSPOT_JTREG_EXECUTABLES_LDFLAGS_exeinvoke := -ljvm -lpthread
+endif
+
  ifeq ($(TOOLCHAIN_TYPE), solstudio)
      BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_liboverflow := -lc
  endif



The current test sets LD_LIBRARY_PATH like this:

LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${VM_CPU}/${VM_TYPE}:${TESTJAVA}/lib/${VM_CPU}/${VM_TYPE}:/usr/lib:$LD_LIBRARY_PATH


Here is the JPRT job:

http://scaaa637.us.oracle.com//archive/2016/05/2016-05-09-131846.gthornbr.jdk9

It looks like when the "-ljvm" option is being specified at link time 
correctly but the "jvm" library cannot be found (see the red text below).

Linking executable invoke
( /opt/jprt/jib-data/install/jpg/infra/builddeps/devkit-linux_x64/gcc4.9.2-OEL6.4+1.0/devkit-linux_x64-gcc4.9.2-OEL6.4+1.0.tar.gz/bin/gcc -Wl,-z,defs -Wl,-O1 -Wl,--allow-shlib-undefined -ljvm -lpthread --sysroot=/opt/jprt/jib-data/install/jpg/infra/builddeps/devkit-linux_x64/gcc4.9.2-OEL6.4+1.0/devkit-linux_x64-gcc4.9.2-OEL6.4+1.0.tar.gz/x86_64-unknown-linux-gnu/sysroot -o /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/bin/invoke /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/support/exeinvoke/exeinvoke.o > >(/usr/bin/tee /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/support/exeinvoke/BUILD_TEST_invoke_link.log) 2> >(/usr/bin/tee /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/support/exeinvoke/BUILD_TEST_invoke_link.log >&2) || ( exitcode=$? && /usr/bin/cp /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/support/exeinvoke/BUILD_TEST_invoke_link.log /scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/make-support/failure-logs/support_test_hotspot_jtreg_native_support_exeinvoke_BUILD_TEST_invoke_link.log && exit $exitcode ) )
JtregNative.gmk:85: recipe for target '/scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/bin/invoke' failed
make[3]: Leaving directory '/scratch/opt/jprt/T/P1/131846.gthornbr/s/hotspot/make/test'
make/Main.gmk:377: recipe for target 'build-test-hotspot-jtreg-native' failed
/scratch/opt/jprt/jib-data/install/jpg/infra/builddeps/devkit-linux_x64/gcc4.9.2-OEL6.4+1.0/devkit-linux_x64-gcc4.9.2-OEL6.4+1.0.tar.gz/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/ld: cannot find -ljvm
collect2: error: ld returned 1 exit status
make[3]: *** [/scratch/opt/jprt/T/P1/131846.gthornbr/s/build/linux-x64/support/test/hotspot/jtreg/native/bin/invoke] Error 1
make[2]: *** [build-test-hotspot-jtreg-native] Error 1
make[2]: *** Waiting for unfinished jobs....


So it looks like LD_LIBRARY_PATH needs to include the jvm library.

Is there a way I can do this  in the hotspot/make/test/JtregNative.gmk file?

What is the JPRT path I need to use to include the jvm library?

Thanks!

Jerry



More information about the build-dev mailing list