Zero fails to build on SPARC again, similar to JDK-8186578

Erik Joelsson erik.joelsson at oracle.com
Tue Apr 10 16:54:11 UTC 2018


I've found the problem. In JvmFeatures.gmk we have:

ifeq ($(call check-jvm-feature, zero), true)
   JVM_CFLAGS_FEATURES += -DZERO -DCC_INTERP 
-DZERO_LIBARCH='"$(OPENJDK_TARGET_CPU_LEGACY_LIB)"' $(LIBFFI_CFLAGS)
   JVM_LIBS_FEATURES += $(LIBFFI_LIBS)
   ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
     BUILD_LIBJVM_EXTRA_FILES := 
$(TOPDIR)/src/hotspot/cpu/sparc/memset_with_concurrent_readers_sparc.cpp
   endif
endif

The BUILD_LIBJVM_EXTRA_FILES is implicitly trying to set the EXTRA_FILES 
argument to the BUILD_LIBJVM SetupNativeCompilation call. This used to 
work because there was no setting of that parameter in the actual call. 
In a recent change, that parameter is not set to something else, 
overriding the assignment above.

To fix this, you need to add $(BUILD_LIBJVM_EXTRA_FILES) to the 
EXTRA_FILES line in CompileJvm.gmk.

/Erik


On 2018-04-10 04:58, John Paul Adrian Glaubitz wrote:
> On 04/10/2018 01:37 PM, John Paul Adrian Glaubitz wrote:
>> @buildd-dev:
>>
>> I need to build memset_with_concurrent_readers_sparc.cpp for Zero on 
>> SPARC as
>> the Zero build now bails out with linker errors:
> Add the source file in question to EXTRA_FILES:
>
> glaubitz at deb4g:/srv/glaubitz/hs$ hg diff
> diff -r b3c09ab95c1a make/hotspot/lib/CompileGtest.gmk
> --- a/make/hotspot/lib/CompileGtest.gmk Tue Apr 10 12:21:58 2018 +0200
> +++ b/make/hotspot/lib/CompileGtest.gmk Tue Apr 10 14:57:05 2018 +0300
> @@ -71,7 +71,8 @@
>      EXCLUDES := $(JVM_EXCLUDES), \
>      EXCLUDE_FILES := gtestLauncher.cpp, \
>      EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
> -    EXTRA_FILES := $(GTEST_FRAMEWORK_SRC)/src/gtest-all.cc, \
> +    EXTRA_FILES := $(GTEST_FRAMEWORK_SRC)/src/gtest-all.cc \
> + 
> $(TOPDIR)/src/hotspot/cpu/sparc/memset_with_concurrent_readers_sparc.cpp, 
> \
>      EXTRA_OBJECT_FILES := $(filter-out %/operator_new$(OBJ_SUFFIX), \
>          $(BUILD_LIBJVM_ALL_OBJS)), \
>      CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
> @@ -109,7 +110,8 @@
>      NAME := gtestLauncher, \
>      TYPE := EXECUTABLE, \
>      OUTPUT_DIR := $(JVM_OUTPUTDIR)/gtest, \
> -    EXTRA_FILES := $(GTEST_LAUNCHER_SRC), \
> +    EXTRA_FILES := $(GTEST_LAUNCHER_SRC) \
> + 
> $(TOPDIR)/src/hotspot/cpu/sparc/memset_with_concurrent_readers_sparc.cpp, 
> \
>      OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/launcher-objs, \
>      CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
>          -I$(GTEST_FRAMEWORK_SRC)/include, \
> glaubitz at deb4g:/srv/glaubitz/hs$
>
> Causes the object files to be built. But for some reason, the linker 
> is not
> picking up those object files even though they are located in the object
> directories of gtest:
>
> glaubitz at deb4g:/srv/glaubitz/hs$ find . -name 
> "memset_with_concurrent_readers_sparc.o"
> ./build/linux-sparcv9-normal-zero-release/hotspot/variant-zero/libjvm/gtest/objs/memset_with_concurrent_readers_sparc.o 
>
> ./build/linux-sparcv9-normal-zero-release/hotspot/variant-zero/libjvm/gtest/launcher-objs/memset_with_concurrent_readers_sparc.o 
>
> glaubitz at deb4g:/srv/glaubitz/hs$
>
> Adrian
>



More information about the build-dev mailing list