git: c9de267a3525 - main - emulators/virtualbox-ose{,-nox11,-kmod,-additions,-additions-nox11}-legacy: fix build with llvm15+, fix run with PAE on i386
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 28 Jun 2024 19:26:18 UTC
The branch main has been updated by vvd:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c9de267a3525a05df601239c02a960cb98445c76
commit c9de267a3525a05df601239c02a960cb98445c76
Author: Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2024-06-28 19:08:33 +0000
Commit: Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2024-06-28 19:08:33 +0000
emulators/virtualbox-ose{,-nox11,-kmod,-additions,-additions-nox11}-legacy: fix build with llvm15+, fix run with PAE on i386
* Fix build with llvm15+ from ports and from base:
- ISO C++17 does not allow 'register' storage class specifier;
- require -fPIC on i386.
* Fix load kernel modules on host and guest i386 if kernel compiled with
PAE option: add non-default option PAE to ports.
Based on patches from mi@.
PR: 279257 224616
Approved by: vbox (maintainer, timeout 1 month and 6 years)
---
emulators/virtualbox-ose-additions-legacy/Makefile | 16 +-
.../virtualbox-ose-additions-nox11-legacy/Makefile | 2 +-
emulators/virtualbox-ose-kmod-legacy/Makefile | 15 +-
emulators/virtualbox-ose-legacy/Makefile | 28 +-
emulators/virtualbox-ose-legacy/files/patch-C++17 | 301 +++++++++++++++++++++
.../virtualbox-ose-legacy/files/patch-Config.kmk | 10 +
emulators/virtualbox-ose-nox11-legacy/Makefile | 2 +-
7 files changed, 354 insertions(+), 20 deletions(-)
diff --git a/emulators/virtualbox-ose-additions-legacy/Makefile b/emulators/virtualbox-ose-additions-legacy/Makefile
index 249f4bfa6ef6..8a16ffddefad 100644
--- a/emulators/virtualbox-ose-additions-legacy/Makefile
+++ b/emulators/virtualbox-ose-additions-legacy/Makefile
@@ -1,6 +1,6 @@
PORTNAME= virtualbox-ose
PORTVERSION= 5.2.44
-PORTREVISION?= 5
+PORTREVISION?= 6
CATEGORIES= emulators
MASTER_SITES= https://download.oracle.com/virtualbox/${PORTVERSION}/
PKGNAMESUFFIX?= -additions-legacy
@@ -46,12 +46,15 @@ CONFLICTS_INSTALL= virtualbox-ose \
virtualbox-ose-lite \
virtualbox-ose-nox11
+EXTRACT_AFTER_ARGS= --exclude tools/*.x86 --exclude tools/*.amd64 --exclude Firmware
PORTSCOUT= limit:^5\.
-OPTIONS_DEFINE= DBUS DEBUG X11
+OPTIONS_DEFINE= DBUS DEBUG X11
+OPTIONS_DEFINE_i386= PAE
OPTIONS_DEFAULT= DBUS X11
-OPTIONS_SUB= yes
+OPTIONS_SUB= yes
+PAE_DESC= Build kernel modules for PAE-kernels
DBUS_CONFIGURE_OFF= --disable-dbus
DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus
DEBUG_CONFIGURE_ON= --build-debug
@@ -131,6 +134,13 @@ post-patch:
${WRKSRC}/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
@${ECHO_CMD} 'VBOX_ICONV_DEFS = LIBICONV_PLUG' >> ${WRKSRC}/LocalConfig.kmk
.endif
+.if ${PORT_OPTIONS:MPAE}
+ @${ECHO_CMD} 'VBOX_FREEBSD = -DPAE' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1400093
+ @${REINPLACE_CMD} -e 's|enum vtype|enum enum_vtype_uint8|g' \
+ ${WRKSRC}/src/VBox/Additions/freebsd/vboxvfs/vboxvfs*.[ch]
+.endif
post-patch-X11-on:
@${ECHO_CMD} 'VBOX_USE_SYSTEM_XORG_HEADERS = 1' >> \
diff --git a/emulators/virtualbox-ose-additions-nox11-legacy/Makefile b/emulators/virtualbox-ose-additions-nox11-legacy/Makefile
index f90f0be0b74d..bbf0e4e133cf 100644
--- a/emulators/virtualbox-ose-additions-nox11-legacy/Makefile
+++ b/emulators/virtualbox-ose-additions-nox11-legacy/Makefile
@@ -1,5 +1,5 @@
PKGNAMESUFFIX= -additions-nox11-legacy
-PORTREVISION= 4
+PORTREVISION= 5
OPTIONS_EXCLUDE= DBUS DEBUG OPENGL X11
diff --git a/emulators/virtualbox-ose-kmod-legacy/Makefile b/emulators/virtualbox-ose-kmod-legacy/Makefile
index 40f783cc46d1..5c5b5c4b9d8f 100644
--- a/emulators/virtualbox-ose-kmod-legacy/Makefile
+++ b/emulators/virtualbox-ose-kmod-legacy/Makefile
@@ -43,11 +43,13 @@ CONFLICTS_INSTALL= virtualbox-ose-kmod
PORTSCOUT= limit:^5\.
-OPTIONS_DEFINE= DEBUG VIMAGE
-OPTIONS_DEFAULT=VIMAGE
-OPTIONS_SUB= yes
-DEBUG_DESC= Debug symbols, additional logs and assertions
-VIMAGE_DESC= VIMAGE virtual networking support
+OPTIONS_DEFINE= DEBUG VIMAGE
+OPTIONS_DEFINE_i386= PAE
+OPTIONS_DEFAULT= VIMAGE
+OPTIONS_SUB= yes
+DEBUG_DESC= Debug symbols, additional logs and assertions
+PAE_DESC= Build kernel modules for PAE-kernels
+VIMAGE_DESC= VIMAGE virtual networking support
.include <bsd.port.options.mk>
@@ -91,6 +93,9 @@ post-patch:
@${ECHO_CMD} 'VBOX_WITH_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
.if ${PORT_OPTIONS:MVIMAGE}
@${ECHO_CMD} 'VBOX_WITH_NETFLT_VIMAGE = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${PORT_OPTIONS:MPAE}
+ @${ECHO_CMD} 'VBOX_FREEBSD = -DPAE' >> ${WRKSRC}/LocalConfig.kmk
.endif
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
${WRKSRC}/Config.kmk ${WRKSRC}/configure
diff --git a/emulators/virtualbox-ose-legacy/Makefile b/emulators/virtualbox-ose-legacy/Makefile
index 2ee4220a63dd..2bcb4488401e 100644
--- a/emulators/virtualbox-ose-legacy/Makefile
+++ b/emulators/virtualbox-ose-legacy/Makefile
@@ -1,6 +1,6 @@
PORTNAME= virtualbox-ose
PORTVERSION= 5.2.44
-PORTREVISION?= 18
+PORTREVISION?= 19
CATEGORIES= emulators
MASTER_SITES= https://download.oracle.com/virtualbox/${PORTVERSION}/:src \
LOCAL/bofh/emulators/virtualbox-ose-legacy:docs
@@ -110,9 +110,6 @@ X11_USES= sdl xorg
X11_USE= SDL=sdl XORG=x11,xcursor,xext,xinerama,xmu,xorgproto,xt
X11_CONFIGURE_OFF= --build-headless
-ENV=
-.export ENV
-
PLIST_SUB= GUEST_VER=${PORTVERSION} \
PYTHON_VERU=${PYTHON_VER:S/./_/}${PYTHON_ABIVER} \
VBOXGROUP=${VBOXGROUP}
@@ -194,11 +191,10 @@ KMK_FLAGS+= -j${MAKE_JOBS_NUMBER}
.include <bsd.port.pre.mk>
.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD && \
- (${OSVERSION} < 1302505 || (${OSVERSION} >= 1400000 && ${OSVERSION} < 1400079) || \
- ${OSVERSION} >= 1400091)
-# llvm 13, 14 and 16 included in FreeBSD fails to compile this legacy version of
-# virtualbox-ose, force llvm 15 on all versions of the FreeBSD except lastest 13
-# and several versions of 14 where the llvm 15 is included: PR#265539.
+ (${OSVERSION} < 1302505 || (${OSVERSION} >= 1400000 && ${OSVERSION} < 1400079))
+# llvm before 15 included in old versions of the FreeBSD 13 and 14 fails to compile
+# this legacy version of virtualbox-ose, force llvm 15 on those versions of the
+# FreeBSD: PR#265539, 279257.
# Keep possibility to define different llvm via VBOX_LLVM_VER in make.conf.
BUILD_DEPENDS+= clang${VBOX_LLVM_VER}:devel/llvm${VBOX_LLVM_VER}
CC= clang${VBOX_LLVM_VER}
@@ -276,10 +272,15 @@ post-patch:
${WRKSRC}/LocalConfig.kmk
@${ECHO_CMD} 'VBOX_PATH_GSOAP_IMPORT = ${PREFIX}/share/gsoap/import' >> \
${WRKSRC}/LocalConfig.kmk
- @${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long' >> \
+ @${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long \
+ -Wno-dynamic-exception-spec -D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION' >> \
${WRKSRC}/LocalConfig.kmk
@${REINPLACE_CMD} -E -e '/soap_socket_errno\(/s/(soap_socket_errno)(\([^)]+\))/\1/' \
${WRKSRC}/src/VBox/Main/webservice/vboxweb.cpp
+.else
+ @${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wno-dynamic-exception-spec \
+ -D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION' >> \
+ ${WRKSRC}/LocalConfig.kmk
.endif
@${REINPLACE_CMD} -e 's| -finline-limit=8000||' \
-e 's| -mpreferred-stack-boundary=2||' \
@@ -304,6 +305,9 @@ post-patch:
@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.kmk \
${WRKSRC}/src/VBox/Runtime/Makefile.kmk
@${ECHO_CMD} 'VBOX_ICONV_DEFS = LIBICONV_PLUG' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD && ${ARCH} == i386
+ @${ECHO_CMD} 'VBOX_FREEBSD = -fPIC' >> ${WRKSRC}/LocalConfig.kmk
.endif
@${REINPLACE_CMD} -e 's|%%VBOX_DIR%%|${VBOX_DIR}|g' \
-e 's|%%VBOX_ETC%%|${VBOX_ETC}|g' \
@@ -312,6 +316,10 @@ post-patch:
@${REINPLACE_CMD} \
-e 's|^versions =.*|versions = ["${PYTHON_VER}${PYTHON_ABIVER}"]|' \
${WRKSRC}/src/libs/xpcom18a4/python/gen_python_deps.py
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1400093
+ @${REINPLACE_CMD} -e 's|enum vtype|enum enum_vtype_uint8|g' \
+ ${WRKSRC}/src/VBox/Additions/freebsd/vboxvfs/vboxvfs*.[ch]
+.endif
do-build:
cd ${WRKSRC} && ${SH} -c '. ${WRKSRC}/env.sh && \
diff --git a/emulators/virtualbox-ose-legacy/files/patch-C++17 b/emulators/virtualbox-ose-legacy/files/patch-C++17
new file mode 100644
index 000000000000..494705677aba
--- /dev/null
+++ b/emulators/virtualbox-ose-legacy/files/patch-C++17
@@ -0,0 +1,301 @@
+--- src/VBox/Runtime/common/log/logcom.cpp
++++ src/VBox/Runtime/common/log/logcom.cpp
+@@ -121,6 +121,6 @@
+ for (pu8 = (const uint8_t *)pach; cb-- > 0; pu8++)
+ {
+- register unsigned cMaxWait;
+- register uint8_t u8;
++ unsigned cMaxWait;
++ uint8_t u8;
+
+ /* expand \n -> \r\n */
+--- src/VBox/Runtime/common/table/avl_Range.cpp.h
++++ src/VBox/Runtime/common/table/avl_Range.cpp.h
+@@ -36,7 +36,7 @@
+ * @param Key The Key to find matching range for.
+ */
+-KAVL_DECL(PKAVLNODECORE) KAVL_FN(RangeGet)(PPKAVLNODECORE ppTree, register KAVLKEY Key)
++KAVL_DECL(PKAVLNODECORE) KAVL_FN(RangeGet)(PPKAVLNODECORE ppTree, KAVLKEY Key)
+ {
+- register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
++ PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
+ if (pNode)
+ {
+--- src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h
++++ src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h
+@@ -44,5 +44,5 @@
+ KAVL_DECL(PKAVLNODECORE) KAVL_FN(GetBestFit)(PPKAVLNODECORE ppTree, KAVLKEY Key, bool fAbove)
+ {
+- register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
++ PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
+ if (pNode)
+ {
+--- src/VBox/Runtime/common/table/avl_Get.cpp.h
++++ src/VBox/Runtime/common/table/avl_Get.cpp.h
+@@ -38,5 +38,5 @@
+ KAVL_DECL(PKAVLNODECORE) KAVL_FN(Get)(PPKAVLNODECORE ppTree, KAVLKEY Key)
+ {
+- register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
++ PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree);
+
+ if (pNode)
+--- src/VBox/Runtime/common/table/avl_Base.cpp.h
++++ src/VBox/Runtime/common/table/avl_Base.cpp.h
+@@ -267,5 +267,5 @@
+ else
+ {
+- register unsigned char uchHeight = (unsigned char)(KMAX(uchLeftHeight, uchRightHeight) + 1);
++ unsigned char uchHeight = (unsigned char)(KMAX(uchLeftHeight, uchRightHeight) + 1);
+ if (uchHeight == pNode->uchHeight)
+ break;
+@@ -301,8 +301,8 @@
+ KAVLSTACK AVLStack;
+ PPKAVLNODECORE ppCurNode = ppTree;
+- register PKAVLNODECORE pCurNode;
+- register KAVLKEY Key = pNode->Key; NOREF(Key);
++ PKAVLNODECORE pCurNode;
++ KAVLKEY Key = pNode->Key; NOREF(Key);
+ #ifdef KAVL_RANGE
+- register KAVLKEY KeyLast = pNode->KeyLast; NOREF(KeyLast);
++ KAVLKEY KeyLast = pNode->KeyLast; NOREF(KeyLast);
+ #endif
+
+@@ -401,5 +401,5 @@
+ KAVLSTACK AVLStack;
+ PPKAVLNODECORE ppDeleteNode = ppTree;
+- register PKAVLNODECORE pDeleteNode;
++ PKAVLNODECORE pDeleteNode;
+
+ AVLStack.cEntries = 0;
+@@ -428,5 +428,5 @@
+ const unsigned iStackEntry = AVLStack.cEntries;
+ PPKAVLNODECORE ppLeftLeast = &pDeleteNode->pLeft;
+- register PKAVLNODECORE pLeftLeast = KAVL_GET_POINTER(ppLeftLeast);
++ PKAVLNODECORE pLeftLeast = KAVL_GET_POINTER(ppLeftLeast);
+
+ while (pLeftLeast->pRight != KAVL_NULL)
+--- src/VBox/Runtime/common/string/utf-16.cpp
++++ src/VBox/Runtime/common/string/utf-16.cpp
+@@ -195,5 +195,5 @@
+
+
+-RTDECL(int) RTUtf16Cmp(register PCRTUTF16 pwsz1, register PCRTUTF16 pwsz2)
++RTDECL(int) RTUtf16Cmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2)
+ {
+ if (pwsz1 == pwsz2)
+@@ -206,6 +206,6 @@
+ for (;;)
+ {
+- register RTUTF16 wcs = *pwsz1;
+- register int iDiff = wcs - *pwsz2;
++ RTUTF16 wcs = *pwsz1;
++ int iDiff = wcs - *pwsz2;
+ if (iDiff || !wcs)
+ return iDiff;
+--- src/VBox/Runtime/common/string/utf-16-case.cpp
++++ src/VBox/Runtime/common/string/utf-16-case.cpp
+@@ -40,5 +40,5 @@
+
+
+-RTDECL(int) RTUtf16ICmp(register PCRTUTF16 pwsz1, register PCRTUTF16 pwsz2)
++RTDECL(int) RTUtf16ICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2)
+ {
+ if (pwsz1 == pwsz2)
+@@ -52,7 +52,7 @@
+ for (;;)
+ {
+- register RTUTF16 wc1 = *pwsz1;
+- register RTUTF16 wc2 = *pwsz2;
+- register int iDiff = wc1 - wc2;
++ RTUTF16 wc1 = *pwsz1;
++ RTUTF16 wc2 = *pwsz2;
++ int iDiff = wc1 - wc2;
+ if (iDiff)
+ {
+@@ -107,5 +107,5 @@
+
+
+-RTDECL(int) RTUtf16BigICmp(register PCRTUTF16 pwsz1, register PCRTUTF16 pwsz2)
++RTDECL(int) RTUtf16BigICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2)
+ {
+ if (pwsz1 == pwsz2)
+@@ -119,7 +119,7 @@
+ for (;;)
+ {
+- register RTUTF16 wc1 = *pwsz1;
+- register RTUTF16 wc2 = *pwsz2;
+- register int iDiff = wc1 - wc2;
++ RTUTF16 wc1 = *pwsz1;
++ RTUTF16 wc2 = *pwsz2;
++ int iDiff = wc1 - wc2;
+ if (iDiff)
+ {
+@@ -217,5 +217,5 @@
+
+
+-RTDECL(int) RTUtf16NICmp(register PCRTUTF16 pwsz1, register PCRTUTF16 pwsz2, size_t cwcMax)
++RTDECL(int) RTUtf16NICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2, size_t cwcMax)
+ {
+ if (pwsz1 == pwsz2)
+@@ -229,7 +229,7 @@
+ while (cwcMax-- > 0)
+ {
+- register RTUTF16 wc1 = *pwsz1;
+- register RTUTF16 wc2 = *pwsz2;
+- register int iDiff = wc1 - wc2;
++ RTUTF16 wc1 = *pwsz1;
++ RTUTF16 wc2 = *pwsz2;
++ int iDiff = wc1 - wc2;
+ if (iDiff)
+ {
+@@ -290,5 +290,5 @@
+
+
+-RTDECL(int) RTUtf16BigNICmp(register PCRTUTF16 pwsz1, register PCRTUTF16 pwsz2, size_t cwcMax)
++RTDECL(int) RTUtf16BigNICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2, size_t cwcMax)
+ {
+ if (pwsz1 == pwsz2)
+@@ -302,7 +302,7 @@
+ while (cwcMax-- > 0)
+ {
+- register RTUTF16 wc1 = *pwsz1;
+- register RTUTF16 wc2 = *pwsz2;
+- register int iDiff = wc1 - wc2;
++ RTUTF16 wc1 = *pwsz1;
++ RTUTF16 wc2 = *pwsz2;
++ int iDiff = wc1 - wc2;
+ if (iDiff)
+ {
+--- src/VBox/HostDrivers/VBoxUSB/USBLib.cpp.orig
++++ src/VBox/HostDrivers/VBoxUSB/USBLib.cpp
+@@ -45,11 +45,11 @@ USBLIB_DECL(uint64_t) USBLibHashSerial(const char *psz
+ if (!pszSerial)
+ pszSerial = "";
+
+- register const uint8_t *pu8 = (const uint8_t *)pszSerial;
+- register uint64_t u64 = UINT64_C(14695981039346656037);
++ const uint8_t *pu8 = (const uint8_t *)pszSerial;
++ uint64_t u64 = UINT64_C(14695981039346656037);
+ for (;;)
+ {
+- register uint8_t u8 = *pu8;
++ uint8_t u8 = *pu8;
+ if (!u8)
+ break;
+ u64 = (u64 * UINT64_C(1099511628211)) ^ u8;
+--- src/VBox/Runtime/common/checksum/crc32-zlib.cpp.orig
++++ src/VBox/Runtime/common/checksum/crc32-zlib.cpp
+@@ -51,7 +51,7 @@ static uint32_t rtCrc32ProcessTooBig(uint32_t uCRC32,
+ return uCRC32;
+ }
+
+-RTDECL(uint32_t) RTCrc32(const void *pv, register size_t cb)
++RTDECL(uint32_t) RTCrc32(const void *pv, size_t cb)
+ {
+ uint32_t uCrc = crc32(0, NULL, 0);
+ if (RT_UNLIKELY((uInt)cb == cb))
+--- src/VBox/Devices/Network/DevPCNet.cpp.orig
++++ src/VBox/Devices/Network/DevPCNet.cpp
+@@ -1242,8 +1242,8 @@ static void pcnetSoftReset(PPCNETSTATE pThis)
+ */
+ static void pcnetUpdateIrq(PPCNETSTATE pThis)
+ {
+- register int iISR = 0;
+- register uint16_t csr0 = pThis->aCSR[0];
++ int iISR = 0;
++ uint16_t csr0 = pThis->aCSR[0];
+
+ csr0 &= ~0x0080; /* clear INTR */
+
+--- src/VBox/VMM/VMMAll/PGMAllGst.h.orig
++++ src/VBox/VMM/VMMAll/PGMAllGst.h
+@@ -92,7 +92,7 @@ DECLINLINE(int) PGM_GST_NAME(Walk)(PVMCPU pVCpu, RTGCP
+ return PGM_GST_NAME(WalkReturnNotPresent)(pVCpu, pWalk, 8);
+ # endif
+
+- uint32_t register fEffective = X86_PTE_RW | X86_PTE_US | X86_PTE_PWT | X86_PTE_PCD | X86_PTE_A | 1;
++ uint32_t fEffective = X86_PTE_RW | X86_PTE_US | X86_PTE_PWT | X86_PTE_PCD | X86_PTE_A | 1;
+ {
+ # if PGM_GST_TYPE == PGM_TYPE_AMD64
+ /*
+@@ -102,9 +102,9 @@ DECLINLINE(int) PGM_GST_NAME(Walk)(PVMCPU pVCpu, RTGCP
+ if (RT_SUCCESS(rc)) { /* probable */ }
+ else return PGM_GST_NAME(WalkReturnBadPhysAddr)(pVCpu, pWalk, 4, rc);
+
+- PX86PML4E register pPml4e;
++ PX86PML4E pPml4e;
+ pWalk->pPml4e = pPml4e = &pWalk->pPml4->a[(GCPtr >> X86_PML4_SHIFT) & X86_PML4_MASK];
+- X86PML4E register Pml4e;
++ X86PML4E Pml4e;
+ pWalk->Pml4e.u = Pml4e.u = pPml4e->u;
+
+ if (Pml4e.n.u1Present) { /* probable */ }
+@@ -131,9 +131,9 @@ DECLINLINE(int) PGM_GST_NAME(Walk)(PVMCPU pVCpu, RTGCP
+ }
+ {
+ # if PGM_GST_TYPE == PGM_TYPE_AMD64 || PGM_GST_TYPE == PGM_TYPE_PAE
+- PX86PDPE register pPdpe;
++ PX86PDPE pPdpe;
+ pWalk->pPdpe = pPdpe = &pWalk->pPdpt->a[(GCPtr >> GST_PDPT_SHIFT) & GST_PDPT_MASK];
+- X86PDPE register Pdpe;
++ X86PDPE Pdpe;
+ pWalk->Pdpe.u = Pdpe.u = pPdpe->u;
+
+ if (Pdpe.n.u1Present) { /* probable */ }
+@@ -164,7 +164,7 @@ DECLINLINE(int) PGM_GST_NAME(Walk)(PVMCPU pVCpu, RTGCP
+ # endif
+ }
+ {
+- PGSTPDE register pPde;
++ PGSTPDE pPde;
+ pWalk->pPde = pPde = &pWalk->pPd->a[(GCPtr >> GST_PD_SHIFT) & GST_PD_MASK];
+ GSTPDE Pde;
+ pWalk->Pde.u = Pde.u = pPde->u;
+@@ -221,9 +221,9 @@ DECLINLINE(int) PGM_GST_NAME(Walk)(PVMCPU pVCpu, RTGCP
+ else return PGM_GST_NAME(WalkReturnBadPhysAddr)(pVCpu, pWalk, 1, rc);
+ }
+ {
+- PGSTPTE register pPte;
++ PGSTPTE pPte;
+ pWalk->pPte = pPte = &pWalk->pPt->a[(GCPtr >> GST_PT_SHIFT) & GST_PT_MASK];
+- GSTPTE register Pte;
++ GSTPTE Pte;
+ pWalk->Pte.u = Pte.u = pPte->u;
+
+ if (Pte.n.u1Present) { /* probable */ }
+--- include/VBox/HostServices/Service.h.orig
++++ include/VBox/HostServices/Service.h
+@@ -358,11 +358,11 @@ class AbstractService: public RTCNonCopyable (public)
+ else
+ {
+ RT_GCC_NO_WARN_DEPRECATED_BEGIN
+- std::auto_ptr<AbstractService> apService;
++ std::unique_ptr<AbstractService> apService;
+ /* No exceptions may propagate outside. */
+ try
+ {
+- apService = std::auto_ptr<AbstractService>(new T(pTable->pHelpers));
++ apService = std::unique_ptr<AbstractService>(new T(pTable->pHelpers));
+ } catch (int rcThrown)
+ {
+ rc = rcThrown;
+--- src/VBox/Main/src-server/PerformanceImpl.cpp.orig
++++ src/VBox/Main/src-server/PerformanceImpl.cpp
+@@ -699,7 +699,7 @@ void PerformanceCollector::samplerCallback(uint64_t iT
+ * Those should be destroyed now.
+ */
+ Log7Func(("{%p}: before remove_if: toBeCollected.size()=%d\n", this, toBeCollected.size()));
+- toBeCollected.remove_if(std::mem_fun(&pm::BaseMetric::isUnregistered));
++ toBeCollected.remove_if(std::mem_fn(&pm::BaseMetric::isUnregistered));
+ Log7Func(("{%p}: after remove_if: toBeCollected.size()=%d\n", this, toBeCollected.size()));
+ Log7Func(("{%p}: before remove_if: m.baseMetrics.size()=%d\n", this, m.baseMetrics.size()));
+ for (it = m.baseMetrics.begin(); it != m.baseMetrics.end();)
+@@ -720,7 +720,7 @@ void PerformanceCollector::samplerCallback(uint64_t iT
+
+ /* Finally, collect the data */
+ std::for_each(toBeCollected.begin(), toBeCollected.end(),
+- std::mem_fun(&pm::BaseMetric::collect));
++ std::mem_fn(&pm::BaseMetric::collect));
+ Log4Func(("{%p}: LEAVE\n", this));
+ }
+
diff --git a/emulators/virtualbox-ose-legacy/files/patch-Config.kmk b/emulators/virtualbox-ose-legacy/files/patch-Config.kmk
index 784ec4295655..d0f88dcff48b 100644
--- a/emulators/virtualbox-ose-legacy/files/patch-Config.kmk
+++ b/emulators/virtualbox-ose-legacy/files/patch-Config.kmk
@@ -93,6 +93,16 @@
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)).
+@@ -3068,6 +3069,9 @@ ifeq ($(KBUILD_TARGET_ARCH),x86)
+ # (The '<=' operator is for prepending (kmk specific).)
+ VBOX_GCC_OPT <= -march=i586
+ endif
++ ifeq ($(KBUILD_TARGET),freebsd)
++ VBOX_GCC_OPT <= $(VBOX_FREEBSD)
++ endif
+ endif
+
+
@@ -4218,6 +4219,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)
diff --git a/emulators/virtualbox-ose-nox11-legacy/Makefile b/emulators/virtualbox-ose-nox11-legacy/Makefile
index 679f9e07564c..33102a46f019 100644
--- a/emulators/virtualbox-ose-nox11-legacy/Makefile
+++ b/emulators/virtualbox-ose-nox11-legacy/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 16
+PORTREVISION= 17
PKGNAMESUFFIX= -nox11-legacy
OPTIONS_EXCLUDE= ALSA DBUS DEBUG GUESTADDITIONS DOCS NLS PULSEAUDIO