Description: we use GNU ld Index: virtualbox/src/libs/xpcom18a4/Makefile.kmk =================================================================== --- virtualbox.orig/src/libs/xpcom18a4/Makefile.kmk 2014-06-04 16:43:30.539514761 +0400 +++ virtualbox/src/libs/xpcom18a4/Makefile.kmk 2014-06-06 17:19:21.388620692 +0400 @@ -32,12 +32,6 @@ XPCOM_C_NAMESPACE_MAP = $(VBOX_PATH_XPCOM_SRC)/xpcom-namespace-cleanup.map ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP VBOX_NM = nm$(HOSTSUFF_EXE) - # At the moment, only Solaris uses the generated map file. GNU ld is smart - # enough to handle symbol wildcards itself. - if1of ($(KBUILD_TARGET), solaris) - XPCOM_C_NAMESPACE_MAP = $(PATH_TARGET)/xpcom-namespace-cleanup.map - OTHER_CLEAN += $(XPCOM_C_NAMESPACE_MAP) - endif endif # @todo check whether VBoxXPCOMIPCC.so or VBoxXPCOMIPCD contain undefined @@ -953,8 +947,8 @@ ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP VBoxXPCOM_LDFLAGS.linux = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP) VBoxXPCOM_LNK_DEPS.linux += $(XPCOM_C_NAMESPACE_MAP) - VBoxXPCOM_LDFLAGS.solaris = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP) - VBoxXPCOM_LNK_DEPS.solaris+= $(XPCOM_C_NAMESPACE_MAP) + VBoxXPCOM_LDFLAGS.solaris = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP) + VBoxXPCOM_LNK_DEPS.solaris += $(XPCOM_C_NAMESPACE_MAP) endif VBoxXPCOM_SOURCES = \ xpcom/build/nsXPComInit.cpp \ @@ -998,7 +992,7 @@ -Wl,--no-whole-archive endif -VBoxXPCOM_LDFLAGS.solaris += -Wl,-z,allextract \ +VBoxXPCOM_LDFLAGS.solaris += -Wl,--whole-archive \ $(VBox-xpcom-typelib_1_TARGET) \ $(VBox-xpcom-string_1_TARGET) \ $(VBox-xpcom-base_1_TARGET) \ @@ -1011,7 +1005,7 @@ $(VBox-xpcom-proxy_1_TARGET) \ $(VBox-xpcom-nspr_1_TARGET) \ $(VBoxXPCOMGlue_s_1_TARGET) \ - -Wl,-z,defaultextract + -Wl,--no-whole-archive # EF heap #VBoxXPCOM_LIBS += $(LIB_RUNTIME_EF) @@ -1038,7 +1032,7 @@ $(VBox-xpcom-nspr-x86_1_TARGET) \ $(VBoxXPCOMGlue_s-x86_1_TARGET) -ifeq ($(filter-out freebsd linux netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld. +ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # gnu ld. VBoxXPCOM-x86_LDFLAGS = -Wl,--whole-archive \ $(VBox-xpcom-typelib-x86_1_TARGET) \ $(VBox-xpcom-string-x86_1_TARGET) \ @@ -1419,12 +1413,13 @@ # $(PATH_TARGET)/xpcom-namespace-cleanup.map foo.map: $$(VBoxXPCOM_LIBS) $$(VBoxXPCOM_OBJS_) $(call MSG_L1, Creating linker map $@ for scrubbing the symbol namespace) - $(QUIET)$(APPEND) -t $@ '{ local: *; global: ' + $(QUIET)$(APPEND) -t $@ '{ global: ' $(QUIET)$(VBOX_NM) -p -g $^ \ | $(SED) -n \ -e '/^$$/b' \ -e '/:$$/b' \ -e '/ U /b' \ + -e '/ u /b' \ -e 's/^[^ ]* [A-Z] \(.*\)$$/\1/' \ -e 's/\<_Z[^ ]*$$/&;/p' \ -e 's/\ $@-sedtmp - $(QUIET)$(MV) $@-sedtmp $@ - endif -endif + $(QUIET)$(APPEND) $@ 'local:*;};' Index: virtualbox/Config.kmk =================================================================== --- virtualbox.orig/Config.kmk 2014-06-05 10:50:38.142998443 +0400 +++ virtualbox/Config.kmk 2014-06-06 17:18:14.875049424 +0400 @@ -3605,7 +3605,7 @@ TEMPLATE_VBOXR3EXE_LDFLAGS.sparc32 = -m32 TEMPLATE_VBOXR3EXE_LDFLAGS.sparc64 = -m64 TEMPLATE_VBOXR3EXE_LDFLAGS.linux = -Wl,-z,noexecstack $(VBOX_LD_as_needed) -TEMPLATE_VBOXR3EXE_LDFLAGS.solaris = -Wl,-z,ignore # same as VBOX_LD_as_needed +TEMPLATE_VBOXR3EXE_LDFLAGS.solaris = -Wl,-z,noexecstack $(VBOX_LD_as_needed) ifeq ($(KBUILD_TARGET),linux) TEMPLATE_VBOXR3EXE_LIBS = pthread m rt dl @@ -4233,7 +4233,7 @@ $(warning Warning: VBOX Build: Target $(KBUILD_TARGET) is not officially supported!) TEMPLATE_VBOXMAINEXE_LIBS = endif -TEMPLATE_VBOXMAINEXE_LDFLAGS.solaris = -Wl,-z,ignore # Same as VBOX_LD_as_needed. +TEMPLATE_VBOXMAINEXE_LDFLAGS.solaris = $(VBOX_LD_as_needed) ifdef VBOX_WITH_RUNPATH TEMPLATE_VBOXMAINEXE_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' else ifdef VBOX_WITH_RELATIVE_RUNPATH @@ -4694,7 +4694,7 @@ /usr/local/lib endif ifeq ($(KBUILD_TARGET),solaris) - TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.solaris = -Wl,-z,ignore # Same as VBOX_LD_as_needed. + TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.solaris = $(VBOX_LD_as_needed) TEMPLATE_VBOXQT4GUIEXE_LIBS += \ rt socket nsl endif Index: virtualbox/src/VBox/VMM/Makefile.kmk =================================================================== --- virtualbox.orig/src/VBox/VMM/Makefile.kmk 2014-06-04 16:43:29.611286764 +0400 +++ virtualbox/src/VBox/VMM/Makefile.kmk 2014-06-06 17:18:09.828614199 +0400 @@ -279,7 +279,7 @@ VBoxVMM_LIBS.win = $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib VBoxVMM_LDFLAGS.linux = -Wl,--no-undefined VBoxVMM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxVMM.dylib -VBoxVMM_LDFLAGS.solaris = -mimpure-text +VBoxVMM_LDFLAGS.solaris = -Wl,--no-undefined # SSM wish to know the build type, host os and arch. VMMR3/SSM.cpp_DEFS += \