1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
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/\<VBoxNs[^ ]*$$/&;/p' \
@@ -1434,12 +1429,5 @@
-e 's/\<_fini$$/&;/p' \
-e 's/\<_init$$/&;/p' \
--append $@
- $(QUIET)$(APPEND) $@ '};'
-ifeq ($(KBUILD_TARGET),solaris)
- # Temporary gcc 4.5.2 hack on Solaris which emits unknown mangled symbols for ctors/dtors for certain objects. See @bugref{5838}.
- if $(VBOX_GCC_VERSION_CXX) == 40502
- $(QUIET)$(SED) -re '/^_Z.*[C-D]5E/d' $@ > $@-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 += \
|