git: f24fdd9f8516 - main - emulators/virtualbox-ose{,-kmod,-nox11}-70: Add new ports VirtualBox 7.0.24

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Sun, 02 Feb 2025 23:29:09 UTC
The branch main has been updated by vvd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f24fdd9f85160185dfe981a8bba587246e7db148

commit f24fdd9f85160185dfe981a8bba587246e7db148
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2025-02-02 23:19:31 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2025-02-02 23:19:31 +0000

    emulators/virtualbox-ose{,-kmod,-nox11}-70: Add new ports VirtualBox 7.0.24
    
    General status:
    * VirtualBox 7.1.x is still not fully ported to FreeBSD, so we are
      adding 7.0.x in experimental/test mode.
    * 7.0.x is being tested on hosts of several FreeBSD developers and
      users.
    * As far as we know, 7.0.x has the same system requirements as 6.1.x -
      amd64 with VT-x (we even tested it on Core 2 Duo E6xxx), so after
      confirming stability with more users, 7.0.x is expected to replace
      6.1.x.
    * The following ports also need to be created for this replacement:
      - emulators/virtualbox-ose-additions-70;
      - emulators/virtualbox-ose-additions-nox11-70;
      - www/phpvirtualbox-70.
    * If 7.1.x has the same system requirements, then when we port 7.1.x,
      it will replace 7.0.x.
    
    This patch is a joint effort by several FreeBSD developers and users.
    Thanks to everyone involved!
    
    Changelog:
    https://www.virtualbox.org/wiki/Changelog-7.0
    
    PR:     271146
---
 emulators/virtualbox-ose-70/Makefile               |  57 +--
 emulators/virtualbox-ose-70/distinfo               |  14 +-
 .../virtualbox-ose-70/files/extrapatch-Config.kmk  |   2 +-
 emulators/virtualbox-ose-70/files/patch-Config.kmk | 458 ++++++++++++++-------
 emulators/virtualbox-ose-70/files/patch-configure  |  35 +-
 .../files/patch-include_VBox_sup.h                 |  11 +
 ...-Additions-common-VBoxGuest-VBoxGuest-freebsd.c |  52 ++-
 ...HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt |   8 +-
 ...h-src-VBox-Installer-freebsd-virtualbox.desktop |  10 -
 .../patch-src-VBox-Main-webservice-Makefile.kmk    |  39 --
 ...src_VBox_Additions_freebsd_vboxvfs_Makefile.kmk |  50 ---
 ...h-src_VBox_Additions_x11_VBoxClient_logging.cpp |  10 -
 ...h-src_VBox_Additions_x11_vboxvideo_Makefile.kmk |  15 -
 ...s_x11_x11include_xproto-7.0.18_X11_Xfuncproto.h | 230 -----------
 .../files/patch-src_VBox_Debugger_Makefile.kmk     |  10 -
 .../files/patch-src_VBox_Devices_Makefile.kmk      |  34 +-
 .../patch-src_VBox_Devices_PC_ipxe_Makefile.kmk    |  12 +-
 ...rc_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp |  11 +
 ...rc_VBox_Frontends_VBoxManage_VBoxManageHelp.cpp |  43 --
 ...Box_Frontends_VBoxManage_VBoxManageModifyVM.cpp |  22 +-
 ...atch-src_VBox_Frontends_VirtualBox_Makefile.kmk |  18 -
 .../patch-src_VBox_HostDrivers_Support_SUPDrv.cpp  |  24 +-
 ...h-src_VBox_HostDrivers_Support_freebsd_Makefile |  26 +-
 ...ox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c |  54 ++-
 ..._HostDrivers_Support_freebsd_SUPLib-freebsd.cpp |  11 +
 ...VBox_HostDrivers_Support_freebsd_files__vboxdrv |  26 +-
 ...ch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk |   4 +-
 .../files/patch-src_VBox_Main_Makefile.kmk         |  14 +-
 ...src_VBox_NetworkServices_Dhcpd_VBoxNetDhcpd.cpp |  11 -
 .../patch-src_VBox_RDP_client-1.8.4_Makefile.kmk   |  13 -
 .../files/patch-src_VBox_Runtime_Makefile.kmk      |  12 +
 ...Box_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c |  51 +--
 ...ox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c | 240 +++++------
 ...c_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp |  39 --
 .../files/patch-src_VBox_VMM_VMMR3_PGMPhys.cpp     |  11 -
 .../files/patch-src_VMM_Config.kmk                 |  11 +
 .../virtualbox-ose-70/files/virtualbox.desktop     |  17 +
 emulators/virtualbox-ose-70/pkg-plist              |   6 +-
 emulators/virtualbox-ose-kmod-70/Makefile          |  13 +-
 emulators/virtualbox-ose-kmod-70/distinfo          |   6 +-
 emulators/virtualbox-ose-nox11-70/Makefile         |   6 +-
 41 files changed, 683 insertions(+), 1053 deletions(-)

diff --git a/emulators/virtualbox-ose-70/Makefile b/emulators/virtualbox-ose-70/Makefile
index fdd678179189..b86de1fac4d1 100644
--- a/emulators/virtualbox-ose-70/Makefile
+++ b/emulators/virtualbox-ose-70/Makefile
@@ -1,9 +1,11 @@
 PORTNAME=	virtualbox-ose
-DISTVERSION=	6.1.50
-PORTREVISION?=	8
+DISTVERSION=	7.0.24
+PORTREVISION?=	0
 CATEGORIES=	emulators
 MASTER_SITES=	https://download.virtualbox.org/virtualbox/${DISTVERSION}/:src \
-		LOCAL/bofh/emulators/virtualbox-ose:docs
+		LOCAL/bofh/emulators/virtualbox-ose:docs \
+		LOCAL/vvd:docs
+PKGNAMESUFFIX?=	-70
 DISTFILES=	VirtualBox-${DISTVERSION}${EXTRACT_SUFX}:src \
 		VirtualBox-docs-${DISTVERSION}${EXTRACT_SUFX}:docs
 EXTRACT_ONLY=	VirtualBox-${DISTVERSION}${EXTRACT_SUFX} \
@@ -25,12 +27,13 @@ BUILD_DEPENDS=	gtar:archivers/gtar \
 		xsltproc:textproc/libxslt
 LIB_DEPENDS=	libpng.so:graphics/png \
 		libcurl.so:ftp/curl
-RUN_DEPENDS=	${LOCALBASE}/etc/rc.d/vboxnet:emulators/virtualbox-ose-kmod
+RUN_DEPENDS=	${LOCALBASE}/etc/rc.d/vboxnet:emulators/virtualbox-ose-kmod-70
 
-USES=		compiler:c++14-lang cpe gnome iconv pkgconfig ssl tar:bzip2
+USES=		compiler:c++14-lang cpe gnome iconv qt:5 pkgconfig ssl tar:bzip2
 CPE_VENDOR=	oracle
 CPE_PRODUCT=	vm_virtualbox
 USE_GNOME=	libxml2
+USE_QT=		buildtools:build linguisttools:build
 USE_RC_SUBR=	vboxheadless vboxwatchdog
 
 HAS_CONFIGURE=		yes
@@ -39,10 +42,10 @@ CONFIGURE_ARGS+=	--with-gcc="${CC}" --with-g++="${CXX}"
 
 CONFLICTS_INSTALL=	virtualbox-ose-legacy \
 			virtualbox-ose-nox11-legacy \
-			virtualbox-ose-70 \
-			virtualbox-ose-nox11-70
+			virtualbox-ose \
+			virtualbox-ose-nox11
 
-PORTSCOUT=	limit:^6\.
+PORTSCOUT=	limit:^7\.0\.
 SUB_FILES=	pkg-message
 SUB_LIST=	VBOXDIR=${VBOX_DIR} \
 		VBOX_ETC=${VBOX_ETC} \
@@ -72,7 +75,7 @@ PLIST_SUB=	GUEST_VER=${DISTVERSION} \
 
 SLAVE_PORT?=	no
 
-OPTIONS_DEFINE=		AIO ALSA DBUS DEBUG DOCS GUESTADDITIONS NLS OPUS PULSEAUDIO \
+OPTIONS_DEFINE=		AIO ALSA DBUS DEBUG DOCS GUESTADDITIONS NLS PULSEAUDIO \
 			PYTHON QT5 R0LOGGING UDPTUNNEL VBOXIMG VDE VNC WEBSERVICE VPX X11
 OPTIONS_DEFAULT=	AIO DBUS QT5 UDPTUNNEL VNC WEBSERVICE X11
 .if ${SLAVE_PORT} == no
@@ -87,7 +90,6 @@ AIO_DESC=		Enable Asyncronous IO support (check pkg-message)
 DEBUG_DESC=		Debug symbols, additional logs and assertions
 GUESTADDITIONS_DESC=	Build with Guest Additions
 NLS_DESC=		Native language support (requires QT5)
-OPUS_DESC=		Use libvpx for audio recording (requires VPX)
 QT5_DESC=		Build with QT5 frontend (requires X11)
 R0LOGGING_DESC=		Enable R0 logging (requires DEBUG)
 UDPTUNNEL_DESC=		Build with UDP tunnel support
@@ -103,9 +105,6 @@ DBUS_LIB_DEPENDS=	libdbus-1.so:devel/dbus
 DBUS_CONFIGURE_OFF=	--disable-dbus
 DEBUG_CONFIGURE_ON=	--build-debug
 NLS_IMPLIES=		QT5
-OPUS_IMPLIES=		VPX
-OPUS_LIB_DEPENDS=	libopus.so:audio/opus
-OPUS_CONFIGURE_OFF=	--disable-libopus
 PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
 PULSEAUDIO_CONFIGURE_OFF=	--disable-pulse
 PYTHON_USES=		python
@@ -116,7 +115,7 @@ PYTHON_VARS=		pydistutils_pkgname=vboxapi pydistutils_pkgversion=1.0
 QT5_IMPLIES=		X11
 QT5_USES=		gl qmake:no_env qt:5 xorg
 QT5_USE=		QT=buildtools:build,core,dbus,gui,linguisttools:build,opengl \
-			QT=printsupport,widgets,x11extras XORG=xcb GL=gl
+			QT=printsupport,widgets,x11extras,xml XORG=xcb GL=gl
 QT5_CONFIGURE_ON=	--enable-qt5
 QT5_CONFIGURE_OFF=	--disable-qt
 R0LOGGING_IMPLIES=	DEBUG
@@ -129,8 +128,8 @@ VNC_CONFIGURE_ON=	--enable-vnc
 VPX_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
 VPX_CONFIGURE_OFF=	--disable-libvpx
 WEBSERVICE_BUILD_DEPENDS=	soapcpp2:devel/gsoap
-X11_USES=		sdl xorg
-X11_USE=		SDL=sdl XORG=x11,xcursor,xext,xinerama,xmu,xorgproto,xt
+X11_USES=		gl sdl xorg
+X11_USE=		GL=gl SDL=sdl XORG=x11,xcursor,xext,xinerama,xmu,xorgproto,xt
 X11_CONFIGURE_OFF=	--build-headless
 
 ENV=
@@ -139,9 +138,9 @@ ENV=
 .include <bsd.port.options.mk>
 
 .if ${SLAVE_PORT} == no
-CONFLICTS_INSTALL+=	virtualbox-ose-nox11
+CONFLICTS_INSTALL+=	virtualbox-ose-nox11-70
 .else
-CONFLICTS_INSTALL+=	virtualbox-ose
+CONFLICTS_INSTALL+=	virtualbox-ose-70
 .endif
 
 .if ${PORT_OPTIONS:MDEBUG}
@@ -177,7 +176,7 @@ VBOX_UTILS+=	vboxwebsrv webtest
 .endif
 
 .if ${PORT_OPTIONS:MX11}
-VBOX_PROGS+=	VBoxSDL
+#VBOX_PROGS+=	VBoxSDL
 .endif
 
 .if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
@@ -204,24 +203,6 @@ KMK_FLAGS+=	-j${MAKE_JOBS_NUMBER}
 .include <bsd.port.pre.mk>
 
 .if ${CHOSEN_COMPILER_TYPE} == clang
-# 1) llvm10 in FreeBSD before r364284 miscompiles virtualbox 6.1 causing errors.
-# 2) llvm15 in FreeBSD miscompiles virtualbox 6.1 causing errors: PR#270189.
-# Force llvm from ports.
-.if ${OPSYS} == FreeBSD
-# USES must be before .include <bsd.port.pre.mk>, but CHOSEN_COMPILER_TYPE must be after.
-# This is a workaround with possibility to define different llvm via VBOX_LLVM_VER in make.conf.
-#USES+=		llvm:min=11,max=14
-#CC=		clang${LLVM_VERSION}
-#CXX=		clang++${LLVM_VERSION}
-BUILD_DEPENDS+=	clang${VBOX_LLVM_VER}:devel/llvm${VBOX_LLVM_VER}
-CC=		clang${VBOX_LLVM_VER}
-CXX=		clang++${VBOX_LLVM_VER}
-.if ${LLVM_DEFAULT} < 11 || ${LLVM_DEFAULT} > 14
-VBOX_LLVM_VER?=	14
-.else
-VBOX_LLVM_VER?=	${LLVM_DEFAULT}
-.endif
-.endif
 PATCH_DEPENDS+=	${LOCALBASE}/share/kBuild/tools/GXX3.kmk:devel/kBuild
 .endif
 
@@ -402,7 +383,7 @@ do-install:
 	    ${WRKSRC}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_48px.png \
 	    ${STAGEDIR}${PREFIX}/share/pixmaps/VBox.png
 	${INSTALL_DATA} \
-	    ${WRKSRC}/src/VBox/Installer/freebsd/virtualbox.desktop \
+	    ${FILESDIR}/virtualbox.desktop \
 	    ${STAGEDIR}${PREFIX}/share/applications/virtualbox.desktop
 .endif
 
diff --git a/emulators/virtualbox-ose-70/distinfo b/emulators/virtualbox-ose-70/distinfo
index 08ac88176444..774d7e8d44a7 100644
--- a/emulators/virtualbox-ose-70/distinfo
+++ b/emulators/virtualbox-ose-70/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1716920210
-SHA256 (VirtualBox-6.1.50.tar.bz2) = 73ff603842896cb8d86ac5a817eb5037d7d225d3c46ea238e39d7ba5aaf61a57
-SIZE (VirtualBox-6.1.50.tar.bz2) = 165959648
-SHA256 (VBoxGuestAdditions_6.1.50.iso) = af53e34c5a5ec143f3418ac01d00ed5f33f6b31bfdc92eb4714c99d9bccb6602
-SIZE (VBoxGuestAdditions_6.1.50.iso) = 64051200
-SHA256 (VirtualBox-docs-6.1.50.tar.bz2) = e5dc118e8bb8352c06d5359e4f75ceb339a3917f0727fd74ad02ff07251e67db
-SIZE (VirtualBox-docs-6.1.50.tar.bz2) = 4063302
+TIMESTAMP = 1738097405
+SHA256 (VirtualBox-7.0.24.tar.bz2) = 340d66f52251e23d9bc1eb4fdf70e44cb9d1db69bc5064e3f7bdfb8bc0e3a458
+SIZE (VirtualBox-7.0.24.tar.bz2) = 174663788
+SHA256 (VirtualBox-docs-7.0.24.tar.bz2) = a4005ab62ff6352b820f3aba2c5a98b4541317433afff0d58d4b8c2678e75cdd
+SIZE (VirtualBox-docs-7.0.24.tar.bz2) = 4766637
+SHA256 (VBoxGuestAdditions_7.0.24.iso) = 17b01cd40bc34a7b79e4922c8f68bea3da3b2348bc4cdeadc962f84f1a63e225
+SIZE (VBoxGuestAdditions_7.0.24.iso) = 54804480
diff --git a/emulators/virtualbox-ose-70/files/extrapatch-Config.kmk b/emulators/virtualbox-ose-70/files/extrapatch-Config.kmk
index 775508d23b1b..4a91ac89097b 100644
--- a/emulators/virtualbox-ose-70/files/extrapatch-Config.kmk
+++ b/emulators/virtualbox-ose-70/files/extrapatch-Config.kmk
@@ -1,6 +1,6 @@
 --- Config.kmk.orig	2021-04-28 16:21:25 UTC
 +++ Config.kmk
-@@ -4931,7 +4931,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
+@@ -5958,7 +5942,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
  		| xargs -J% objcopy % $(out)
  
  ## Strip debug info (comment out if debugging or something).
diff --git a/emulators/virtualbox-ose-70/files/patch-Config.kmk b/emulators/virtualbox-ose-70/files/patch-Config.kmk
index 119926c9e025..9fe5ecdc458d 100644
--- a/emulators/virtualbox-ose-70/files/patch-Config.kmk
+++ b/emulators/virtualbox-ose-70/files/patch-Config.kmk
@@ -1,6 +1,6 @@
---- Config.kmk.orig	2021-01-07 15:31:21 UTC
-+++ Config.kmk
-@@ -469,11 +469,11 @@ ifn1of ($(KBUILD_TARGET), win darwin)
+--- Config.kmk.orig	2024-10-10 20:19:24.000000000 +0200
++++ Config.kmk	2024-12-27 17:28:48.466891000 +0100
+@@ -579,11 +579,11 @@
   # Enable OSS audio support.
   VBOX_WITH_AUDIO_OSS = 1
  endif
@@ -14,7 +14,7 @@
   # Enable PulseAudio audio support.
   VBOX_WITH_AUDIO_PULSE = 1
  endif
-@@ -489,11 +489,11 @@ VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT = 1
+@@ -596,11 +596,11 @@
  # (disabled with 6.1, since it's not complete/useful enough)
  VBOX_WITH_PCI_PASSTHROUGH =
  # Enable statically linked dbus support.
@@ -28,7 +28,7 @@
   VBOX_WITH_PAM = 1
  endif
  # Enable internal networking.
-@@ -501,7 +501,7 @@ VBOX_WITH_INTERNAL_NETWORKING = 1
+@@ -608,7 +608,7 @@
  # Enable vmsvga (svga2) graphics device variant, 2D part
  VBOX_WITH_VMSVGA = 1
  # Enable vmsvga (svga2) graphics device variant, 3D part
@@ -36,8 +36,8 @@
 +if1of ($(KBUILD_TARGET), darwin freebsd linux win)
   VBOX_WITH_VMSVGA3D = 1
  endif
- # Enable the generic 3D settings support if at least one 3D capable solution is enabled
-@@ -647,7 +647,7 @@ VBOX_WITH_MAIN_USB_ID_DATABASE = 1
+ # Enable vmsvga (svga2) graphics device variant, 3D part, VGPU10 DX commands
+@@ -787,7 +787,7 @@
  #endif
  # Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
  # caused by our XPCOM library polluting the symbol namespace for system libs.
@@ -46,97 +46,209 @@
   VBOX_WITH_XPCOM_NAMESPACE_CLEANUP = 1
  endif
  # The webservices api.
-@@ -1064,10 +1064,6 @@ ifeq ($(KBUILD_TARGET),darwin)
-  VBOX_WITH_VBOXSDL=
+@@ -1295,10 +1295,6 @@
+  endif
  endif
  
 -ifeq ($(KBUILD_TARGET),freebsd)
-- VBOX_WITH_DOCS=
+- VBOX_WITH_DOCS =
 -endif
 -
  ifeq ($(KBUILD_TARGET),haiku)
-  # Don't bother with SDL ttf for now.
-  VBOX_WITH_SECURELABEL=
-@@ -1228,7 +1224,7 @@ ifdef VBOX_OSE
-  VBOX_WITH_KCHMVIEWER=
-  VBOX_WITH_PLUGIN_CRYPT=
-  VBOX_WITH_DRAG_AND_DROP_PROMISES=
+  VBOX_WITH_VRDP_RDESKTOP =
+  # Permanent (no working SDL).
+@@ -1457,7 +1453,7 @@
+  # not yet
+  VBOX_WITH_PLUGIN_CRYPT =
+  VBOX_WITH_DRAG_AND_DROP_PROMISES =
 - ifn1of ($(KBUILD_TARGET), linux)
 + ifn1of ($(KBUILD_TARGET), freebsd linux)
-   VBOX_WITH_DOCS=
-   VBOX_WITH_DOCS_PACKING=
+   VBOX_WITH_DOCS =
+   VBOX_WITH_DOCS_PACKING =
   endif
-@@ -4928,7 +4924,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
+@@ -3518,19 +3514,7 @@
+ #
+ ## @todo consider maxing this out.
+ ifndef VBOX_GCC_std
+- if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64) # Go straight for c++17 here.
+   VBOX_GCC_std := -std=c++17
+-  # else if "$(VBOX_CLANG_VERSION_CXX)" vge 60000 # Most language features complete by v6. Lib stuff was less complete in v6, but hopefully acceptable for out purposes.
+-  #VBOX_GCC_std := -std=c++17
+- else if "$(VBOX_CLANG_VERSION_CXX)" vge 50000 # darwin Xcode 5 allegedly knows what C++11 is
+-  VBOX_GCC_std := -std=c++11
+-  # else if "$(VBOX_GCC_VERSION_CXX)" vge 70000 # Language feature P0512R0 was v8, rest v7 or earlier. Most lib stuff present in 7, complete in v12.
+-  #VBOX_GCC_std := -std=gnu++17
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40800
+-  VBOX_GCC_std := -std=c++11
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40600
+-  VBOX_GCC_std := -std=c++0x
+- endif
+ endif
+ ifndef VBOX_VCC_std
+  if $(VBOX_VCC_TOOL_STEM) >= VCC141 # since 2017 15.3
+@@ -5484,11 +5468,11 @@
+   # Solaris driver signing.
+   TEMPLATE_VBoxR0_POST_CMDS         = $(VBOX_SIGN_DRIVER_CMDS)
+  else
+-  TEMPLATE_VBoxR0_LDFLAGS           = -nostdlib -Bsymbolic -g
++  TEMPLATE_VBoxR0_LDFLAGS           = -nostdlib -Bsymbolic -g -fuse-ld=bfd
+   ## @todo WTF doesn't the globals work? Debug info is supposed to be split everywhere. GRR
+   TEMPLATE_VBoxR0_LD_DEBUG          = split
+  endif
+- if "$(KBUILD_TARGET)" == "linux" && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
++ if ( "$(KBUILD_TARGET)" == "linux" || "$(KBUILD_TARGET)" == "freebsd") && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
+   VBOX_WITH_VBOXR0_AS_DLL = 1
+   TEMPLATE_VBoxR0_DLLSUFF           = .r0
+   TEMPLATE_VBoxR0_CFLAGS           += -fPIC
+@@ -5499,7 +5483,7 @@
+  else
+   TEMPLATE_VBoxR0_CFLAGS.amd64     += -mcmodel=kernel
+   TEMPLATE_VBoxR0_CXXFLAGS.amd64   += -mcmodel=kernel
+- endif
++endif
+  ifdef VBOX_WITH_KMOD_WRAPPED_R0_MODS # For BTF/pahold issue we use -g1
+   TEMPLATE_VBoxR0_DEFS             += VBOX_WITH_KMOD_WRAPPED_R0_MODS
+   TEMPLATE_VBoxR0_LDFLAGS.linux    += $(PATH_ROOT)/src/VBox/HostDrivers/Support/linux/VBoxR0-wrapped.lds
+@@ -5880,7 +5864,7 @@
+  # 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
+@@ -5891,7 +5875,7 @@
+  #
+  # 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 \
+@@ -5973,7 +5957,7 @@
  		| xargs -J% objcopy % $(outbase).kld
  
- # Link the final .ko (a shared object).
+    # Link the final .ko (a shared object).
 -	ld $(flags) -Bshareable -o $(out) $(outbase).kld
-+    ld $(flags) -Bshareable -znotext -o $(out) $(outbase).kld
- endef
++	ld $(flags) -Bshareable -znotext -o $(out) $(outbase).kld
+   endef
   endif # x86
  
-@@ -5205,6 +5201,7 @@ TEMPLATE_VBOXR3EXE_LDFLAGS.x86         = -m32
- TEMPLATE_VBOXR3EXE_LDFLAGS.amd64       = -m64
- TEMPLATE_VBOXR3EXE_LDFLAGS.sparc32     = -m32
- TEMPLATE_VBOXR3EXE_LDFLAGS.sparc64     = -m64
-+TEMPLATE_VBOXR3EXE_LDFLAGS.freebsd     = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
- TEMPLATE_VBOXR3EXE_LDFLAGS.linux       = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
- TEMPLATE_VBOXR3EXE_LDFLAGS.solaris     = -Wl,-z,ignore # same as VBOX_LD_as_needed
- TEMPLATE_VBOXR3EXE_LDFLAGS.debug       = $(VBOX_GCC_SANITIZER_FLAGS) $(VBOX_GCC_SANITIZER_LDFLAGS)
-@@ -5238,10 +5235,18 @@ TEMPLATE_VBOXR3EXE_LIBPATH            += \
- TEMPLATE_VBOXR3EXE_CFLAGS             += -fno-pic
- TEMPLATE_VBOXR3EXE_CXXFLAGS           += -fno-pic
- TEMPLATE_VBOXR3EXE_LDFLAGS            += -fno-pic
+@@ -6008,7 +5992,7 @@
+  	$(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 -mno-mmx -mno-sse -mno-avx \
+@@ -6019,7 +6003,7 @@
+  	-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)
+@@ -6318,11 +6302,11 @@
+   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              =
+-  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG # Avoid 3rd party libiconv (from macports).
++  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG # Avoid 3rd party lib (from macports).
+   TEMPLATE_VBoxR3Exe_SDKS.darwin       = $(VBOX_DARWIN_DEF_SDK_SDKS)
+   TEMPLATE_VBoxR3Exe_DEFS.darwin       = $(VBOX_DARWIN_DEF_SDK_DEFS)
+   TEMPLATE_VBoxR3Exe_CFLAGS.darwin     = $(VBOX_DARWIN_DEF_SDK_CFLAGS) -fno-common
+@@ -6339,17 +6323,26 @@
+  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
 - else if1of ($(KBUILD_TARGET), freebsd openbsd)
-+ else ifeq ($(KBUILD_TARGET),freebsd)
- TEMPLATE_VBOXR3EXE_TOOL                = GXX3
- TEMPLATE_VBOXR3EXE_LIBS                = pthread
-+TEMPLATE_VBOXR3EXE_LDFLAGS.freebsd.x86 = -Wl,-z,notext
- TEMPLATE_VBOXR3EXE_INCS               += \
-+	/usr/local/include
-+TEMPLATE_VBOXR3EXE_LIBPATH            += \
-+	/usr/local/lib
-+ else ifeq ($(KBUILD_TARGET),openbsd)
-+TEMPLATE_VBOXR3EXE_TOOL                = GXX3
-+TEMPLATE_VBOXR3EXE_LIBS                = pthread
-+TEMPLATE_VBOXR3EXE_INCS               += \
- 	/usr/include \
- 	/usr/X11R6/include \
- 	/usr/local/include
-@@ -5273,6 +5278,7 @@ TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile   = $(TEMPLATE_VB
-   TEMPLATE_VBOXR3EXE_LDFLAGS          += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
++ else ifeq ($(KBUILD_TARGET), freebsd)
+   TEMPLATE_VBoxR3Exe_TOOL              = GXX3
+   TEMPLATE_VBoxR3Exe_LIBS              = pthread
++  TEMPLATE_VBoxR3Exe_LDFLAGS           = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++  TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+   TEMPLATE_VBoxR3Exe_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxR3Exe_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++  TEMPLATE_VBoxR3Exe_TOOL              = GXX3
++  TEMPLATE_VBoxR3Exe_LIBS              = pthread
++  TEMPLATE_VBoxR3Exe_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -6368,7 +6361,7 @@
+   	/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.
+   if $(VBOX_GCC_VERSION_CC) < 30500
+    TEMPLATE_VBoxR3Exe_CFLAGS          += -std=gnu99
+   endif
+@@ -6384,6 +6377,7 @@
+   TEMPLATE_VBoxR3Exe_LDFLAGS          += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
   endif
   ifdef VBOX_WITH_ORIGIN
-+  TEMPLATE_VBOXR3EXE_LDFLAGS.freebsd  += $(VBOX_GCC_ORIGIN_OPT)
-   TEMPLATE_VBOXR3EXE_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
++  TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd  += $(VBOX_GCC_ORIGIN_OPT)
+   TEMPLATE_VBoxR3Exe_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
   endif
  endif
-@@ -5412,7 +5418,7 @@ ifeq ($(KBUILD_TARGET),win)
-  	$(PATH_TOOL_$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64)_LIB)/libcmt$(VBOX_VCC_CRT_TYPE).lib \
-  	$(PATH_TOOL_$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64)_LIB)/libcpmt$(VBOX_VCC_CRT_TYPE).lib \
-  	$(PATH_TOOL_$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64)_LIB)/oldnames.lib
--else ifn1of ($(KBUILD_TARGET), darwin linux solaris)
-+else ifn1of ($(KBUILD_TARGET), darwin freebsd linux solaris)
-  # The gcc guys sans darwin, linux and solaris (don't depend on statically compiled system libs there)
-  TEMPLATE_VBOXR3STATIC_CFLAGS          = $(TEMPLATE_VBOXR3EXE_CFLAGS) -static
-  TEMPLATE_VBOXR3STATIC_CXXFLAGS        = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) -static
-@@ -5557,6 +5563,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT!
- else ifn1of ($(KBUILD_TARGET), os2 solaris)
-  # 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_VBoxR3HardenedTstDll_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.freebsd))
-  TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
+@@ -6590,7 +6584,7 @@
+  ifdef VBOX_WITH_NOCRT_STATIC
+   TEMPLATE_VBoxR3StaticBase_DEFS           += RT_WITH_NOCRT_WRAPPERS
+  endif
+- ifn1of ($(KBUILD_TARGET), darwin linux solaris)
++ ifn1of ($(KBUILD_TARGET), darwin freebsd linux solaris)
+   # The gcc guys sans darwin, linux and solaris (don't depend on statically compiled system libs there)
+   TEMPLATE_VBoxR3StaticBase_CFLAGS          = $(TEMPLATE_VBoxR3Exe_CFLAGS) -static
+   TEMPLATE_VBoxR3StaticBase_CXXFLAGS        = $(TEMPLATE_VBoxR3Exe_CXXFLAGS) -static
+@@ -6656,7 +6650,7 @@
+  	$(SDK_VBoxLzf_LIBS) \
+  	$(SDK_VBoxZlib_LIBS)
+  if1of ($(KBUILD_TARGET), darwin freebsd)
+-  TEMPLATE_VBoxR3Static_LIBS       += iconv
++  TEMPLATE_VBoxR3Static_LIBS       += 
+  else ifeq ($(KBUILD_TARGET),solaris)
+   TEMPLATE_VBoxR3Static_LIBS       += kstat
+  endif
+@@ -6830,6 +6824,7 @@
+ else ifn1of ($(KBUILD_TARGET), os2)
+  ifneq ($(KBUILD_TYPE),asan) # Keep RPATH in asan builds so we can find libasan.so.X and libubsan.so.Y.
+   TEMPLATE_VBoxR3HardenedExe_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3Exe_LDFLAGS))
++  TEMPLATE_VBoxR3HardenedExe_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd))
+   TEMPLATE_VBoxR3HardenedExe_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.linux))
+  endif
  endif
- 
-@@ -5584,6 +5591,7 @@ TEMPLATE_VBoxR3HardenedTstDll_INST = $(INST_TESTCASE)
-  TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.win = $(TEMPLATE_VBoxR3TstDll_LDFLAGS.win) -IntegrityCheck
+@@ -6861,6 +6856,7 @@
+ 	$(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),-IntegrityCheck,)
  ifn1of ($(KBUILD_TARGET), win os2)
   TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3TstDll_LDFLAGS))
 + TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.freebsd))
   TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.linux))
  endif
  
-@@ -5606,6 +5614,7 @@ ifndef VBOX_WITH_HARDENING
+@@ -6884,6 +6880,7 @@
    TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
   endif
   ifdef VBOX_WITH_ORIGIN
@@ -144,91 +256,145 @@
    TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
   endif
  endif
-@@ -6132,10 +6141,19 @@ TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTI
+@@ -7208,7 +7205,7 @@
+  endif
+  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) \
+  	$(VBOX_GCC_SANITIZER_FLAGS)
+  if !defined("VBOX_GCC_Wno-delete-non-virtual-dtor") && defined("VBOX_GCC_Wno-non-virtual-dtor")
+@@ -7272,10 +7269,19 @@
   else ifeq ($(KBUILD_TARGET),haiku)
- TEMPLATE_VBOXMAINEXE_TOOL                = GXX3
- TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME) network stdc++ supc++
+   TEMPLATE_VBoxMainExe_TOOL              = GXX3
+   TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME) network stdc++ supc++
 - else if1of ($(KBUILD_TARGET), freebsd openbsd)
-+ else ifeq ($(KBUILD_TARGET),freebsd)
- TEMPLATE_VBOXMAINEXE_TOOL                = GXX3
- TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
-+TEMPLATE_VBOXMAINEXE_LDFLAGS.freebsd     = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
-+TEMPLATE_VBOXMAINEXE_LDFLAGS.freebsd.x86 = -Wl,-z,notext
- TEMPLATE_VBOXMAINEXE_INCS               += \
-+	/usr/local/include
-+TEMPLATE_VBOXMAINEXE_LIBPATH            += \
-+	/usr/local/lib
-+ else ifeq ($(KBUILD_TARGET),openbsd)
-+TEMPLATE_VBOXMAINEXE_TOOL                = GXX3
-+TEMPLATE_VBOXMAINEXE_LIBS                = $(LIB_RUNTIME)
-+TEMPLATE_VBOXMAINEXE_INCS               += \
- 	/usr/include \
- 	/usr/X11R6/include \
- 	/usr/local/include
-@@ -6167,6 +6185,7 @@ TEMPLATE_VBOXMAINEXE_LDFLAGS            += '$(VBOX_GCC
- TEMPLATE_VBOXMAINEXE_LDFLAGS            += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
++ else ifeq ($(KBUILD_TARGET), freebsd)
+   TEMPLATE_VBoxMainExe_TOOL              = GXX3
+   TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME)
++  TEMPLATE_VBoxMainExe_LDFLAGS           = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++  TEMPLATE_VBoxMainExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+   TEMPLATE_VBoxMainExe_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxMainExe_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++  TEMPLATE_VBoxMainExe_TOOL              = GXX3
++  TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME)
++  TEMPLATE_VBoxMainExe_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -7307,6 +7313,7 @@
+   TEMPLATE_VBoxMainExe_LDFLAGS          += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
   endif
   ifdef VBOX_WITH_ORIGIN
-+TEMPLATE_VBOXMAINEXE_LDFLAGS.freebsd    += $(VBOX_GCC_ORIGIN_OPT)
- TEMPLATE_VBOXMAINEXE_LDFLAGS.linux      += $(VBOX_GCC_ORIGIN_OPT)
++  TEMPLATE_VBoxMainExe_LDFLAGS.freebsd  += $(VBOX_GCC_ORIGIN_OPT)
+   TEMPLATE_VBoxMainExe_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
   endif
  
-@@ -6735,13 +6754,11 @@ ifdef VBOX_WITH_QTGUI
-    TEMPLATE_VBOXQTGUIEXE_LIBPATH += \
- 	$(VBOX_LIBPATH_X11)
+@@ -7943,13 +7950,11 @@
+    TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+    	$(VBOX_LIBPATH_X11)
     ifeq ($(KBUILD_TARGET),freebsd)
-+    TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
-+    TEMPLATE_VBOXQTGUIEXE_LDFLAGS.freebsd.x86 = -Wl,-z,notext
-     TEMPLATE_VBOXQTGUIEXE_INCS += \
--	/usr/include \
--	/usr/X11R6/include \
- 	/usr/local/include
-     TEMPLATE_VBOXQTGUIEXE_LIBPATH += \
--	/usr/lib \
--	/usr/X11R6/lib \
- 	/usr/local/lib
++    TEMPLATE_VBoxQtGuiExe_LDFLAGS += -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++    TEMPLATE_VBoxQtGuiExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+     TEMPLATE_VBoxQtGuiExe_INCS += \
+-    	/usr/include \
+-    	/usr/X11R6/include \
+     	/usr/local/include
+     TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+-    	/usr/lib \
+-    	/usr/X11R6/lib \
+     	/usr/local/lib
     endif
     ifeq ($(KBUILD_TARGET),solaris)
-@@ -6988,10 +7005,17 @@ TEMPLATE_VBoxBldProg_TOOL                = GXX3
- TEMPLATE_VBoxBldProg_LIBS                = network iconv
- TEMPLATE_VBoxBldProg_LIBPATH            += \
- 	/boot/common/lib
+@@ -8231,7 +8236,7 @@
+   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"
+@@ -8271,13 +8276,20 @@
+   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)
-+ else ifeq ($(KBUILD_HOST),freebsd)
- TEMPLATE_VBoxBldProg_TOOL                = GXX3
- TEMPLATE_VBoxBldProg_LIBS                = pthread
- TEMPLATE_VBoxBldProg_INCS               += \
-+	/usr/local/include
-+TEMPLATE_VBoxBldProg_LIBPATH            += \
-+	/usr/local/lib
-+ else ifeq ($(KBUILD_HOST),openbsd)
-+TEMPLATE_VBoxBldProg_TOOL                = GXX3
-+TEMPLATE_VBoxBldProg_LIBS                = pthread
-+TEMPLATE_VBoxBldProg_INCS               += \
- 	/usr/include \
- 	/usr/X11R6/include \
- 	/usr/local/include
-@@ -7115,6 +7139,7 @@ else # the gcc guys
-  # Do not inherit sanitizer flags from VBOXR3EXE in guest executables.  Deal with them separately.
-  TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS.debug = $(NO_SUCH_VARIABLE)
-  TEMPLATE_VBOXGUESTR3EXE_CFLAGS.debug = $(NO_SUCH_VARIABLE)
-+ TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.freebsd))
-  TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
-  TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.debug = $(NO_SUCH_VARIABLE)
-  TEMPLATE_VBOXGUESTR3EXE_LDFLAGS  = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
-@@ -7138,6 +7163,7 @@ TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS.linux    = \
++ else ifeq ($(KBUILD_HOST), freebsd)
+   TEMPLATE_VBoxBldProg_TOOL              = $(VBOX_GCC_TOOL)
+   TEMPLATE_VBoxBldProg_LIBS              = pthread
+   TEMPLATE_VBoxBldProg_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxBldProg_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_HOST), openbsd)
++  TEMPLATE_VBoxBldProg_TOOL              = $(VBOX_GCC_TOOL)
++  TEMPLATE_VBoxBldProg_LIBS              = pthread
++  TEMPLATE_VBoxBldProg_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -8324,11 +8336,11 @@
+ 	$(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 = \
+@@ -8419,6 +8431,7 @@
+  # Do not inherit sanitizer flags from VBoxR3Exe in guest executables.  Deal with them separately.
+  TEMPLATE_VBoxGuestR3ExeBase_CXXFLAGS.debug = $(NO_SUCH_VARIABLE)
+  TEMPLATE_VBoxGuestR3ExeBase_CFLAGS.debug = $(NO_SUCH_VARIABLE)
++ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS.freebsd))
+  TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS.linux))
+  TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.debug = $(NO_SUCH_VARIABLE)
+  TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS  = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS))
+@@ -8442,7 +8455,7 @@
+ ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
+  TEMPLATE_VBoxGuestR3ExeBase_LIBS     = pthread rt m dl
+ else if1of ($(KBUILD_TARGET), darwin freebsd openbsd)
+- TEMPLATE_VBoxGuestR3ExeBase_LIBS     = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LIBS) iconv
++ TEMPLATE_VBoxGuestR3ExeBase_LIBS     = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LIBS) 
+ else ifeq ($(KBUILD_TARGET),solaris)
+  TEMPLATE_VBoxGuestR3ExeBase_LIBS     = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LIBS) nsl
+ endif
+@@ -8455,6 +8468,7 @@
  	$(VBOX_GCC_fno-stack-protector)
- TEMPLATE_VBOXGUESTR3EXE_CFLAGS.linux      = $(TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS.linux)
+ TEMPLATE_VBoxGuestR3ExeBase_CFLAGS.linux      = $(TEMPLATE_VBoxGuestR3ExeBase_CXXFLAGS.linux)
  # The GNU_HASH ELF tag is not supported by older systems.
-+TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.freebsd    += $(VBOX_LD_hash_style_sysv)
- TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.linux      += $(VBOX_LD_hash_style_sysv)
++TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.freebsd  += $(VBOX_LD_hash_style_sysv)
+ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.linux    += $(VBOX_LD_hash_style_sysv)
  
- #
-@@ -7345,6 +7371,7 @@ TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TYPE)      =
- TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TARGET)    = $(NO_SUCH_VARIABLE)
- TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
+ 
+@@ -8684,6 +8698,7 @@
+ TEMPLATE_VBoxGuestR3XFree86Mod_CXXFLAGS.linux           = $(VBOX_GCC_fno-stack-protector) # Remove symvers.h
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
  # The GNU_HASH ELF tag is not supported by older glibc dynamic linkers.
-+TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.freebsd = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
- TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.linux = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
- TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TYPE)   = $(NO_SUCH_VARIABLE)
- TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS          = -r
++TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.freebsd          = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.linux            = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.$(KBUILD_TYPE)   = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS                 := -r
+@@ -8725,7 +8740,7 @@
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS                    = $(VBOX_LIB_VBGL_R3_XORG)
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS.$(KBUILD_TYPE)     = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS.$(KBUILD_TARGET)   = $(NO_SUCH_VARIABLE)
+-TEMPLATE_VBoxGuestR3XOrgMod_LIBS.freebsd           += iconv
++TEMPLATE_VBoxGuestR3XOrgMod_LIBS.freebsd           += 
+ 
+ 
+ #
diff --git a/emulators/virtualbox-ose-70/files/patch-configure b/emulators/virtualbox-ose-70/files/patch-configure
index 25015e642bc1..fe0f4247089b 100644
--- a/emulators/virtualbox-ose-70/files/patch-configure
+++ b/emulators/virtualbox-ose-70/files/patch-configure
@@ -1,6 +1,6 @@
---- configure.orig	2021-10-18 17:47:25 UTC
-+++ configure
-@@ -139,10 +139,14 @@ CXX_FLAGS=""
+--- configure.orig	2024-10-10 20:19:24.000000000 +0200
++++ configure	2024-12-27 13:12:46.010746000 +0100
+@@ -154,10 +154,14 @@
  if [ "$OS" = "freebsd" ]; then
    INCCURL="-I/usr/local/include"
    LIBCURL="-L/usr/local/lib -lcurl"
@@ -15,7 +15,7 @@
  else
    INCCURL=""
    LIBCURL="-lcurl"
-@@ -1173,6 +1177,9 @@ extern "C" int main(int argc, char** arg
+@@ -1207,6 +1211,9 @@
    printf("found version %d.%d.%d",
           SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL);
  #if SDL_VERSION_ATLEAST(1,2,7)
@@ -25,7 +25,7 @@
    printf(", OK.\n");
    return 0;
  #else
-@@ -1257,7 +1264,7 @@ extern "C" int main(void)
+@@ -1291,7 +1298,7 @@
  #endif
  }
  EOF
@@ -34,7 +34,7 @@
      test_execute
    fi
  }
-@@ -1564,6 +1571,7 @@ EOF
+@@ -1605,6 +1612,7 @@
            FLGQT5=`pkg-config Qt5Core --cflags`
            # gcc 4.8 is able to compile with C++11 (see also VBOX_GCC_std in Config.kmk)
            [ $(($cc_maj * 100 + $cc_min)) -ge 408 ] && FLGQT5="$FLGQT5 -std=c++11"
@@ -42,16 +42,7 @@
            INCQT5=`strip_I "$FLGQT5"`
            LIBDIR5=`pkg-config Qt5Core --variable=libdir`
            LIBQT5=`pkg-config Qt5Core Qt5Gui --libs`
-@@ -1702,7 +1710,7 @@ check_libopus()
-       fi
-       cat > $ODIR.tmp_src.cc << EOF
- #include <cstdio>
--#include <opus/opus.h>
-+#include <opus.h>
- extern "C" int main(void)
- {
-   OpusEncoder *test;
-@@ -2034,8 +2042,8 @@ EOF
+@@ -2180,8 +2188,8 @@
          echo "compiling the following source file:" >> $LOG
          cat $ODIR.tmp_src.cc >> $LOG
          echo "using the following command line:" >> $LOG
@@ -62,7 +53,7 @@
          if [ $? -eq 0 ]; then
            found=1
            break
-@@ -2151,7 +2159,7 @@ check_gsoap()
+@@ -2297,7 +2305,7 @@
          else
            cnf_append "VBOX_GSOAP_CXX_SOURCES" ""
          fi
@@ -71,16 +62,16 @@
          gsoap_version=`pkg-config gsoapssl++ --modversion`
          log_success "found version $gsoap_version"
          return
-@@ -2519,7 +2527,7 @@ for option in "$@"; do
+@@ -2661,7 +2669,7 @@
      --with-openssl-dir=*)
        OPENSSLDIR=`echo $option | cut -d'=' -f2`
        INCCRYPTO="-I${OPENSSLDIR}/include"
 -      LIBCRYPTO="${OPENSSLDIR}/lib/libssl.a ${OPENSSLDIR}/lib/libcrypto.a"
 +      LIBCRYPTO="-L${OPENSSLDIR}/lib -lssl -lcrypto"
+       # On Darwin (at least for macports) static OpenSSL also needs zlib.
+       [ "$OS" = "darwin" ] && LIBCRYPTO="$LIBCRYPTO ${OPENSSLDIR}/lib/libz.a"
        # On Linux static OpenSSL typically needs a few additional libraries.
-       [ "$OS" = "linux" ] && LIBCRYPTO="-ldl $LIBPTHREAD -lm"
-       ;;
-@@ -2865,12 +2873,22 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then
+@@ -3028,12 +3036,22 @@
    [ $WITH_JAVA   -eq 1 ] && check_java
  
    # PulseAudio
@@ -109,7 +100,7 @@
    fi
  fi
  
-@@ -2886,14 +2904,6 @@ if [ "$OS" = "linux" ]; then
+@@ -3049,14 +3067,6 @@
      cnf_append "VBOX_WITHOUT_LINUX_TEST_BUILDS" "1"
    fi
    if [ $ONLY_ADDITIONS -eq 0 ]; then
diff --git a/emulators/virtualbox-ose-70/files/patch-include_VBox_sup.h b/emulators/virtualbox-ose-70/files/patch-include_VBox_sup.h
new file mode 100644
index 000000000000..9cf3fabe63f1
--- /dev/null
+++ b/emulators/virtualbox-ose-70/files/patch-include_VBox_sup.h
@@ -0,0 +1,11 @@
+--- include/VBox/sup.h.orig	2024-12-27 04:08:45.986426000 +0100
++++ include/VBox/sup.h	2024-12-27 04:09:08.925387000 +0100
+@@ -2248,7 +2248,7 @@
+ 
+ SUPR0DECL(void) SUPR0BadContext(PSUPDRVSESSION pSession, const char *pszFile, uint32_t uLine, const char *pszExpr);
+ 
+-#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
++#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS)
+ /**
+  * Translates a physical address to a virtual mapping (valid up to end of page).
+  * @returns VBox status code.
diff --git a/emulators/virtualbox-ose-70/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c b/emulators/virtualbox-ose-70/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
index 8fd24bda91f1..e790f372f95f 100644
--- a/emulators/virtualbox-ose-70/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
+++ b/emulators/virtualbox-ose-70/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
@@ -1,6 +1,6 @@
---- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig	2022-03-22 23:37:46 UTC
-+++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c
-@@ -45,6 +45,7 @@
+--- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig	2022-10-06 19:03:06.000000000 +0200
++++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c	2024-12-26 15:28:38.066230000 +0100
+@@ -55,6 +55,7 @@
  #include <sys/uio.h>
  #include <sys/bus.h>
  #include <sys/poll.h>
@@ -8,7 +8,7 @@
  #include <sys/selinfo.h>
  #include <sys/queue.h>
  #include <sys/lock.h>
-@@ -61,6 +62,7 @@
+@@ -71,6 +72,7 @@
  #include <VBox/version.h>
  #include <VBox/log.h>
  #include <iprt/assert.h>
@@ -16,7 +16,7 @@
  #include <iprt/initterm.h>
  #include <iprt/process.h>
  #include <iprt/string.h>
-@@ -102,8 +104,6 @@ struct VBoxGuestDeviceState
+@@ -112,8 +114,6 @@
      struct resource   *pIrqRes;
      /** Pointer to the IRQ handler. */
      void              *pfnIrqHandler;
@@ -25,7 +25,7 @@
  };
  
  
-@@ -113,8 +113,7 @@ struct VBoxGuestDeviceState
+@@ -123,8 +123,7 @@
  /*
   * Character device file handlers.
   */
@@ -35,7 +35,7 @@
  static d_ioctl_t  vgdrvFreeBSDIOCtl;
  static int        vgdrvFreeBSDIOCtlSlow(PVBOXGUESTSESSION pSession, u_long ulCmd, caddr_t pvData, struct thread *pTd);
  static d_write_t  vgdrvFreeBSDWrite;
-@@ -145,8 +144,7 @@ static struct cdevsw    g_vgdrvFreeBSDChrDevSW =
+@@ -155,8 +154,7 @@
  {
      .d_version =        D_VERSION,
      .d_flags =          D_TRACKCLOSE | D_NEEDMINOR,
@@ -45,7 +45,7 @@
      .d_ioctl =          vgdrvFreeBSDIOCtl,
      .d_read =           vgdrvFreeBSDRead,
      .d_write =          vgdrvFreeBSDWrite,
-@@ -154,81 +152,28 @@ static struct cdevsw    g_vgdrvFreeBSDChrDevSW =
+@@ -164,81 +162,28 @@
      .d_name =           "vboxguest"
  };
  
@@ -134,7 +134,7 @@
  {
      int                 rc;
      PVBOXGUESTSESSION   pSession;
-@@ -240,12 +185,6 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
+@@ -250,12 +195,6 @@
      LogFlow(("vgdrvFreeBSDOpen:\n"));
  
      /*
@@ -147,7 +147,7 @@
       * Create a new session.
       */
*** 1849 LINES SKIPPED ***