--- old/make/lib/LibCommon.gmk 2018-03-23 14:24:08.537158087 +0100 +++ new/make/lib/LibCommon.gmk 2018-03-23 14:24:08.317158089 +0100 @@ -36,8 +36,31 @@ # elegant solution to this. WIN_JAVA_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib -ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx windows), ) - DISABLE_MAPFILES := true +# Tell the compiler not to export any functions unless declared so in +# the source code. On Windows, this is the default and cannot be changed. +# On Mac, we have always exported all symbols, probably due to oversight +# and/or misunderstanding. To emulate this, don't hide any symbols +# by default. +# Also provide an override for non-conformant libraries. +ifeq ($(TOOLCHAIN_TYPE), gcc) + CFLAGS_JDKLIB += -fvisibility=hidden + CXXFLAGS_JDKLIB += -fvisibility=hidden + LDFLAGS_JDKLIB += -Wl,--exclude-libs,ALL + EXPORT_ALL_SYMBOLS := -fvisibility=default +else ifeq ($(TOOLCHAIN_TYPE), clang) + ifneq ($(OPENJDK_TARGET_OS), macosx) + CFLAGS_JDKLIB += -fvisibility=hidden + CXXFLAGS_JDKLIB += -fvisibility=hidden + EXPORT_ALL_SYMBOLS := -fvisibility=default + endif +else ifeq ($(TOOLCHAIN_TYPE), solstudio) + CFLAGS_JDKLIB += -xldscope=hidden + CXXFLAGS_JDKLIB += -xldscope=hidden + EXPORT_ALL_SYMBOLS := -xldscope=global +else ifeq ($(TOOLCHAIN_TYPE), xlc) + CFLAGS_JDKLIB += -qvisibility=hidden + CXXFLAGS_JDKLIB += -qvisibility=hidden + EXPORT_ALL_SYMBOLS := -qvisibility=default endif ################################################################################