git: b8ff2feb5df7 - main - java/openjdk18: fix build with lld 17
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 12 Nov 2023 20:05:20 UTC
The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/ports/commit/?id=b8ff2feb5df79c0f6c3ac3d8746cc19567a1903b commit b8ff2feb5df79c0f6c3ac3d8746cc19567a1903b Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2023-11-12 20:00:48 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2023-11-12 20:04:01 +0000 java/openjdk18: fix build with lld 17 Building java/openjdk18 with lld 17 results in the following link errors: ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZ21WB_HandshakeWalkStackE16TraceSelfClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZ24WB_HandshakeReadMonitorsE19ReadMonitorsClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZ26WB_AsyncHandshakeWalkStackE16TraceSelfClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZL20reinitialize_itablesvE18ReinitTableClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN12JvmtiEnvBase27check_for_periodic_clean_upEvE28ThreadInsideIterationClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN15G1RemSetSummary6updateEvE11CollectData' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN16SATBMarkQueueSet22set_active_all_threadsEbbE22SetThreadActiveClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN16SATBMarkQueueSet23abandon_partial_markingEvE25AbandonThreadQueueClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN18G1ConcurrentRefine30get_and_reset_refinement_statsEvE12CollectStats' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN19G1DirtyCardQueueSet12abandon_logsEvE23AbandonThreadLogClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN19G1DirtyCardQueueSet16concatenate_logsEvE27ConcatenateThreadLogClosure' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN19G1DirtyCardQueueSet30get_and_reset_refinement_statsEvE12CollectStats' failed: symbol not defined ld: error: version script assignment of 'SUNWprivate_1.1' to symbol '_ZTVZN7Threads25change_thread_claim_tokenEvE11ResetClaims' failed: symbol not defined This is because lld 17 defaults to errors when undefined symbols are referenced in linker version scripts. The problem is due to the Makefile JvmMapfile.gmk, which generates a linker version script. It uses "nm --defined-only" to dump symbols in object files, but this also includes local (hidden) symbols. Add "--extern-only" to make it only dump global symbols. PR: 273753 MFH: 2023Q4 --- .../files/patch-make_hotspot_lib_JvmMapfile.gmk | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/java/openjdk18/files/patch-make_hotspot_lib_JvmMapfile.gmk b/java/openjdk18/files/patch-make_hotspot_lib_JvmMapfile.gmk new file mode 100644 index 000000000000..9ae03810886e --- /dev/null +++ b/java/openjdk18/files/patch-make_hotspot_lib_JvmMapfile.gmk @@ -0,0 +1,20 @@ +--- make/hotspot/lib/JvmMapfile.gmk.orig 2022-07-20 22:54:48 UTC ++++ make/hotspot/lib/JvmMapfile.gmk +@@ -53,7 +53,7 @@ ifeq ($(call isTargetOs, linux), true) + # platform dependent. + + ifeq ($(call isTargetOs, linux), true) +- DUMP_SYMBOLS_CMD := $(NM) --defined-only *.o ++ DUMP_SYMBOLS_CMD := $(NM) --extern-only --defined-only *.o + ifneq ($(FILTER_SYMBOLS_PATTERN), ) + FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)| + endif +@@ -134,7 +134,7 @@ else ifeq ($(call isTargetOs, bsd), true) + if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \ + }' + else +- DUMP_SYMBOLS_CMD := $(NM) --defined-only *.o ++ DUMP_SYMBOLS_CMD := $(NM) --extern-only --defined-only *.o + FILTER_SYMBOLS_AWK_SCRIPT := \ + '{ \ + if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \