Re: RFR(XS) 8161915: Linking gtestLauncher may end up linking with non-gtest libjvm

2016-07-21 Thread Erik Helin
On 2016-07-20, Mikael Gerdin wrote:
> Hi all,
> 
> Please review this small fix to work around a problem where incremental
> builds of hotspot would fail due to the symbol runUnitTests missing.
> 
> The cause for the problem is that the unit tests launcher linker command
> line contains a -L path containing the standard libjvm.so
>  [10] LDFLAGS := -Wl,-z,defs -Wl,-z,now -Wl,-z,relro
> -Wl,--allow-shlib-undefined 
> -L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64
>  
> -L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64/server
> 
>  [11] LDFLAGS_unix := 
> -L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/hotspot/variant-server/libjvm/gtest
> -Wl,-z,origin -Wl,-rpath,\$$ORIGIN
>  [13] LIBS_unix := -ljvm
> 
> This is caused by BUILD_GTEST_LAUNCHER picking up LDFLAGS_TESTEXE which was
> recently modified to include -L path to the standard libjvm.so
> 
> My suggested fix is to instead use LDFLAGS_JDKEXE for the gtest launcher
> since the only difference between them is that TESTEXE appends
> JAVA_BASE_LDFLAGS:
> flags.m4, 687:  LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS"
> 
> Since the fix is only one line, I'll paste it inline here:
> diff --git a/make/lib/CompileGtest.gmk b/make/lib/CompileGtest.gmk
> --- a/make/lib/CompileGtest.gmk
> +++ b/make/lib/CompileGtest.gmk
> @@ -104,7 +104,7 @@
>  -I$(GTEST_FRAMEWORK_SRC)/include, \
>  CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
>  CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
> -LDFLAGS := $(LDFLAGS_TESTEXE), \
> +LDFLAGS := $(LDFLAGS_JDKEXE), \
>  LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call
> SET_SHARED_LIBRARY_ORIGIN), \
>  LDFLAGS_solaris := -library=stlport4, \
>  LIBS_unix := -ljvm, \

Looks good, Reviewed.

Thanks,
Erik

> Testing: JPRT -testset hotspot
> Bug link: https://bugs.openjdk.java.net/browse/JDK-8161915
> 
> Please let me know if there is any further testing I should do before
> pushing this.
> 
> Thanks
> /Mikael


Re: RFR(XS) 8161915: Linking gtestLauncher may end up linking with non-gtest libjvm

2016-07-20 Thread David Holmes

Hi Mikael,

On 20/07/2016 11:54 PM, Mikael Gerdin wrote:

Hi all,

Please review this small fix to work around a problem where incremental
builds of hotspot would fail due to the symbol runUnitTests missing.

The cause for the problem is that the unit tests launcher linker command
line contains a -L path containing the standard libjvm.so
 [10] LDFLAGS := -Wl,-z,defs -Wl,-z,now -Wl,-z,relro
-Wl,--allow-shlib-undefined
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64/server

 [11] LDFLAGS_unix :=
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/hotspot/variant-server/libjvm/gtest
-Wl,-z,origin -Wl,-rpath,\$$ORIGIN
 [13] LIBS_unix := -ljvm

This is caused by BUILD_GTEST_LAUNCHER picking up LDFLAGS_TESTEXE which
was recently modified to include -L path to the standard libjvm.so

My suggested fix is to instead use LDFLAGS_JDKEXE for the gtest launcher
since the only difference between them is that TESTEXE appends
JAVA_BASE_LDFLAGS:
flags.m4, 687:  LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS"

Since the fix is only one line, I'll paste it inline here:
diff --git a/make/lib/CompileGtest.gmk b/make/lib/CompileGtest.gmk
--- a/make/lib/CompileGtest.gmk
+++ b/make/lib/CompileGtest.gmk
@@ -104,7 +104,7 @@
 -I$(GTEST_FRAMEWORK_SRC)/include, \
 CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
 CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
-LDFLAGS := $(LDFLAGS_TESTEXE), \
+LDFLAGS := $(LDFLAGS_JDKEXE), \
 LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call
SET_SHARED_LIBRARY_ORIGIN), \
 LDFLAGS_solaris := -library=stlport4, \
 LIBS_unix := -ljvm, \


This seems like a reasonable solution at least in the short-term. It may 
be that gtest launcher needs it own compiler/linker options independent 
of other "executables" in the build.


Thanks,
David




Testing: JPRT -testset hotspot
Bug link: https://bugs.openjdk.java.net/browse/JDK-8161915

Please let me know if there is any further testing I should do before
pushing this.

Thanks
/Mikael


RFR(XS) 8161915: Linking gtestLauncher may end up linking with non-gtest libjvm

2016-07-20 Thread Mikael Gerdin

Hi all,

Please review this small fix to work around a problem where incremental 
builds of hotspot would fail due to the symbol runUnitTests missing.


The cause for the problem is that the unit tests launcher linker command 
line contains a -L path containing the standard libjvm.so
 [10] LDFLAGS := -Wl,-z,defs -Wl,-z,now -Wl,-z,relro 
-Wl,--allow-shlib-undefined 
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64 
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/support/modules_libs/java.base/amd64/server 

 [11] LDFLAGS_unix := 
-L/home/mgerdin/work/repos/hg/jdk9/hs-rt-work/build/linux-x64-slowdebug/hotspot/variant-server/libjvm/gtest 
-Wl,-z,origin -Wl,-rpath,\$$ORIGIN

 [13] LIBS_unix := -ljvm

This is caused by BUILD_GTEST_LAUNCHER picking up LDFLAGS_TESTEXE which 
was recently modified to include -L path to the standard libjvm.so


My suggested fix is to instead use LDFLAGS_JDKEXE for the gtest launcher 
since the only difference between them is that TESTEXE appends 
JAVA_BASE_LDFLAGS:

flags.m4, 687:  LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS"

Since the fix is only one line, I'll paste it inline here:
diff --git a/make/lib/CompileGtest.gmk b/make/lib/CompileGtest.gmk
--- a/make/lib/CompileGtest.gmk
+++ b/make/lib/CompileGtest.gmk
@@ -104,7 +104,7 @@
 -I$(GTEST_FRAMEWORK_SRC)/include, \
 CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
 CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
-LDFLAGS := $(LDFLAGS_TESTEXE), \
+LDFLAGS := $(LDFLAGS_JDKEXE), \
 LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call 
SET_SHARED_LIBRARY_ORIGIN), \

 LDFLAGS_solaris := -library=stlport4, \
 LIBS_unix := -ljvm, \


Testing: JPRT -testset hotspot
Bug link: https://bugs.openjdk.java.net/browse/JDK-8161915

Please let me know if there is any further testing I should do before 
pushing this.


Thanks
/Mikael