summaryrefslogtreecommitdiff
path: root/debian/patches/dyson-toolchain.patch
blob: dfaecdcc18b90ac7ad0ba3e24ccbe0af46e389ff (plain)
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 +=	\