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