Index: emulators/virtualbox-ose/Makefile =================================================================== --- emulators/virtualbox-ose/Makefile +++ emulators/virtualbox-ose/Makefile @@ -3,7 +3,7 @@ PORTNAME= virtualbox-ose PORTVERSION= 5.2.34 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= emulators MASTER_SITES= https://download.oracle.com/virtualbox/${PORTVERSION}/ DISTFILES= VirtualBox-${PORTVERSION}${EXTRACT_SUFX} ${GUESTADDITIONS} @@ -30,13 +30,8 @@ WRKSRC= ${WRKDIR}/VirtualBox-${PORTVERSION} ONLY_FOR_ARCHS= i386 amd64 -USES= cpe gnome iconv pkgconfig ssl tar:bzip2 +USES= compiler:c++14-lang cpe gnome iconv pkgconfig ssl tar:bzip2 USE_GNOME= libidl libxml2 -# machine/atomic.h may use features that are only available in GCC9. This is -# a workaround, anyways- we should be expressing USES= compiler:c++14-lang, but -# contemporary clang miscompiles virtualbox in some fashion and yields runtime -# breakage. -USE_GCC= any HAS_CONFIGURE= yes CONFIGURE_ARGS= --disable-java --passive-mesa Index: emulators/virtualbox-ose/files/patch-Config.kmk =================================================================== --- emulators/virtualbox-ose/files/patch-Config.kmk +++ emulators/virtualbox-ose/files/patch-Config.kmk @@ -74,7 +74,18 @@ # branding VBOX_BRAND_LICENSE_HTML := $(PATH_ROOT)/doc/License-gpl-2.0.html VBOX_BRAND_LICENSE_RTF := $(PATH_ROOT)/doc/License-gpl-2.0.rtf -@@ -4158,6 +4154,7 @@ ifdef VBOX_WITH_RAW_MODE +@@ -2538,6 +2534,10 @@ ifeq ($(KBUILD_HOST),win) ## @todo can drop this now, + # This isn't important (yet) on windows, so cook the result until + # cygwin is feeling better. + VBOX_GCC_VERSION := $(int-add $(int-mul 10000, 3), $(int-mul 100, 3), 3) ++else ifeq($(KBUILD_HOST,freebsd)) ++ # At a minimum, we'll be building with GCC 4.2 on FreeBSD. LLVM will always ++ # pose as GCC 4.2 anyways, so this seems safe. ++ VBOX_GCC_VERSION := $(int-add $(int-mul 10000, 4), $(int-mul 100, 2), 0) + else + # This is kind of bad, the returned string needs to be re-evaluated before use. + # The reason for this hack is that the windows kmk_ash cannot deal with $((1+1)). +@@ -4158,6 +4158,7 @@ ifdef VBOX_WITH_RAW_MODE TEMPLATE_VBoxRc_TOOL = $(VBOX_GCC32_TOOL) TEMPLATE_VBoxRc_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) TEMPLATE_VBoxRc_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_IPRT_FMT_CHECK) @@ -82,7 +93,7 @@ ifeq ($(KBUILD_TARGET),solaris) TEMPLATE_VBoxRc_LDFLAGS = -r else -@@ -4299,6 +4296,7 @@ ifeq ($(VBOX_LDR_FMT),elf) +@@ -4299,6 +4300,7 @@ ifeq ($(VBOX_LDR_FMT),elf) TEMPLATE_VBoxR0_TOOL = $(VBOX_GCC_TOOL) TEMPLATE_VBoxR0_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK) TEMPLATE_VBoxR0_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) @@ -90,16 +101,45 @@ TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables -ffreestanding TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables ifeq ($(KBUILD_TARGET),solaris) -@@ -4623,7 +4621,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ - -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \ +@@ -4580,7 +4582,7 @@ ifeq ($(KBUILD_TARGET),freebsd) + # x86 FreeBSD (6.2 or something): + # cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE \ + # -nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include \ +-# -finline-limit=8000 -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 \ ++# -fno-common -mno-align-long-strings \ + # -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs \ + # -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions \ + # -std=c99 -c ../my.c +@@ -4591,7 +4593,7 @@ ifeq ($(KBUILD_TARGET),freebsd) + # + # AMD64 FreeBSD (7.1): + # cc -O2 -fno-strict-aliasing -pipe -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc -I. -I@ -I@/contrib/altq \ +-# -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common \ ++# --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common \ + # -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \ + # -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding \ + # -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign \ +@@ -4620,16 +4622,16 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ + $(VBOX_GCC_WARN) -Wpointer-arith -Winline $(VBOX_GCC_Wno-pointer-sign) $(VBOX_GCC_fdiagnostics-show-option) \ + -Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \ + -Wimplicit-function-declaration -Werror-implicit-function-declaration \ +- -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \ ++ -O2 -ffreestanding -fno-strict-aliasing -fno-common \ $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ -nostdinc -std=c99 -TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -+TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 ++TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 --param inline-unit-growth=100 --param large-function-growth=1000 \ -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \ -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef -@@ -4656,7 +4654,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS + TEMPLATE_VBOXR0DRV_CXXFLAGS = -fno-exceptions -fno-rtti \ + $(VBOX_GCC_WARN) -Wpointer-arith -Winline \ +- -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \ ++ -O2 -fno-strict-aliasing -fno-common \ + $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ + -nostdinc + TEMPLATE_VBOXR0DRV_CXXFLAGS.x86 = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86) +@@ -4656,7 +4658,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS | xargs -J% objcopy % $(out) ## Strip debug info (comment out if debugging or something). @@ -108,7 +148,7 @@ endef else # x86 TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld -@@ -4670,7 +4668,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS +@@ -4670,7 +4672,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS | xargs -J% objcopy % $(outbase).kld # Link the final .ko (a shared object). @@ -117,7 +157,47 @@ endef endif # x86 -@@ -4956,10 +4954,18 @@ TEMPLATE_VBOXR3EXE_LIBPATH += \ +@@ -4702,11 +4704,11 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ + $(VBOX_GCC_fdiagnostics-show-option) \ + -Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \ + -Wimplicit-function-declaration -Werror-implicit-function-declaration \ +- -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \ ++ -O2 -ffreestanding -fno-strict-aliasing -fno-common \ + $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ + -nostdinc -std=c99 -msoft-float + TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 \ +- -mpreferred-stack-boundary=2 -mno-mmx -mno-sse -mno-avx \ ++ -mno-mmx -mno-sse -mno-avx \ + -mno-fp-ret-in-387 + TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 --param inline-unit-growth=100 \ + --param large-function-growth=1000 -fno-omit-frame-pointer \ +@@ -4714,7 +4716,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 --param + -fno-asynchronous-unwind-tables -mno-fp-ret-in-387 + TEMPLATE_VBOXR0DRV_CXXFLAGS = -fno-exceptions -fno-rtti \ + $(VBOX_GCC_WARN) -Wpointer-arith -Winline \ +- -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \ ++ -O2 -fno-strict-aliasing -fno-common \ + $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ + -nostdinc -msoft-float + TEMPLATE_VBOXR0DRV_CXXFLAGS.x86 = $(TEMPLATE_VBOXR0DRV_CFLAGS.x86) +@@ -4932,7 +4934,7 @@ TEMPLATE_VBOXR3EXE_LDFLAGS.debug = $(VBOX_GCC_SA + TEMPLATE_VBOXR3EXE_LIBS = pthread m rt dl + else ifeq ($(KBUILD_TARGET),os2) + TEMPLATE_VBOXR3EXE_TOOL = GXX3OMF +-TEMPLATE_VBOXR3EXE_LIBS = socket iconv ++TEMPLATE_VBOXR3EXE_LIBS = socket + else ifeq ($(KBUILD_TARGET),darwin) + TEMPLATE_VBOXR3EXE_TOOL = $(VBOX_GCC_TOOL) + TEMPLATE_VBOXR3EXE_LIBS = +@@ -4949,17 +4951,25 @@ TEMPLATE_VBOXR3EXE_LDFLAGS.darwin.x86 = -read_only_re + else ifeq ($(KBUILD_TARGET),haiku) + TEMPLATE_VBOXR3EXE_TOOL = GXX3 + TEMPLATE_VBOXR3EXE_POST_CMDS = $(VBOX_HAIKU_XRES_SETVER_CMDS) +-TEMPLATE_VBOXR3EXE_LIBS = network iconv stdc++ supc++ ++TEMPLATE_VBOXR3EXE_LIBS = network stdc++ supc++ + TEMPLATE_VBOXR3EXE_LIBPATH += \ + /boot/common/lib + # Haiku uses PIC by default... TEMPLATE_VBOXR3EXE_CFLAGS += -fno-pic TEMPLATE_VBOXR3EXE_CXXFLAGS += -fno-pic TEMPLATE_VBOXR3EXE_LDFLAGS += -fno-pic @@ -137,7 +217,25 @@ /usr/include \ /usr/X11R6/include \ /usr/local/include -@@ -5250,7 +5256,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! +@@ -4978,7 +4988,7 @@ TEMPLATE_VBOXR3EXE_LIBPATH += \ + /usr/X11R7/lib + else ifeq ($(KBUILD_TARGET),solaris) + TEMPLATE_VBOXR3EXE_TOOL = GXX3PLAIN +-TEMPLATE_VBOXR3EXE_DEFS += LIBICONV_PLUG _REENTRANT # Avoid the GNU libiconv, for now at least. ++TEMPLATE_VBOXR3EXE_DEFS += LIBICONV_PLUG _REENTRANT # Avoid the GNU lib, for now at least. + TEMPLATE_VBOXR3EXE_LIBS = rt socket + else + $(warning Warning: VBOX Build: Target $(KBUILD_TARGET) is not officially supported!) +@@ -5166,7 +5176,7 @@ else + ifeq ($(KBUILD_TARGET),linux) + TEMPLATE_VBoxR3Static_LIBS += crypt + else if1of ($(KBUILD_TARGET),darwin freebsd) +- TEMPLATE_VBoxR3Static_LIBS += iconv ++ TEMPLATE_VBoxR3Static_LIBS += + else ifeq ($(KBUILD_TARGET),solaris) + TEMPLATE_VBoxR3Static_LIBS += kstat + endif +@@ -5250,7 +5260,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.win.amd64 = $(TEMPLATE_VBOXR3EXE_LDFLAGS.win.amd64) /entry:suplibHardenedWindowsMain TEMPLATE_VBOXR3HARDENEDEXE_LIBS.x86 = $(NOT_SUCH_VARIABLE) TEMPLATE_VBOXR3HARDENEDEXE_LIBS.amd64 = $(NOT_SUCH_VARIABLE) @@ -146,7 +244,16 @@ # We want to keep the RPATH on Solaris to be able to find libgcc_1/libstdc++ within $(VBOX_WITH_RUNPATH) TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS)) TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux)) -@@ -5777,10 +5783,18 @@ TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTI +@@ -5726,7 +5736,7 @@ else # the GCC guys: + TEMPLATE_VBOXMAINEXE_TOOL = $(VBOX_GCC_TOOL) + TEMPLATE_VBOXMAINEXE_CXXFLAGS = -g $(VBOX_GCC_pipe) \ + $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_Wno-multistatement-macros) $(VBOX_GCC_Wno-class-memaccess) -Wshadow \ +- -fshort-wchar -fpermissive -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \ ++ -fshort-wchar -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \ + $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK) + ifdef VBOX_WITH_NO_GCC_WARNING_POLICY + TEMPLATE_VBOXMAINEXE_CXXFLAGS += $(VBOX_GCC_WERR) +@@ -5777,10 +5787,18 @@ TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTI else ifeq ($(KBUILD_TARGET),haiku) TEMPLATE_VBOXMAINEXE_TOOL = GXX3 TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) network stdc++ supc++ @@ -166,7 +273,7 @@ /usr/include \ /usr/X11R6/include \ /usr/local/include -@@ -6319,13 +6333,10 @@ ifdef VBOX_WITH_QTGUI +@@ -6319,13 +6337,10 @@ ifdef VBOX_WITH_QTGUI TEMPLATE_VBOXQTGUIEXE_LIBPATH += \ $(VBOX_LIBPATH_X11) ifeq ($(KBUILD_TARGET),freebsd) @@ -181,8 +288,25 @@ /usr/local/lib endif ifeq ($(KBUILD_TARGET),solaris) -@@ -6548,12 +6559,8 @@ TEMPLATE_VBoxBldProg_LIBPATH += \ +@@ -6506,7 +6521,7 @@ TEMPLATE_VBoxBldProg_LDFLAGS.sparc64 = -m64 + TEMPLATE_VBoxBldProg_LIBS = pthread m rt dl + else ifeq ($(KBUILD_HOST),os2) + TEMPLATE_VBoxBldProg_TOOL = GXX3OMF +-TEMPLATE_VBoxBldProg_LIBS = socket iconv ++TEMPLATE_VBoxBldProg_LIBS = socket + else ifeq ($(KBUILD_HOST),darwin) + TEMPLATE_VBoxBldProg_TOOL = $(VBOX_GCC_TOOL) + if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" || "$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7" +@@ -6541,19 +6556,15 @@ TEMPLATE_VBoxBldProg_LDFLAGS.darwin = $(VBOX_DARW + TEMPLATE_VBoxBldProg_LIBS = + else ifeq ($(KBUILD_HOST),haiku) TEMPLATE_VBoxBldProg_TOOL = GXX3 +-TEMPLATE_VBoxBldProg_LIBS = network iconv ++TEMPLATE_VBoxBldProg_LIBS = network + TEMPLATE_VBoxBldProg_LIBPATH += \ + /boot/common/lib + else if1of ($(KBUILD_HOST), freebsd openbsd) + TEMPLATE_VBoxBldProg_TOOL = GXX3 TEMPLATE_VBoxBldProg_LIBS = pthread TEMPLATE_VBoxBldProg_INCS += \ - /usr/include \ @@ -194,7 +318,39 @@ /usr/local/lib else ifeq ($(KBUILD_HOST),netbsd) TEMPLATE_VBoxBldProg_TOOL = GXX3 -@@ -6954,6 +6961,7 @@ TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \ +@@ -6591,11 +6602,11 @@ TEMPLATE_VBoxAdvBldProg_LIBS = \ + $(TEMPLATE_VBoxBldProg_LIBS) + TEMPLATE_VBoxAdvBldProg_LIBS.darwin = \ + $(TEMPLATE_VBoxAdvBldProg_LIBS) \ +- iconv \ ++ \ + $(TEMPLATE_VBoxBldProg_LIBS.darwin) + TEMPLATE_VBoxAdvBldProg_LIBS.freebsd = \ + $(TEMPLATE_VBoxAdvBldProg_LIBS) \ +- iconv \ ++ \ + rt \ + $(TEMPLATE_VBoxBldProg_LIBS.freebsd) + TEMPLATE_VBoxAdvBldProg_LIBS.linux = \ +@@ -6677,7 +6688,7 @@ TEMPLATE_VBOXGUESTR3EXE_DEFS.linux := $(TEMPLATE_VBOXR + ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux. + TEMPLATE_VBOXGUESTR3EXE_LIBS = pthread rt m dl + else if1of ($(KBUILD_TARGET), darwin freebsd openbsd) +- TEMPLATE_VBOXGUESTR3EXE_LIBS = $(TEMPLATE_VBOXR3EXE_LIBS) iconv ++ TEMPLATE_VBOXGUESTR3EXE_LIBS = $(TEMPLATE_VBOXR3EXE_LIBS) + else ifeq ($(KBUILD_TARGET), solaris) + TEMPLATE_VBOXGUESTR3EXE_LIBS = $(TEMPLATE_VBOXR3EXE_LIBS) nsl + endif +@@ -6891,7 +6902,7 @@ endif + TEMPLATE_VBOXGUESTR3XORGMOD_LIBS = \ + $(VBOX_LIB_VBGL_R3_XORG) + TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.freebsd += \ +- iconv ++ + + + # +@@ -6954,6 +6965,7 @@ TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \ -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.linux = -Wl,--no-as-needed Index: emulators/virtualbox-ose/files/patch-src_libs_xpcom18a4_xpcom_reflect_xptcall_src_md_unix_xptcinvoke__x86__64__linux.cpp =================================================================== --- /dev/null +++ emulators/virtualbox-ose/files/patch-src_libs_xpcom18a4_xpcom_reflect_xptcall_src_md_unix_xptcinvoke__x86__64__linux.cpp @@ -0,0 +1,38 @@ +--- src/libs/xpcom18a4/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp.orig 2019-10-10 18:15:53 UTC ++++ src/libs/xpcom18a4/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp +@@ -143,11 +143,22 @@ XPTC_InvokeByIndex(nsISupports * that, PRUint32 method + if (nr_stack) + nr_stack = (nr_stack + 1) & ~1; + ++#if !defined(VBOX_WITH_GCC_SANITIZER) && !defined(__clang__) + // Load parameters to stack, if necessary + PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8); ++#else ++ typedef struct { PRUint64 stack[20]; } methodStack; ++ if (nr_stack > 20) ++ return NS_ERROR_CALL_FAILED; ++ methodStack stack; ++#endif + PRUint64 gpregs[GPR_COUNT]; + double fpregs[FPR_COUNT]; ++#if !defined(VBOX_WITH_GCC_SANITIZER) && !defined(__clang__) + invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs); ++#else ++ invoke_copy_to_stack(stack.stack, paramCount, params, gpregs, fpregs); ++#endif + + // Load FPR registers from fpregs[] + register double d0 asm("xmm0"); +@@ -205,7 +216,12 @@ XPTC_InvokeByIndex(nsISupports * that, PRUint32 method + methodAddress += 8 * methodIndex; + methodAddress = *((PRUint64 *)methodAddress); + ++#if !defined(VBOX_WITH_GCC_SANITIZER) && !defined(__clang__) + typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64); + PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5); ++#else ++ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, methodStack); ++ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5, stack); ++#endif + return result; + }