Hi, On Wed, 2017-06-07 at 02:10 +0200, John Paul Adrian Glaubitz wrote: > Hi! > > I'm still working on fixing OpenJDK-9 on Linux/sparc64 and I'm currently > running into something which should be a trivial Makefile issue which > is a linker problem (see for the paste below, full log in [1]). > > Now, the problem obviously happens on SPARC only because it has its own > custom implementation of the memset_with_concurrent_readers() function > in ./src/cpu/sparc/vm/memset_with_concurrent_readers_sparc.cpp, the > other platforms use > ./src/share/vm/gc/shared/memset_with_concurrent_readers.hpp. > > From the full build log, it's obvious that > memset_with_concurrent_readers_sparc.cpp > is being compiled earlier, but it's apparently missing on the linker command > line later. > > I have been trying to understand the hand-written Makefiles but I can't > seem to find the place which I need to patch. > > Does anyone who is more familiar with the build system have an idea > where to look?
This is likely a question for build-dev (CC). They might have some pointers. Thanks, Severin > Thanks, > Adrian > > > [1] http://people.debian.org/~glaubitz/openjdk-9_9~b170-2_sparc64.build.gz > > === Output from failing command(s) repeated here === > /usr/bin/printf "* For target > hotspot_variant-zero_libjvm_gtest_objs_BUILD_GTEST_LIBJVM_link:\n" > * For target hotspot_variant-zero_libjvm_gtest_objs_BUILD_GTEST_LIBJVM_link: > (/bin/grep -v -e "^Note: including file:" < > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs/hotspot_variant-zero_libjvm_gtest_objs_BUILD_GTEST_LIBJVM_link.log > || true) | /usr/bin/head -n 12 > /<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/gtest/objs/test_memset_with_concurrent_readers.o: > In function > `gc_memset_with_concurrent_readers_test_Test::TestBody()': > ./src/hotspot/make/./src/hotspot/test/native/gc/shared/test_memset_with_concurrent_readers.cpp:66: > undefined reference to `memset_with_concurrent_readers(void*, > int, unsigned long)' > /<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/objs/blockOffsetTable.o: > In function `BlockOffsetSharedArray::fill_range(unsigned long, unsigned long, > unsigned char)': > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > /<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/objs/blockOffsetTable.o:./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > more undefined references to `memset_with_concurrent_readers(void*, int, > unsigned long)' follow > collect2: error: ld returned 1 exit status > if test `/usr/bin/wc -l < > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs/hotspot_variant-zero_libjvm_gtest_objs_BUILD_GTEST_LIBJVM_link.log` > -gt 12; then > /bin/echo " ... (rest of output omitted)" ; fi > /usr/bin/printf "* For target > hotspot_variant-zero_libjvm_objs_BUILD_LIBJVM_link:\n" > * For target hotspot_variant-zero_libjvm_objs_BUILD_LIBJVM_link: > (/bin/grep -v -e "^Note: including file:" < > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_BUILD_LIBJVM_link.log > || > true) | /usr/bin/head -n 12 > /<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/objs/blockOffsetTable.o: > In function `BlockOffsetSharedArray::fill_range(unsigned long, unsigned long, > unsigned char)': > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > ./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > undefined reference to `memset_with_concurrent_readers(void*, int, unsigned > long)' > /<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/objs/blockOffsetTable.o:./src/hotspot/make/./src/hotspot/src/share/vm/gc/shared/blockOffsetTable.hpp:159: > more undefined references to `memset_with_concurrent_readers(void*, int, > unsigned long)' follow > collect2: error: ld returned 1 exit status > if test `/usr/bin/wc -l < > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_BUILD_LIBJVM_link.log` > -gt 12; then /bin/echo " > ... (rest of output omitted)" ; fi > /usr/bin/printf "\n* All command lines available in > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs.\n" > > * All command lines available in > /<<PKGBUILDDIR>>/build-zero/make-support/failure-logs. > /usr/bin/printf "=== End of repeated output ===\n" > === End of repeated output === > if /bin/grep -q "recipe for target .* failed" > /<<PKGBUILDDIR>>/build-zero/build.log 2> /dev/null; then /usr/bin/printf > "\n=== Make failed targets repeated here > ===\n" ; /bin/grep "recipe for target .* failed" > /<<PKGBUILDDIR>>/build-zero/build.log ; /usr/bin/printf "=== End of repeated > output ===\n" ; /usr/bin/printf > "\nHint: Try searching the build log for the name of the first failed > target.\n" ; else /usr/bin/printf "\nNo indication of failed target found.\n" > ; > /usr/bin/printf "Hint: Try searching the build log for '] Error'.\n" ; fi > > === Make failed targets repeated here === > lib/CompileJvm.gmk:212: recipe for target > '/<<PKGBUILDDIR>>/build-zero/support/modules_libs/java.base/server/libjvm.so' > failed > lib/CompileGtest.gmk:64: recipe for target > '/<<PKGBUILDDIR>>/build-zero/hotspot/variant-zero/libjvm/gtest/libjvm.so' > failed > make/Main.gmk:263: recipe for target 'hotspot-zero-libs' failed > === End of repeated output === >