Index: emulators/virtualbox-ose/Makefile =================================================================== --- emulators/virtualbox-ose/Makefile (revision 491834) +++ emulators/virtualbox-ose/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= virtualbox-ose -PORTVERSION= 5.2.26 +PORTVERSION= 6.0.4 CATEGORIES= emulators MASTER_SITES= https://download.virtualbox.org/virtualbox/${PORTVERSION}/ DISTFILES= VirtualBox-${PORTVERSION}${EXTRACT_SUFX} ${GUESTADDITIONS} @@ -53,7 +53,7 @@ VBOX_PROGS= VBoxAutostart VBoxBalloonCtrl VBoxBugR VBOX_UTILS= VBoxExtPackHelperApp VBoxNetAdpCtl VBoxNetDHCP VBoxNetNAT \ VBoxSVC VBoxXPCOMIPCD -OPTIONS_DEFINE= ALSA DBUS DEBUG GUESTADDITIONS MANUAL NLS PULSEAUDIO \ +OPTIONS_DEFINE= ALSA DBUS DEBUG GUESTADDITIONS MANUAL NLS OPUS PULSEAUDIO \ PYTHON QT5 R0LOGGING UDPTUNNEL VDE VNC WEBSERVICE VPX X11 OPTIONS_DEFAULT= DBUS QT5 UDPTUNNEL VNC WEBSERVICE X11 OPTIONS_SUB= yes @@ -62,6 +62,7 @@ DEBUG_DESC= Debug symbols, additional logs and ass GUESTADDITIONS_DESC= Build with Guest Additions MANUAL_DESC= Build with user manual 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 @@ -78,6 +79,9 @@ DEBUG_CONFIGURE_ON= --build-debug MANUAL_BUILD_DEPENDS= ${LOCALBASE}/share/xml/docbook/4.4/docbookx.dtd:textproc/docbook-xml MANUAL_CONFIGURE_OFF= --disable-docs NLS_IMPLIES= QT5 +OPUS_CONFIGURE_OFF= --disable-libopus +OPUS_LIB_DEPENDS= libopus.so:audio/opus +OPUS_IMPLIES= VPX PULSEAUDIO_CONFIGURE_OFF= --disable-pulse PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PYTHON_CONFIGURE_OFF= --disable-python @@ -154,7 +158,7 @@ USE_QT= buildtools_build core dbus gui linguistto USE_QT+= printsupport widgets x11extras USE_XORG= xcb INSTALLS_ICONS= yes -VBOX_PROGS+= VirtualBox +VBOX_PROGS+= VirtualBox VirtualBoxVM VBOX_UTILS+= VBoxTestOGL VBOX_WITH_QT= 1 .else @@ -275,6 +279,9 @@ post-patch: @${ECHO} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long' >> \ ${WRKSRC}/LocalConfig.kmk .endif +.if empty(PORT_OPTIONS:MX11) + @${ECHO} 'VBOX_WITH_VMSVGA3D =' >> ${WRKSRC}/LocalConfig.kmk +.endif .if ${COMPILER_TYPE} == clang @${REINPLACE_CMD} -e 's| -finline-limit=8000||' \ -e 's| -mpreferred-stack-boundary=2||' ${WRKSRC}/Config.kmk Index: emulators/virtualbox-ose/distinfo =================================================================== --- emulators/virtualbox-ose/distinfo (revision 491834) +++ emulators/virtualbox-ose/distinfo (working copy) @@ -1,5 +1,5 @@ -TIMESTAMP = 1548732081 -SHA256 (VirtualBox-5.2.26.tar.bz2) = 4debe583463be3917ac60ad76a31f6db27586423d86f1f53c060d70d5e70d467 -SIZE (VirtualBox-5.2.26.tar.bz2) = 118371765 -SHA256 (VBoxGuestAdditions_5.2.26.iso) = b927c5d0d4c97a9da2522daad41fe96b616ed06bfb0c883f9c42aad2244f7c38 -SIZE (VBoxGuestAdditions_5.2.26.iso) = 58433536 +TIMESTAMP = 1548976366 +SHA256 (VirtualBox-6.0.4.tar.bz2) = f80b0c68182c946fb74ada8034960c38159ad91085b153da1277e4f191af6e1f +SIZE (VirtualBox-6.0.4.tar.bz2) = 155233564 +SHA256 (VBoxGuestAdditions_6.0.4.iso) = 749b0c76aa6b588e3310d718fc90ea472fdc0b7c8953f7419c20be7e7fa6584a +SIZE (VBoxGuestAdditions_6.0.4.iso) = 85917696 Index: emulators/virtualbox-ose/files/extrapatch-Config.kmk =================================================================== --- emulators/virtualbox-ose/files/extrapatch-Config.kmk (revision 491834) +++ emulators/virtualbox-ose/files/extrapatch-Config.kmk (working copy) @@ -1,22 +1,22 @@ ---- Config.kmk.orig 2016-07-18 11:50:32 UTC +--- Config.kmk.orig 2019-01-25 18:10:01 UTC +++ Config.kmk -@@ -3537,6 +3537,7 @@ ifdef VBOX_WITH_RAW_MODE +@@ -4249,6 +4249,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) + TEMPLATE_VBoxRc_CXXFLAGS.freebsd = -fno-builtin - ifeq ($(KBUILD_TARGET),solaris) - TEMPLATE_VBoxRc_LDFLAGS = -r - else -@@ -3677,6 +3678,7 @@ ifeq ($(VBOX_LDR_FMT),elf) + if $(VBOX_GCC32_VERSION_CC) < 30400 + TEMPLATE_VBoxRc_DEFS += RT_WITHOUT_PRAGMA_ONCE + endif +@@ -4396,6 +4397,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) +TEMPLATE_VBoxR0_CXXFLAGS.freebsd = -fno-builtin - 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) -@@ -3945,7 +3947,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CM + TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables -ffreestanding + TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables + if $(VBOX_GCC_VERSION_CC) < 30400 +@@ -4815,7 +4817,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS | xargs -J% objcopy % $(out) ## Strip debug info (comment out if debugging or something). Index: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderAdditions.cpp =================================================================== --- emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderAdditions.cpp (revision 491834) +++ emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderAdditions.cpp (nonexistent) @@ -1,11 +0,0 @@ ---- src/VBox/Frontends/VirtualBox/src/net/UIDownloaderAdditions.cpp.orig 2017-01-17 07:26:50 UTC -+++ src/VBox/Frontends/VirtualBox/src/net/UIDownloaderAdditions.cpp -@@ -143,7 +143,7 @@ void UIDownloaderAdditions::handleVerifi - { - const QString strFileName = strRecord.section(" *", 1); - const QString strDownloadedSumm = strRecord.section(" *", 0, 0); -- if (strFileName == source().fileName()) -+ if (strFileName == QFileInfo(source().toString()).fileName()) - { - /* Calc the SHA-256 on the bytes, creating a string: */ - uint8_t abHash[RTSHA256_HASH_SIZE]; Property changes on: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderAdditions.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderExtensionPack.cpp =================================================================== --- emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderExtensionPack.cpp (revision 491834) +++ emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderExtensionPack.cpp (nonexistent) @@ -1,11 +0,0 @@ ---- src/VBox/Frontends/VirtualBox/src/net/UIDownloaderExtensionPack.cpp.orig 2017-01-17 07:26:50 UTC -+++ src/VBox/Frontends/VirtualBox/src/net/UIDownloaderExtensionPack.cpp -@@ -127,7 +127,7 @@ void UIDownloaderExtensionPack::handleVe - { - const QString strFileName = strRecord.section(" *", 1); - const QString strDownloadedSumm = strRecord.section(" *", 0, 0); -- if (strFileName == source().fileName()) -+ if (strFileName == QFileInfo(source().toString()).fileName()) - { - /* Calc the SHA-256 on the bytes, creating a string: */ - uint8_t abHash[RTSHA256_HASH_SIZE]; Property changes on: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_net_UIDownloaderExtensionPack.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_settings_global_UIGlobalSettingsNetworkDetailsHost.cpp =================================================================== --- emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_settings_global_UIGlobalSettingsNetworkDetailsHost.cpp (revision 491834) +++ emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_settings_global_UIGlobalSettingsNetworkDetailsHost.cpp (nonexistent) @@ -1,10 +0,0 @@ ---- src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsHost.cpp.orig 2017-03-08 17:19:57 UTC -+++ src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsHost.cpp -@@ -243,6 +243,6 @@ QString UIGlobalSettingsNetworkDetailsHo - address.prepend(QString::number(uPart)); - uAddress = uAddress >> 8; - } -- return address.join('.'); -+ return address.join("."); - } - Property changes on: emulators/virtualbox-ose/files/extrapatch-src_VBox_Frontends_VirtualBox_src_settings_global_UIGlobalSettingsNetworkDetailsHost.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/patch-Config.kmk =================================================================== --- emulators/virtualbox-ose/files/patch-Config.kmk (revision 491834) +++ emulators/virtualbox-ose/files/patch-Config.kmk (working copy) @@ -1,6 +1,6 @@ ---- Config.kmk.orig 2019-01-14 14:53:56 UTC +--- Config.kmk.orig 2019-01-25 18:10:01 UTC +++ Config.kmk -@@ -445,11 +445,11 @@ ifn1of ($(KBUILD_TARGET), win darwin) +@@ -456,11 +456,11 @@ ifn1of ($(KBUILD_TARGET), win darwin) # Enable OSS audio support. VBOX_WITH_AUDIO_OSS = 1 endif @@ -14,7 +14,7 @@ # Enable PulseAudio audio support. VBOX_WITH_AUDIO_PULSE = 1 endif -@@ -464,11 +464,11 @@ VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT = 1 +@@ -475,11 +475,11 @@ VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT = 1 # Enable PCI passthrough support. VBOX_WITH_PCI_PASSTHROUGH = 1 # Enable statically linked dbus support. @@ -28,16 +28,16 @@ VBOX_WITH_PAM = 1 endif # Enable internal networking. -@@ -664,7 +664,7 @@ VBOX_WITH_TESTCASES = 1 - VBOX_WITH_VDITOOL = - # Enable this to build vbox-img even if VBOX_WITH_TESTCASES is disabled - VBOX_WITH_VBOX_IMG = --if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 linux.x86 linux.amd64 solaris.amd64 win.x86 win.amd64) -+if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 freebsd.x86 freebsd.amd64 linux.x86 linux.amd64 solaris.amd64 win.x86 win.amd64) - # Enables the video capturing support. - VBOX_WITH_VIDEOREC = 1 - # Enable VPX (VP8 / VP9 codec), used for video capturing. -@@ -992,10 +992,6 @@ ifeq ($(KBUILD_TARGET),darwin) +@@ -487,7 +487,7 @@ VBOX_WITH_INTERNAL_NETWORKING = 1 + # Enable vmsvga (svga2) graphics device variant, 2D part + VBOX_WITH_VMSVGA = 1 + # Enable vmsvga (svga2) graphics device variant, 3D part +-if1of ($(KBUILD_TARGET), darwin linux win) ++if1of ($(KBUILD_TARGET), darwin freebsd linux win) + VBOX_WITH_VMSVGA3D = 1 + endif + # Enable Host Guest Shared Memory Interface. +@@ -1029,10 +1029,6 @@ ifeq ($(KBUILD_TARGET),darwin) VBOX_WITH_VBOXSDL= endif @@ -48,7 +48,7 @@ ifeq ($(KBUILD_TARGET),haiku) # Don't bother with SDL ttf for now. VBOX_WITH_SECURELABEL= -@@ -1155,7 +1151,7 @@ ifdef VBOX_OSE +@@ -1195,7 +1191,7 @@ ifdef VBOX_OSE VBOX_WITH_KCHMVIEWER= VBOX_WITH_PLUGIN_CRYPT= VBOX_WITH_DRAG_AND_DROP_PROMISES= @@ -57,25 +57,7 @@ VBOX_WITH_DOCS= VBOX_WITH_DOCS_PACKING= endif -@@ -1176,13 +1172,13 @@ ifdef VBOX_OSE - ifn1of ($(KBUILD_TARGET), darwin linux solaris win) - VBOX_WITH_INSTALLER= - endif -+ # Undefine codec libraries which are not needed. -+ VBOX_WITH_LIBOPUS= -+ # Disable video recording (with audio support). -+ VBOX_WITH_AUDIO_VIDEOREC= - if1of ($(KBUILD_TARGET), win) -- # Undefine codec libraries which are not needed. - VBOX_WITH_LIBVPX= -- VBOX_WITH_LIBOPUS= -- # Disable video recording (with audio support). - VBOX_WITH_VIDEOREC= -- VBOX_WITH_AUDIO_VIDEOREC= - endif - # branding - VBOX_BRAND_LICENSE_HTML := $(PATH_ROOT)/doc/License-gpl-2.0.html -@@ -4541,7 +4537,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ +@@ -4782,7 +4778,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \ $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ -nostdinc -std=c99 @@ -84,7 +66,15 @@ 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 -@@ -4878,12 +4874,8 @@ TEMPLATE_VBOXR3EXE_LDFLAGS += -fno-pic +@@ -5101,6 +5097,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) +@@ -5138,12 +5135,8 @@ TEMPLATE_VBOXR3EXE_LDFLAGS += -fno-pic TEMPLATE_VBOXR3EXE_TOOL = GXX3 TEMPLATE_VBOXR3EXE_LIBS = pthread TEMPLATE_VBOXR3EXE_INCS += \ @@ -97,7 +87,7 @@ /usr/local/lib else ifeq ($(KBUILD_TARGET),netbsd) TEMPLATE_VBOXR3EXE_TOOL = GXX3 -@@ -5168,7 +5160,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! +@@ -5452,7 +5445,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) @@ -106,8 +96,11 @@ # 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)) -@@ -5699,12 +5691,8 @@ TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTI +@@ -6032,14 +6025,11 @@ TEMPLATE_VBOXMAINEXE_TOOL = GXX3 + TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) network stdc++ supc++ + else if1of ($(KBUILD_TARGET), freebsd openbsd) TEMPLATE_VBOXMAINEXE_TOOL = GXX3 ++TEMPLATE_VBOXMAINEXE_LDFLAGS.freebsd = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed) TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) TEMPLATE_VBOXMAINEXE_INCS += \ - /usr/include \ @@ -119,9 +112,11 @@ /usr/local/lib else ifeq ($(KBUILD_TARGET),netbsd) TEMPLATE_VBOXMAINEXE_TOOL = GXX3 -@@ -6238,12 +6226,8 @@ ifdef VBOX_WITH_QTGUI +@@ -6622,13 +6612,10 @@ ifdef VBOX_WITH_QTGUI + TEMPLATE_VBOXQTGUIEXE_LIBPATH += \ $(VBOX_LIBPATH_X11) ifeq ($(KBUILD_TARGET),freebsd) ++ TEMPLATE_VBOXQTGUIEXE_LDFLAGS.freebsd = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed) TEMPLATE_VBOXQTGUIEXE_INCS += \ - /usr/include \ - /usr/X11R6/include \ @@ -132,7 +127,7 @@ /usr/local/lib endif ifeq ($(KBUILD_TARGET),solaris) -@@ -6466,12 +6450,8 @@ TEMPLATE_VBoxBldProg_LIBPATH += \ +@@ -6871,12 +6858,8 @@ TEMPLATE_VBoxBldProg_LIBPATH += \ TEMPLATE_VBoxBldProg_TOOL = GXX3 TEMPLATE_VBoxBldProg_LIBS = pthread TEMPLATE_VBoxBldProg_INCS += \ @@ -145,7 +140,23 @@ /usr/local/lib else ifeq ($(KBUILD_HOST),netbsd) TEMPLATE_VBoxBldProg_TOOL = GXX3 -@@ -6872,6 +6852,7 @@ TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \ +@@ -7018,6 +7001,7 @@ TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS.linux = \ + $(VBOX_GCC_fno-stack-protector) + TEMPLATE_VBOXGUESTR3EXE_CFLAGS.linux = $(TEMPLATE_VBOXGUESTR3EXE_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) + + # +@@ -7228,6 +7212,7 @@ TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TYPE) = + TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE) + TEMPLATE_VBOXGUESTR3XF86MOD_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 +@@ -7337,6 +7322,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-configure =================================================================== --- emulators/virtualbox-ose/files/patch-configure (revision 491834) +++ emulators/virtualbox-ose/files/patch-configure (working copy) @@ -1,6 +1,6 @@ ---- configure.orig 2018-07-16 14:56:48 UTC +--- configure.orig 2019-01-25 18:10:01 UTC +++ configure -@@ -138,10 +138,14 @@ CXX_FLAGS="" +@@ -139,10 +139,14 @@ CXX_FLAGS="" if [ "$OS" = "freebsd" ]; then INCCURL="-I/usr/local/include" LIBCURL="-L/usr/local/lib -lcurl" @@ -15,7 +15,7 @@ else INCCURL="" LIBCURL="-lcurl" -@@ -436,6 +440,9 @@ check_gcc() +@@ -445,6 +449,9 @@ check_gcc() elif [ $cc_maj -eq 4 -a $cc_min -eq 0 -a "$OS" = "darwin" ]; then log_success "found version $cc_ver" # gcc-4.0 is allowed for Darwin only @@ -24,8 +24,8 @@ + # gcc-4.2 is allowed for FreeBSD only elif [ $cc_maj -lt 4 \ -o \( $cc_maj -eq 4 -a $cc_min -lt 4 -a "$OS" != "darwin" \) \ - -o \( $cc_maj -eq 4 -a $cc_min -lt 2 -a "$OS" = "darwin" \) \ -@@ -1204,7 +1211,7 @@ extern "C" int main(void) + -o \( $cc_maj -eq 4 -a $cc_min -lt 2 -a "$OS" = "darwin" \) ]; then +@@ -1214,7 +1221,7 @@ extern "C" int main(void) #endif } EOF @@ -34,7 +34,7 @@ test_execute fi } -@@ -1504,8 +1511,7 @@ EOF +@@ -1514,8 +1521,7 @@ EOF if [ $? -eq 0 ]; then echo "(Qt5 from pkg-config)" >> $LOG FLGQT5=`pkg-config Qt5Core --cflags` @@ -44,7 +44,7 @@ INCQT5=`strip_I "$FLGQT5"` LIBDIR5=`pkg-config Qt5Core --variable=libdir` LIBQT5=`pkg-config Qt5Core --libs` -@@ -1644,7 +1650,7 @@ check_libopus() +@@ -1654,7 +1660,7 @@ check_libopus() fi cat > $ODIR.tmp_src.cc << EOF #include @@ -53,7 +53,7 @@ extern "C" int main(void) { OpusEncoder *test; -@@ -1976,8 +1982,8 @@ EOF +@@ -1986,8 +1992,8 @@ EOF echo "compiling the following source file:" >> $LOG cat $ODIR.tmp_src.cc >> $LOG echo "using the following command line:" >> $LOG @@ -64,7 +64,7 @@ if [ $? -eq 0 ]; then found=1 break -@@ -2449,7 +2455,7 @@ for option in "$@"; do +@@ -2463,7 +2469,7 @@ for option in "$@"; do --with-openssl-dir=*) OPENSSLDIR=`echo $option | cut -d'=' -f2` INCCRYPTO="-I${OPENSSLDIR}/include" @@ -73,16 +73,7 @@ ;; --with-ow-dir=*) WATCOM=`echo $option | cut -d'=' -f2` -@@ -2763,7 +2769,7 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then - check_ssl - check_curl - [ $WITH_LIBVPX -eq 1 ] && check_vpx -- check_libopus -+ [ $OSE -eq 0 -a "$OS" != "win" ] && check_libopus - [ "$OS" != "darwin" ] && check_z - [ "$OS" != "darwin" ] && check_png - [ $OSE -eq 0 -a "$OS" = "linux" ] && check_pam -@@ -2784,13 +2790,20 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then +@@ -2805,13 +2811,20 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then [ $WITH_PYTHON -eq 1 ] && check_python [ $WITH_JAVA -eq 1 ] && check_java @@ -104,7 +95,7 @@ fi fi -@@ -2806,14 +2819,6 @@ if [ "$OS" = "linux" ]; then +@@ -2827,14 +2840,6 @@ if [ "$OS" = "linux" ]; then cnf_append "VBOX_WITHOUT_LINUX_TEST_BUILDS" "1" fi if [ $ONLY_ADDITIONS -eq 0 ]; then Index: emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c =================================================================== --- emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c (revision 491834) +++ emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c (working copy) @@ -1,6 +1,22 @@ ---- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig 2017-10-18 07:06:43 UTC +--- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig 2019-01-25 18:12:28 UTC +++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c -@@ -93,8 +93,6 @@ struct VBoxGuestDeviceState +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -61,6 +62,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -102,8 +104,6 @@ struct VBoxGuestDeviceState struct resource *pIrqRes; /** Pointer to the IRQ handler. */ void *pfnIrqHandler; @@ -9,7 +25,7 @@ }; -@@ -104,8 +102,7 @@ struct VBoxGuestDeviceState +@@ -113,8 +113,7 @@ struct VBoxGuestDeviceState /* * Character device file handlers. */ @@ -19,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; -@@ -136,8 +133,7 @@ static struct cdevsw g_vgdrvFreeBSDCh +@@ -145,8 +144,7 @@ static struct cdevsw g_vgdrvFreeBSDChrDevSW = { .d_version = D_VERSION, .d_flags = D_TRACKCLOSE | D_NEEDMINOR, @@ -29,7 +45,7 @@ .d_ioctl = vgdrvFreeBSDIOCtl, .d_read = vgdrvFreeBSDRead, .d_write = vgdrvFreeBSDWrite, -@@ -145,81 +141,28 @@ static struct cdevsw g_vgdrvFreeBSDCh +@@ -154,81 +152,28 @@ static struct cdevsw g_vgdrvFreeBSDChrDevSW = .d_name = "vboxguest" }; @@ -118,7 +134,7 @@ { int rc; PVBOXGUESTSESSION pSession; -@@ -227,25 +170,18 @@ static int vgdrvFreeBSDOpen(struct cdev +@@ -240,12 +185,6 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp LogFlow(("vgdrvFreeBSDOpen:\n")); /* @@ -130,7 +146,9 @@ - /* * Create a new session. */ - rc = VGDrvCommonCreateUserSession(&g_DevExt, &pSession); + fRequestor = VMMDEV_REQUESTOR_USERMODE | VMMDEV_REQUESTOR_TRUST_NOT_GIVEN; +@@ -262,14 +201,13 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp + rc = VGDrvCommonCreateUserSession(&g_DevExt, fRequestor, &pSession); if (RT_SUCCESS(rc)) { - if (ASMAtomicCmpXchgPtr(&pDev->si_drv1, pSession, (void *)0x42)) @@ -150,7 +168,7 @@ } LogRel(("vgdrvFreeBSDOpen: failed. rc=%d\n", rc)); -@@ -253,33 +189,6 @@ static int vgdrvFreeBSDOpen(struct cdev +@@ -277,33 +215,6 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp } /** @@ -184,20 +202,21 @@ * I/O control request. * * @returns depends... -@@ -292,7 +201,11 @@ static int vgdrvFreeBSDClose(struct cdev +@@ -316,8 +227,12 @@ static int vgdrvFreeBSDClose(struct cdev *pDev, int fF static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long ulCmd, caddr_t pvData, int fFile, struct thread *pTd) { PVBOXGUESTSESSION pSession; - devfs_get_cdevpriv((void **)&pSession); + int rc; -+ + + rc = devfs_get_cdevpriv((void **)&pSession); + if (rc) + return rc; - ++ /* * Deal with the fast ioctl path first. -@@ -488,12 +401,14 @@ int VBOXCALL VBoxGuestIDC(void *pvSessio + */ +@@ -512,12 +427,14 @@ int VBOXCALL VBoxGuestIDC(void *pvSession, uintptr_t u static int vgdrvFreeBSDPoll(struct cdev *pDev, int fEvents, struct thread *td) { @@ -215,21 +234,22 @@ Log(("vgdrvFreeBSDPoll: no state data for %s\n", devtoname(pDev))); return (fEvents & (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM)); } -@@ -534,10 +449,7 @@ static int vgdrvFreeBSDDetach(device_t p +@@ -558,11 +475,8 @@ static int vgdrvFreeBSDDetach(device_t pDevice) /* * Reverse what we did in vgdrvFreeBSDAttach. */ - if (g_vgdrvFreeBSDEHTag != NULL) - EVENTHANDLER_DEREGISTER(dev_clone, g_vgdrvFreeBSDEHTag); -- -- clone_cleanup(&g_pvgdrvFreeBSDClones); + destroy_dev(g_pDev); +- clone_cleanup(&g_pvgdrvFreeBSDClones); +- vgdrvFreeBSDRemoveIRQ(pDevice, pState); -@@ -689,18 +601,21 @@ static int vgdrvFreeBSDAttach(device_t p - if (RT_SUCCESS(rc)) - { + if (pState->pVMMDevMemRes) +@@ -727,18 +641,21 @@ static int vgdrvFreeBSDAttach(device_t pDevice) + VGDrvCommonProcessOptionsFromHost(&g_DevExt); + /* - * Configure device cloning. + * Configure device. Index: emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest =================================================================== --- emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest (revision 491834) +++ emulators/virtualbox-ose/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest (working copy) @@ -1,6 +1,14 @@ ---- src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest.orig 2017-10-18 07:06:43 UTC +--- src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest.orig 2019-01-25 18:12:28 UTC +++ src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest -@@ -99,6 +99,7 @@ FILES_VBOXGUEST_NOBIN=" \ +@@ -63,6 +63,7 @@ FILES_VBOXGUEST_NOBIN=" \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ + ${PATH_ROOT}/include/iprt/crc.h=>include/iprt/crc.h \ +@@ -111,6 +112,7 @@ FILES_VBOXGUEST_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.h=>common/misc/handletable.h \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletablectx.cpp=>common/misc/handletablectx.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/once.cpp=>common/misc/once.c \ @@ -8,7 +16,7 @@ ${PATH_ROOT}/src/VBox/Runtime/common/misc/thread.cpp=>common/misc/thread.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \ -@@ -160,6 +161,7 @@ FILES_VBOXGUEST_NOBIN=" \ +@@ -181,6 +183,7 @@ FILES_VBOXGUEST_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/generic/errvars-generic.cpp=>generic/errvars-generic.c \ ${PATH_ROOT}/src/VBox/Runtime/generic/timer-generic.cpp=>generic/timer-generic.c \ ${PATH_ROOT}/src/VBox/Runtime/generic/mppresent-generic.cpp=>generic/mppresent-generic.c \ @@ -16,7 +24,7 @@ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.cpp=>r0drv/alloc-r0drv.c \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.h=>r0drv/alloc-r0drv.h \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/initterm-r0drv.cpp=>r0drv/initterm-r0drv.c \ -@@ -186,6 +188,7 @@ FILES_VBOXGUEST_NOBIN=" \ +@@ -207,6 +210,7 @@ FILES_VBOXGUEST_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h=>r0drv/freebsd/sleepqueue-r0drv-freebsd.h \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/semspinmutex-r0drv-generic.c=>r0drv/generic/semspinmutex-r0drv-generic.c \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/mpnotification-r0drv-generic.cpp=>r0drv/generic/mpnotification-r0drv-generic.c \ Index: emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-Makefile =================================================================== --- emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-Makefile (revision 491834) +++ emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-Makefile (working copy) @@ -1,6 +1,6 @@ ---- src/VBox/HostDrivers/Support/freebsd/Makefile.orig 2016-07-18 11:56:20 UTC +--- src/VBox/HostDrivers/Support/freebsd/Makefile.orig 2019-01-25 18:19:55 UTC +++ src/VBox/HostDrivers/Support/freebsd/Makefile -@@ -81,6 +81,7 @@ SRCS += \ +@@ -82,6 +82,7 @@ SRCS += \ assert.c \ handletable.c \ handletablectx.c \ @@ -8,12 +8,13 @@ once.c \ term.c \ thread.c -@@ -92,13 +93,14 @@ SRCS += \ +@@ -94,14 +95,15 @@ SRCS += \ RTStrCopy.c \ RTStrCopyEx.c \ RTStrCopyP.c \ + memchr.c \ strformat.c \ + strformatnum.c \ strformatrt.c \ strformattype.c \ + stringalloc.c \ Index: emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-files_vboxdrv =================================================================== --- emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-files_vboxdrv (revision 491834) +++ emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-Support-freebsd-files_vboxdrv (working copy) @@ -1,6 +1,6 @@ ---- src/VBox/HostDrivers/Support/freebsd/files_vboxdrv.orig 2016-07-18 11:56:20 UTC +--- src/VBox/HostDrivers/Support/freebsd/files_vboxdrv.orig 2019-01-25 18:19:55 UTC +++ src/VBox/HostDrivers/Support/freebsd/files_vboxdrv -@@ -116,6 +116,7 @@ FILES_VBOXDRV_NOBIN=" \ +@@ -119,6 +119,7 @@ FILES_VBOXDRV_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.cpp=>common/misc/handletable.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.h=>common/misc/handletable.h \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletablectx.cpp=>common/misc/handletablectx.c \ @@ -8,12 +8,13 @@ ${PATH_ROOT}/src/VBox/Runtime/common/misc/once.cpp=>common/misc/once.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/term.cpp=>common/misc/term.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/thread.cpp=>common/misc/thread.c \ -@@ -124,13 +125,14 @@ FILES_VBOXDRV_NOBIN=" \ +@@ -128,14 +129,15 @@ FILES_VBOXDRV_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/string/RTStrCopyEx.cpp=>common/string/RTStrCopyEx.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/RTStrNCmp.cpp=>common/string/RTStrNCmp.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/RTStrNLen.cpp=>common/string/RTStrNLen.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/string/memchr.cpp=>common/string/memchr.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/strformat.cpp=>common/string/strformat.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/string/strformatnum.cpp=>common/string/strformatnum.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/strformatrt.cpp=>common/string/strformatrt.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/strformattype.cpp=>common/string/strformattype.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/string/stringalloc.cpp=>common/string/stringalloc.c \ Index: emulators/virtualbox-ose/files/patch-src-VBox-Installer-freebsd-VBox.sh =================================================================== --- emulators/virtualbox-ose/files/patch-src-VBox-Installer-freebsd-VBox.sh (revision 491834) +++ emulators/virtualbox-ose/files/patch-src-VBox-Installer-freebsd-VBox.sh (working copy) @@ -1,6 +1,6 @@ --- src/VBox/Installer/freebsd/VBox.sh.orig 2016-08-27 05:10:34 UTC +++ src/VBox/Installer/freebsd/VBox.sh -@@ -0,0 +1,64 @@ +@@ -0,0 +1,67 @@ +#!/bin/sh +# +# Oracle VM VirtualBox startup script, FreeBSD hosts. @@ -38,6 +38,9 @@ + VirtualBox|virtualbox) + exec "$INSTALL_DIR/VirtualBox" "$@" + ;; ++ VirtualBoxVM|virtualboxvm) ++ exec "$INSTALL_DIR/VirtualBoxVM" "$@" ++ ;; + VBoxManage|vboxmanage) + exec "$INSTALL_DIR/VBoxManage" "$@" + ;; Index: emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c (revision 491834) +++ emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c (working copy) @@ -1,6 +1,6 @@ ---- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c.orig 2017-04-28 16:59:22.000000000 +0200 -+++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c 2017-07-12 19:24:26.109029000 +0200 -@@ -1,10 +1,5 @@ +--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c.orig 2019-01-25 18:12:34 UTC ++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c +@@ -1,8 +1,3 @@ -/* $Id: vboxvfs_vfsops.c $ */ -/** @file - * Description. @@ -7,11 +7,9 @@ - */ - /* - * Copyright (C) 2008-2017 Oracle Corporation + * Copyright (C) 2008-2019 Oracle Corporation * - * This file is part of VirtualBox Open Source Edition (OSE), as - * available from http://www.virtualbox.org. This file is free software; -@@ -14,245 +9,479 @@ +@@ -14,245 +9,478 @@ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. */ @@ -38,20 +36,26 @@ +#include -#include -- --#define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data) -- --static int vboxvfs_version = VBOXVFS_VERSION; +#include +#include ++#include "vboxvfs.h" ++ + #define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data) + +-static int vboxvfs_version = VBOXVFS_VERSION; ++#ifdef MALLOC_DECLARE ++MALLOC_DEFINE(M_VBOXVFS, "vboxvfs", "VBOX VFS"); ++#endif + -SYSCTL_NODE(_vfs, OID_AUTO, vboxvfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem"); -SYSCTL_INT(_vfs_vboxvfs, OID_AUTO, version, CTLFLAG_RD, &vboxvfs_version, 0, ""); -+#include "vboxvfs.h" ++static sfp_connection_t *sfprov = NULL; -/* global connection to the host service. */ -static VBGLSFCLIENT g_vboxSFClient; -+#define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data) ++static int vboxfs_version = VBOXVFS_VERSION; ++u_int vboxvfs_debug = 1; -static vfs_init_t vboxvfs_init; -static vfs_uninit_t vboxvfs_uninit; @@ -61,7 +65,10 @@ -static vfs_quotactl_t vboxvfs_quotactl; -static vfs_statfs_t vboxvfs_statfs; -static vfs_unmount_t vboxvfs_unmount; -- ++SYSCTL_NODE(_vfs, OID_AUTO, vboxfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem"); ++SYSCTL_INT(_vfs_vboxfs, OID_AUTO, version, CTLFLAG_RD, &vboxfs_version, 0, ""); ++SYSCTL_UINT(_vfs_vboxfs, OID_AUTO, debug, CTLFLAG_RW, &vboxvfs_debug, 0, "Debug level"); + -static struct vfsops vboxvfs_vfsops = { - .vfs_init = vboxvfs_init, - .vfs_cmount = vboxvfs_cmount, @@ -72,19 +79,6 @@ - .vfs_sync = vfs_stdsync, - .vfs_uninit = vboxvfs_uninit, - .vfs_unmount = vboxvfs_unmount, -+#ifdef MALLOC_DECLARE -+MALLOC_DEFINE(M_VBOXVFS, "vboxvfs", "VBOX VFS"); -+#endif -+ -+static sfp_connection_t *sfprov = NULL; -+ -+static int vboxfs_version = VBOXVFS_VERSION; -+u_int vboxvfs_debug = 1; -+ -+SYSCTL_NODE(_vfs, OID_AUTO, vboxfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem"); -+SYSCTL_INT(_vfs_vboxfs, OID_AUTO, version, CTLFLAG_RD, &vboxfs_version, 0, ""); -+SYSCTL_UINT(_vfs_vboxfs, OID_AUTO, debug, CTLFLAG_RW, &vboxvfs_debug, 0, "Debug level"); -+ +static vfs_init_t vboxfs_init; +static vfs_uninit_t vboxfs_uninit; +static vfs_cmount_t vboxfs_cmount; @@ -141,17 +135,9 @@ { - struct vboxvfs_mount_info args; - int rc = 0; -- -- printf("%s: Enter\n", __FUNCTION__); -- -- rc = copyin(data, &args, sizeof(struct vboxvfs_mount_info)); -- if (rc) -- return rc; + struct vboxfs_node *nnode; -- ma = mount_argf(ma, "uid", "%d", args.uid); -- ma = mount_argf(ma, "gid", "%d", args.gid); -- ma = mount_arg(ma, "from", args.name, -1); +- printf("%s: Enter\n", __FUNCTION__); + if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0) { + /* + * When a new tmpfs node is created for fully @@ -169,10 +155,16 @@ + */ + return (EBUSY); + } -+ + +- rc = copyin(data, &args, sizeof(struct vboxvfs_mount_info)); +- if (rc) +- return rc; + nnode = (struct vboxfs_node *)uma_zalloc_arg( + vsfmp->sf_node_pool, vsfmp, M_WAITOK); -+ + +- ma = mount_argf(ma, "uid", "%d", args.uid); +- ma = mount_argf(ma, "gid", "%d", args.gid); +- ma = mount_arg(ma, "from", args.name, -1); + /* Generic initialization. */ + nnode->sf_type = type; + nnode->sf_ino = vsfmp->sf_ino++; @@ -179,7 +171,8 @@ + nnode->sf_path = strdup(fullpath, M_VBOXVFS); + nnode->sf_parent = parent; + nnode->vboxfsmp = vsfmp; -+ + +- rc = kernel_mount(ma, flags); + /* Type-specific initialization. */ + switch (nnode->sf_type) { + case VBLK: @@ -190,15 +183,12 @@ + case VLNK: + case VREG: + break; -+ + +- printf("%s: Leave rc=%d\n", __FUNCTION__, rc); + default: + panic("vboxfs_alloc_node: type %p %d", nnode, (int)nnode->sf_type); + } -- rc = kernel_mount(ma, flags); -- -- printf("%s: Leave rc=%d\n", __FUNCTION__, rc); -- - return rc; + *node = nnode; + return 0; @@ -219,33 +209,8 @@ - struct sf_glob_info *pShFlGlobalInfo; - SHFLSTRING *pShFlShareName = NULL; - int cbShFlShareName; -- + - printf("%s: Enter\n", __FUNCTION__); -- -- if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS)) -- return EOPNOTSUPP; -- -- if (vfs_filteropt(mp->mnt_optnew, vboxvfs_opts)) -- { -- vfs_mount_error(mp, "%s", "Invalid option"); -- return EINVAL; -- } -- -- rc = vfs_getopt(mp->mnt_optnew, "from", (void **)&pszShare, &cbShare); -- if (rc || pszShare[cbShare-1] != '\0' || cbShare > 0xfffe) -- return EINVAL; -- -- rc = vfs_getopt(mp->mnt_optnew, "gid", (void **)&gid, &cbOption); -- if ((rc != ENOENT) && (rc || cbOption != sizeof(gid))) -- return EINVAL; -- -- rc = vfs_getopt(mp->mnt_optnew, "uid", (void **)&uid, &cbOption); -- if ((rc != ENOENT) && (rc || cbOption != sizeof(uid))) -- return EINVAL; - -- pShFlGlobalInfo = RTMemAllocZ(sizeof(struct sf_glob_info)); -- if (!pShFlGlobalInfo) -- return ENOMEM; +#ifdef INVARIANTS + TMPFS_NODE_LOCK(node); + MPASS(node->sf_vnode == NULL); @@ -255,16 +220,16 @@ + if (node->sf_path) + free(node->sf_path, M_VBOXVFS); -- cbShFlShareName = offsetof (SHFLSTRING, String.utf8) + cbShare + 1; -- pShFlShareName = RTMemAllocZ(cbShFlShareName); -- if (!pShFlShareName) -- return VERR_NO_MEMORY; +- if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS)) +- return EOPNOTSUPP; + uma_zfree(vboxfs->sf_node_pool, node); +} -- pShFlShareName->u16Length = cbShare; -- pShFlShareName->u16Size = cbShare + 1; -- memcpy (pShFlShareName->String.utf8, pszShare, cbShare + 1); +- if (vfs_filteropt(mp->mnt_optnew, vboxvfs_opts)) +- { +- vfs_mount_error(mp, "%s", "Invalid option"); +- return EINVAL; +- } +static int +vboxfs_cmount(struct mntarg *ma, void *data, uint64_t flags) +{ @@ -271,14 +236,18 @@ + struct vboxfs_mount_info args; + int error = 0; -- rc = VbglR0SfMapFolder (&g_vboxSFClient, pShFlShareName, &pShFlGlobalInfo->map); -- RTMemFree(pShFlShareName); +- rc = vfs_getopt(mp->mnt_optnew, "from", (void **)&pszShare, &cbShare); +- if (rc || pszShare[cbShare-1] != '\0' || cbShare > 0xfffe) +- return EINVAL; + if (data == NULL) + return (EINVAL); + error = copyin(data, &args, sizeof(struct vboxfs_mount_info)); + if (error) + return (error); -+ + +- rc = vfs_getopt(mp->mnt_optnew, "gid", (void **)&gid, &cbOption); +- if ((rc != ENOENT) && (rc || cbOption != sizeof(gid))) +- return EINVAL; + ma = mount_argf(ma, "uid", "%d", args.uid); + ma = mount_argf(ma, "gid", "%d", args.gid); + ma = mount_argf(ma, "file_mode", "%d", args.fmode); @@ -285,17 +254,15 @@ + ma = mount_argf(ma, "dir_mode", "%d", args.dmode); + ma = mount_arg(ma, "from", args.name, -1); -- if (RT_FAILURE (rc)) -- { -- RTMemFree(pShFlGlobalInfo); -- printf("VbglR0SfMapFolder failed rc=%d\n", rc); -- return EPROTO; -- } +- rc = vfs_getopt(mp->mnt_optnew, "uid", (void **)&uid, &cbOption); +- if ((rc != ENOENT) && (rc || cbOption != sizeof(uid))) +- return EINVAL; + return (kernel_mount(ma, flags)); +} -- pShFlGlobalInfo->uid = uid; -- pShFlGlobalInfo->gid = gid; +- pShFlGlobalInfo = RTMemAllocZ(sizeof(struct sf_glob_info)); +- if (!pShFlGlobalInfo) +- return ENOMEM; +static const char *vboxfs_opts[] = { + "fstype", + "fspath", @@ -308,7 +275,10 @@ + NULL +}; -- mp->mnt_data = pShFlGlobalInfo; +- cbShFlShareName = offsetof (SHFLSTRING, String.utf8) + cbShare + 1; +- pShFlShareName = RTMemAllocZ(cbShFlShareName); +- if (!pShFlShareName) +- return VERR_NO_MEMORY; +#define VBOX_INTOPT(optname, val, base) do { \ + char *ep, *optarg = NULL; \ + if (vfs_getopt(opts, optname, (void **)&optarg, NULL) == 0) { \ @@ -328,66 +298,69 @@ + } \ +} while (0) -- /** @todo root vnode. */ +- pShFlShareName->u16Length = cbShare; +- pShFlShareName->u16Size = cbShare + 1; +- memcpy (pShFlShareName->String.utf8, pszShare, cbShare + 1); +static int +vboxfs_node_ctor(void *mem, int size, void *arg, int flags) +{ + struct vboxfs_node *node = (struct vboxfs_node *)mem; -- vfs_getnewfsid(mp); -- vfs_mountedfrom(mp, pszShare); +- rc = VbglR0SfMapFolder (&g_vboxSFClient, pShFlShareName, &pShFlGlobalInfo->map); +- RTMemFree(pShFlShareName); + node->sf_vnode = NULL; + node->sf_vpstate = 0; -- printf("%s: Leave rc=0\n", __FUNCTION__); +- if (RT_FAILURE (rc)) +- { +- RTMemFree(pShFlGlobalInfo); +- printf("VbglR0SfMapFolder failed rc=%d\n", rc); +- return EPROTO; +- } + return (0); +} -- return 0; +- pShFlGlobalInfo->uid = uid; +- pShFlGlobalInfo->gid = gid; +static void +vboxfs_node_dtor(void *mem, int size, void *arg) +{ + struct vboxfs_node *node = (struct vboxfs_node *)mem; + node->sf_type = VNON; - } ++} --static int vboxvfs_unmount(struct mount *mp, int mntflags, struct thread *td) +- mp->mnt_data = pShFlGlobalInfo; +static int +vboxfs_node_init(void *mem, int size, int flags) - { -- struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); -- int rc; -- int flags = 0; ++{ + struct vboxfs_node *node = (struct vboxfs_node *)mem; + node->sf_ino = 0; -- rc = VbglR0SfUnmapFolder(&g_vboxSFClient, &pShFlGlobalInfo->map); -- if (RT_FAILURE(rc)) -- printf("Failed to unmap shared folder\n"); +- /** @todo root vnode. */ + mtx_init(&node->sf_interlock, "tmpfs node interlock", NULL, MTX_DEF); -- if (mntflags & MNT_FORCE) -- flags |= FORCECLOSE; +- vfs_getnewfsid(mp); +- vfs_mountedfrom(mp, pszShare); + return (0); +} -- /* There is 1 extra root vnode reference (vnode_root). */ -- rc = vflush(mp, 1, flags, td); -- if (rc) -- return rc; +- printf("%s: Leave rc=0\n", __FUNCTION__); +static void +vboxfs_node_fini(void *mem, int size) +{ + struct vboxfs_node *node = (struct vboxfs_node *)mem; +- return 0; + mtx_destroy(&node->sf_interlock); -+} + } -- RTMemFree(pShFlGlobalInfo); -- mp->mnt_data = NULL; +-static int vboxvfs_unmount(struct mount *mp, int mntflags, struct thread *td) +static int +vboxfs_mount(struct mount *mp) -+{ + { +- struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); +- int rc; +- int flags = 0; + struct vboxfs_mnt *vboxfsmp = NULL; + struct vfsoptlist *opts = mp->mnt_optnew; + sfp_mount_t *handle = NULL; @@ -399,27 +372,38 @@ + uid_t uid = 0; + gid_t gid = 0; + struct vboxfs_node *root; -+ + +- rc = VbglR0SfUnmapFolder(&g_vboxSFClient, &pShFlGlobalInfo->map); +- if (RT_FAILURE(rc)) +- printf("Failed to unmap shared folder\n"); + if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS)) + return (EOPNOTSUPP); -+ + +- if (mntflags & MNT_FORCE) +- flags |= FORCECLOSE; + if (vfs_filteropt(opts, vboxfs_opts)) { + vfs_mount_error(mp, "%s", "Invalid option"); + return (EINVAL); + } -+ + +- /* There is 1 extra root vnode reference (vnode_root). */ +- rc = vflush(mp, 1, flags, td); +- if (rc) +- return rc; + VBOX_INTOPT("uid", uid, 10); + VBOX_INTOPT("gid", gid, 10); + VBOX_INTOPT("file_mode", file_mode, 8); + VBOX_INTOPT("dir_mode", dir_mode, 8); + VBOX_INTOPT("ro", readonly, 10); -+ + + error = vfs_getopt(opts, "from", (void **)&share_name, &share_len); + if (error != 0 || share_len == 0) { + vfs_mount_error(mp, "Invalid from"); + return (EINVAL); + } -+ + +- RTMemFree(pShFlGlobalInfo); +- mp->mnt_data = NULL; + vboxfsmp = malloc(sizeof(struct vboxfs_mnt), M_VBOXVFS, M_WAITOK | M_ZERO); + vboxfsmp->sf_uid = uid; + vboxfsmp->sf_gid = gid; @@ -427,7 +411,8 @@ + vboxfsmp->sf_dmode = dir_mode & (S_IRWXU | S_IRWXG | S_IRWXO); + vboxfsmp->sf_ino = 3; + vboxfsmp->sf_stat_ttl = 200; -+ + +- return 0; + /* Invoke Hypervisor mount interface before proceeding */ + error = sfprov_mount(share_name, &handle); + if (error) @@ -466,7 +451,6 @@ + + MNT_ILOCK(mp); + mp->mnt_data = vboxfsmp; -+ bzero(&mp->mnt_stat.f_fsid, sizeof(&mp->mnt_stat.f_fsid)); + /* f_fsid is int32_t but serial is uint32_t, convert */ + memcpy(&mp->mnt_stat.f_fsid, &fsinfo.serial, sizeof(mp->mnt_stat.f_fsid)); + mp->mnt_flag |= MNT_LOCAL; @@ -480,8 +464,7 @@ +#endif + MNT_IUNLOCK(mp); + vfs_mountedfrom(mp, share_name); - -- return 0; ++ + return (0); } @@ -502,55 +485,56 @@ + struct thread *td; + int error; + int flags; -+ + +- printf("%s: Enter\n", __FUNCTION__); + vboxfsmp = VFSTOVBOXFS(mp); + td = curthread; + flags = 0; + if (mntflags & MNT_FORCE) + flags |= FORCECLOSE; -+ + +- vp = pShFlGlobalInfo->vnode_root; +- VREF(vp); + error = vflush(mp, 0, flags, td); + if (error) + return (error); -+ + +- vn_lock(vp, flags | LK_RETRY, td); +- *vpp = vp; + /* Invoke Hypervisor unmount interface before proceeding */ + error = sfprov_unmount(vboxfsmp->sf_handle); + if (error != 0) { + /* TBD anything here? */ + } -+ + +- printf("%s: Leave\n", __FUNCTION__); + uma_zdestroy(vboxfsmp->sf_node_pool); -+ + +- return rc; + free(vboxfsmp, M_VBOXVFS); + MNT_ILOCK(mp); + mp->mnt_data = NULL; + mp->mnt_flag &= ~MNT_LOCAL; + MNT_IUNLOCK(mp); - -- printf("%s: Enter\n", __FUNCTION__); -- -- vp = pShFlGlobalInfo->vnode_root; -- VREF(vp); ++ + return (0); -+} + } -- vn_lock(vp, flags | LK_RETRY, td); -- *vpp = vp; +-static int vboxvfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg, struct thread *td) +static int +vboxfs_root(struct mount *mp, int flags, struct vnode **vpp) -+{ + { +- return EOPNOTSUPP; + int error; + error = vboxfs_alloc_vp(mp, VFSTOVBOXFS(mp)->sf_root, flags, vpp); - -- printf("%s: Leave\n", __FUNCTION__); ++ + if (!error) + (*vpp)->v_vflag |= VV_ROOT; - -- return rc; ++ + return error; } --static int vboxvfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg, struct thread *td) +-int vboxvfs_init(struct vfsconf *vfsp) +/* + * Do operation associated with quotas, not supported + */ @@ -557,26 +541,22 @@ +static int +vboxfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg) { -- return EOPNOTSUPP; +- int rc; + return (EOPNOTSUPP); - } ++} --int vboxvfs_init(struct vfsconf *vfsp) +- /* Initialize the R0 guest library. */ +- rc = VbglR0SfInit(); +- if (RT_FAILURE(rc)) +- return ENXIO; +/* + * Initialize the filesystem globals. + */ +static int +vboxfs_init(struct vfsconf *vfsp) - { -- int rc; ++{ + int error; -- /* Initialize the R0 guest library. */ -- rc = VbglR0SfInit(); -- if (RT_FAILURE(rc)) -- return ENXIO; -+ DROP_GIANT(); - - /* Connect to the host service. */ - rc = VbglR0SfConnect(&g_vboxSFClient); - if (RT_FAILURE(rc)) @@ -585,28 +565,28 @@ - VbglR0SfTerm(); - return ENXIO; - } ++ DROP_GIANT(); + +- rc = VbglR0SfSetUtf8(&g_vboxSFClient); +- if (RT_FAILURE (rc)) +- { +- printf("VbglR0SfSetUtf8 failed, rc=%d\n", rc); +- VbglR0SfDisconnect(&g_vboxSFClient); +- VbglR0SfTerm(); +- return EPROTO; +- } + sfprov = sfprov_connect(SFPROV_VERSION); + if (sfprov == NULL) { + printf("%s: couldn't connect to sf provider", __func__); + return (ENODEV); + } -+ + +- printf("Successfully loaded shared folder module\n"); + error = sfprov_set_show_symlinks(); + if (error != 0) + printf("%s: host unable to show symlinks, error=%d\n", + __func__, error); -- rc = VbglR0SfSetUtf8(&g_vboxSFClient); -- if (RT_FAILURE (rc)) -- { -- printf("VbglR0SfSetUtf8 failed, rc=%d\n", rc); -- VbglR0SfDisconnect(&g_vboxSFClient); -- VbglR0SfTerm(); -- return EPROTO; -- } -- -- printf("Successfully loaded shared folder module\n"); -- - return 0; + PICKUP_GIANT(); + return (0); Index: emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c (revision 491834) +++ emulators/virtualbox-ose/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c (working copy) @@ -1,5 +1,5 @@ ---- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c.orig 2017-04-28 16:59:22.000000000 +0200 -+++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c 2017-07-14 14:22:09.045026515 +0200 +--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c.orig 2019-01-25 18:12:34 UTC ++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c @@ -1,10 +1,6 @@ -/* $Id: vboxvfs_vnops.c $ */ -/** @file @@ -7,12 +7,12 @@ - */ - /* - * Copyright (C) 2008-2017 Oracle Corporation + * Copyright (C) 2008-2019 Oracle Corporation + * Copyright (C) 2017 Mahdi Mokhtari * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; -@@ -14,228 +9,1334 @@ +@@ -14,228 +10,1334 @@ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. */ @@ -45,9 +45,9 @@ -#include -#include +#include + ++#include "vboxvfs.h" + -+#include "vboxvfs.h" - /* * Prototypes for VBOXVFS vnode operations */ @@ -79,10 +79,37 @@ -static vop_inactive_t vboxvfs_inactive; -static vop_putpages_t vboxvfs_putpages; -static vop_reclaim_t vboxvfs_reclaim; -- ++static vop_create_t vboxfs_create; ++static vop_open_t vboxfs_open; ++static vop_close_t vboxfs_close; ++static vop_access_t vboxfs_access; ++static vop_getattr_t vboxfs_getattr; ++static vop_setattr_t vboxfs_setattr; ++static vop_read_t vboxfs_read; ++static vop_readlink_t vboxfs_readlink; ++static vop_write_t vboxfs_write; ++static vop_fsync_t vboxfs_fsync; ++static vop_remove_t vboxfs_remove; ++static vop_link_t vboxfs_link; ++static vop_cachedlookup_t vboxfs_lookup; ++static vop_rename_t vboxfs_rename; ++static vop_mkdir_t vboxfs_mkdir; ++static vop_rmdir_t vboxfs_rmdir; ++static vop_symlink_t vboxfs_symlink; ++static vop_readdir_t vboxfs_readdir; ++static vop_print_t vboxfs_print; ++static vop_pathconf_t vboxfs_pathconf; ++static vop_advlock_t vboxfs_advlock; ++static vop_ioctl_t vboxfs_ioctl; ++static vop_inactive_t vboxfs_inactive; ++static vop_reclaim_t vboxfs_reclaim; ++static vop_vptofh_t vboxfs_vptofh; + -struct vop_vector vboxvfs_vnodeops = { - .vop_default = &default_vnodeops, -- ++struct vop_vector vboxfs_vnodeops = { ++ .vop_default = &default_vnodeops, + - .vop_access = vboxvfs_access, - .vop_advlock = vboxvfs_advlock, - .vop_close = vboxvfs_close, @@ -111,35 +138,6 @@ - .vop_strategy = vboxvfs_strategy, - .vop_symlink = vboxvfs_symlink, - .vop_write = vboxvfs_write, -+static vop_create_t vboxfs_create; -+static vop_open_t vboxfs_open; -+static vop_close_t vboxfs_close; -+static vop_access_t vboxfs_access; -+static vop_getattr_t vboxfs_getattr; -+static vop_setattr_t vboxfs_setattr; -+static vop_read_t vboxfs_read; -+static vop_readlink_t vboxfs_readlink; -+static vop_write_t vboxfs_write; -+static vop_fsync_t vboxfs_fsync; -+static vop_remove_t vboxfs_remove; -+static vop_link_t vboxfs_link; -+static vop_cachedlookup_t vboxfs_lookup; -+static vop_rename_t vboxfs_rename; -+static vop_mkdir_t vboxfs_mkdir; -+static vop_rmdir_t vboxfs_rmdir; -+static vop_symlink_t vboxfs_symlink; -+static vop_readdir_t vboxfs_readdir; -+static vop_print_t vboxfs_print; -+static vop_pathconf_t vboxfs_pathconf; -+static vop_advlock_t vboxfs_advlock; -+static vop_ioctl_t vboxfs_ioctl; -+static vop_inactive_t vboxfs_inactive; -+static vop_reclaim_t vboxfs_reclaim; -+static vop_vptofh_t vboxfs_vptofh; -+ -+struct vop_vector vboxfs_vnodeops = { -+ .vop_default = &default_vnodeops, -+ + .vop_access = vboxfs_access, + .vop_advlock = VOP_EOPNOTSUPP, + .vop_close = vboxfs_close, @@ -176,22 +174,14 @@ +vsfnode_cur_time_usec(void) { - return 0; --} + struct timeval now; - --static int vboxvfs_open(struct vop_open_args *ap) --{ -- return 0; --} ++ + getmicrotime(&now); - --static int vboxvfs_close(struct vop_close_args *ap) --{ -- return 0; ++ + return (now.tv_sec*1000 + now.tv_usec); } --static int vboxvfs_getattr(struct vop_getattr_args *ap) +-static int vboxvfs_open(struct vop_open_args *ap) +static int +vsfnode_stat_cached(struct vboxfs_node *np) { @@ -200,18 +190,13 @@ + np->vboxfsmp->sf_stat_ttl * 1000UL; } --static int vboxvfs_setattr(struct vop_setattr_args *ap) +-static int vboxvfs_close(struct vop_close_args *ap) +static int +vsfnode_update_stat_cache(struct vboxfs_node *np) { - return 0; --} + int error; - --static int vboxvfs_read(struct vop_read_args *ap) --{ -- return 0; --} ++ + error = sfprov_get_attr(np->vboxfsmp->sf_handle, np->sf_path, + &np->sf_stat); +#if 0 @@ -220,14 +205,11 @@ +#endif + if (error == 0) + np->sf_stat_time = vsfnode_cur_time_usec(); - --static int vboxvfs_write(struct vop_write_args *ap) --{ -- return 0; ++ + return (error); } --static int vboxvfs_create(struct vop_create_args *ap) +-static int vboxvfs_getattr(struct vop_getattr_args *ap) +/* + * Need to clear v_object for insmntque failure. + */ @@ -235,11 +217,7 @@ +vboxfs_insmntque_dtr(struct vnode *vp, void *dtr_arg) { - return 0; --} - --static int vboxvfs_remove(struct vop_remove_args *ap) --{ -- return 0; ++ + // XXX: vboxfs_destroy_vobject(vp, vp->v_object); + vp->v_object = NULL; + vp->v_data = NULL; @@ -248,10 +226,7 @@ + vput(vp); } --static int vboxvfs_rename(struct vop_rename_args *ap) --{ -- return 0; --} +-static int vboxvfs_setattr(struct vop_setattr_args *ap) +/* + * Allocates a new vnode for the node node or returns a new reference to + * an existing one if the node had already a vnode referencing it. The @@ -262,7 +237,8 @@ +int +vboxfs_alloc_vp(struct mount *mp, struct vboxfs_node *node, int lkflag, + struct vnode **vpp) -+{ + { +- return 0; + struct vnode *vp; + int error; + @@ -406,14 +382,11 @@ + VBOXFS_NODE_UNLOCK(node); + } +#endif - --static int vboxvfs_link(struct vop_link_args *ap) --{ -- return EOPNOTSUPP; ++ + return error; } --static int vboxvfs_symlink(struct vop_symlink_args *ap) +-static int vboxvfs_read(struct vop_read_args *ap) +/* + * Destroys the association between the vnode vp and the node it + * references. @@ -421,19 +394,11 @@ +void +vboxfs_free_vp(struct vnode *vp) { -- return EOPNOTSUPP; --} +- return 0; + struct vboxfs_node *node; - --static int vboxvfs_mknod(struct vop_mknod_args *ap) --{ -- return EOPNOTSUPP; --} ++ + node = VP_TO_VBOXFS_NODE(vp); - --static int vboxvfs_mkdir(struct vop_mkdir_args *ap) --{ -- return 0; ++ + VBOXFS_NODE_ASSERT_LOCKED(node); + node->sf_vnode = NULL; + if ((node->sf_vpstate & VBOXFS_VNODE_WRECLAIM) != 0) @@ -442,7 +407,7 @@ + vp->v_data = NULL; } --static int vboxvfs_rmdir(struct vop_rmdir_args *ap) +-static int vboxvfs_write(struct vop_write_args *ap) +/* + * Allocate new vboxfs_node and vnode for given file + */ @@ -452,54 +417,34 @@ + int lkflag, struct vnode **vpp) { - return 0; --} + int error; + struct vboxfs_node *unode; - --static int vboxvfs_readdir(struct vop_readdir_args *ap) --{ -- return 0; --} ++ + error = vboxfs_alloc_node(vboxfsmp->sf_vfsp, vboxfsmp, fullpath, type, + vboxfsmp->sf_uid, vboxfsmp->sf_gid, mode, parent, &unode); - --static int vboxvfs_fsync(struct vop_fsync_args *ap) --{ -- return 0; --} ++ + if (error) + goto out; - --static int vboxvfs_print (struct vop_print_args *ap) --{ -- return 0; --} ++ + error = vboxfs_alloc_vp(vboxfsmp->sf_vfsp, unode, lkflag, vpp); + if (error) + vboxfs_free_node(vboxfsmp, unode); - --static int vboxvfs_pathconf (struct vop_pathconf_args *ap) --{ -- return 0; ++ +out: + return (error); } --static int vboxvfs_strategy (struct vop_strategy_args *ap) +-static int vboxvfs_create(struct vop_create_args *ap) +static int +vboxfs_vn_get_ino_alloc(struct mount *mp, void *arg, int lkflags, + struct vnode **rvp) { - return 0; --} - --static int vboxvfs_ioctl(struct vop_ioctl_args *ap) --{ -- return ENOTTY; ++ + return (vboxfs_alloc_vp(mp, arg, lkflags, rvp)); } --static int vboxvfs_getextattr(struct vop_getextattr_args *ap) +-static int vboxvfs_remove(struct vop_remove_args *ap) +/* + * Construct a new pathname given an sfnode plus an optional tail + * component of length len @@ -509,13 +454,8 @@ +sfnode_construct_path(struct vboxfs_node *node, char *tail, int len) { - return 0; --} + char *p; - --static int vboxvfs_advlock(struct vop_advlock_args *ap) --{ -- return 0; --} ++ + if (len <= 2 && tail[0] == '.' && (len == 1 || tail[1] == '.')) + panic("construct path for %s", tail); + p = malloc(strlen(node->sf_path) + 1 + len + 1, M_VBOXVFS, M_WAITOK); @@ -523,11 +463,13 @@ + strcat(p, "/"); + strcat(p, tail); + return (p); -+} -+ + } + +-static int vboxvfs_rename(struct vop_rename_args *ap) +static int +vboxfs_access(struct vop_access_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + accmode_t accmode = ap->a_accmode; + struct vboxfs_node *node; @@ -555,15 +497,12 @@ + else + error = vsfnode_update_stat_cache(node); + m = (error == 0) ? node->sf_stat.sf_mode : 0; - --static int vboxvfs_lookup(struct vop_lookup_args *ap) --{ -- return 0; ++ + return (vaccess(vp->v_type, m, node->vboxfsmp->sf_uid, + node->vboxfsmp->sf_gid, accmode, ap->a_cred, NULL)); } --static int vboxvfs_inactive(struct vop_inactive_args *ap) +-static int vboxvfs_link(struct vop_link_args *ap) +/* + * Clears the (cached) directory listing for the node. + */ @@ -570,17 +509,19 @@ +static void +vfsnode_clear_dir_list(struct vboxfs_node *np) { -- return 0; +- return EOPNOTSUPP; + while (np->sf_dir_list != NULL) { + sffs_dirents_t *next = np->sf_dir_list->sf_next; + free(np->sf_dir_list, M_VBOXVFS); + np->sf_dir_list = next; + } -+} -+ + } + +-static int vboxvfs_symlink(struct vop_symlink_args *ap) +static int +vboxfs_open(struct vop_open_args *ap) -+{ + { +- return EOPNOTSUPP; + struct vboxfs_node *np; + sfp_file_t *fp; + int error; @@ -599,17 +540,21 @@ + MPASS(VOP_ISLOCKED(vp)); + + return (error); -+} -+ + } + +-static int vboxvfs_mknod(struct vop_mknod_args *ap) +static void +vfsnode_invalidate_stat_cache(struct vboxfs_node *np) -+{ + { +- return EOPNOTSUPP; + np->sf_stat_time = 0; -+} -+ + } + +-static int vboxvfs_mkdir(struct vop_mkdir_args *ap) +static int +vboxfs_close(struct vop_close_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + struct vboxfs_node *np; + @@ -634,11 +579,13 @@ + } + + return (0); -+} -+ + } + +-static int vboxvfs_rmdir(struct vop_rmdir_args *ap) +static int +vboxfs_getattr(struct vop_getattr_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + struct vattr *vap = ap->a_vap; + struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp); @@ -713,11 +660,13 @@ + +done: + return (error); -+} -+ + } + +-static int vboxvfs_readdir(struct vop_readdir_args *ap) +static int +vboxfs_setattr(struct vop_setattr_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + struct vattr *vap = ap->a_vap; + struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp); @@ -775,13 +724,15 @@ + } + + return (error); -+} -+ + } + +-static int vboxvfs_fsync(struct vop_fsync_args *ap) +#define blkoff(vboxfsmp, loc) ((loc) & (vboxfsmp)->bmask) + +static int +vboxfs_read(struct vop_read_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + struct uio *uio = ap->a_uio; + struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp); @@ -829,11 +780,13 @@ + error = 0; + + return (error); -+} -+ + } + +-static int vboxvfs_print (struct vop_print_args *ap) +static int +vboxfs_write(struct vop_write_args *ap) -+{ + { +- return 0; + struct vnode *vp = ap->a_vp; + struct uio *uio = ap->a_uio; + struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp); @@ -888,11 +841,13 @@ + error = 0; + + return (error); -+} -+ + } + +-static int vboxvfs_pathconf (struct vop_pathconf_args *ap) +static int +vboxfs_create(struct vop_create_args *ap) -+{ + { +- return 0; + struct vnode *dvp = ap->a_dvp; + struct vnode **vpp = ap->a_vpp; + struct componentname *cnp = ap->a_cnp; @@ -926,11 +881,13 @@ + } + + return (error); -+} -+ + } + +-static int vboxvfs_strategy (struct vop_strategy_args *ap) +static int +vboxfs_remove(struct vop_remove_args *ap) -+{ + { +- return 0; + struct vnode *dvp = ap->a_dvp; + struct vnode *vp = ap->a_vp; + struct vboxfs_node *np, *dir; @@ -974,11 +931,13 @@ + +out: + return (error); -+} -+ + } + +-static int vboxvfs_ioctl(struct vop_ioctl_args *ap) +static int +vboxfs_rename(struct vop_rename_args *ap) -+{ + { +- return ENOTTY; + struct vnode *fvp; + struct vnode *fdvp; + struct vnode *tvp; @@ -1016,17 +975,21 @@ + vrele(fdvp); + vrele(fvp); + return (ret); -+} -+ + } + +-static int vboxvfs_getextattr(struct vop_getextattr_args *ap) +static int +vboxfs_link(struct vop_link_args *ap) -+{ + { +- return 0; + return (EOPNOTSUPP); -+} -+ + } + +-static int vboxvfs_advlock(struct vop_advlock_args *ap) +static int +vboxfs_symlink(struct vop_symlink_args *ap) -+{ + { +- return 0; + struct vnode *dvp = ap->a_dvp; + struct vnode **vpp = ap->a_vpp; + struct componentname *cnp = ap->a_cnp; @@ -1055,11 +1018,13 @@ + vfsnode_clear_dir_list(dir); + + return (error); -+} -+ + } + +-static int vboxvfs_lookup(struct vop_lookup_args *ap) +static int +vboxfs_mkdir(struct vop_mkdir_args *ap) -+{ + { +- return 0; + struct vnode *dvp = ap->a_dvp; + struct vnode **vpp = ap->a_vpp; + struct componentname *cnp = ap->a_cnp; @@ -1090,11 +1055,13 @@ + vfsnode_clear_dir_list(dir); + + return (error); -+} -+ + } + +-static int vboxvfs_inactive(struct vop_inactive_args *ap) +static int +vboxfs_rmdir(struct vop_rmdir_args *ap) -+{ + { +- return 0; + struct vnode *dvp = ap->a_dvp; + struct vnode *vp = ap->a_vp; + struct vboxfs_node *np, *dir; @@ -1137,11 +1104,13 @@ + +out: + return (error); -+} -+ + } + +-static int vboxvfs_reclaim(struct vop_reclaim_args *ap) +static int +vboxfs_readdir(struct vop_readdir_args *ap) -+{ + { +- return 0; + int *eofp = ap->a_eofflag; + struct vnode *vp = ap->a_vp; + struct uio *uio = ap->a_uio; @@ -1260,11 +1229,13 @@ + if (error != 0) + uio->uio_offset = orig_off; + return (error); -+} -+ + } + +-static int vboxvfs_getpages(struct vop_getpages_args *ap) +static int +vboxfs_readlink(struct vop_readlink_args *v) -+{ + { +- return 0; + struct vnode *vp = v->a_vp; + struct uio *uio = v->a_uio; + @@ -1292,11 +1263,13 @@ + if (tmpbuf) + contigfree(tmpbuf, MAXPATHLEN, M_DEVBUF); + return (error); -+} -+ + } + +-static int vboxvfs_putpages(struct vop_putpages_args *ap) +static int +vboxfs_fsync(struct vop_fsync_args *ap) -+{ + { +- return 0; + struct vnode *vp; + struct vboxfs_node *np; + int ret; @@ -1307,8 +1280,8 @@ + return (0); + ret = sfprov_fsync(np->sf_file); + return (ret); -+} -+ + } + +static int +vboxfs_print(struct vop_print_args *ap) +{ @@ -1349,22 +1322,17 @@ + break; + } + return (error); - } - --static int vboxvfs_reclaim(struct vop_reclaim_args *ap) ++} ++ +/* + * File specific ioctls. + */ +static int +vboxfs_ioctl(struct vop_ioctl_args *ap) - { -- return 0; ++{ + return (ENOTTY); - } - --static int vboxvfs_getpages(struct vop_getpages_args *ap) --{ -- return 0; ++} ++ +/* + * Lookup an entry in a directory and create a new vnode if found. + */ @@ -1495,14 +1463,11 @@ + MPASS(vp->v_data == NULL); + + return (0); - } - --static int vboxvfs_putpages(struct vop_putpages_args *ap) ++} ++ +static int +vboxfs_vptofh(struct vop_vptofh_args *ap) - { -- return 0; --} - ++{ ++ + return (EOPNOTSUPP); +} Index: emulators/virtualbox-ose/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp (nonexistent) +++ emulators/virtualbox-ose/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp (working copy) @@ -0,0 +1,38 @@ +--- src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp.orig 2019-01-25 18:17:47 UTC ++++ src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp +@@ -1150,7 +1150,7 @@ int vmsvga3dTerminate(PVGASTATE pThis) + RTSemEventDestroy(pState->WndRequestSem); + #elif defined(RT_OS_DARWIN) + +-#elif defined(RT_OS_LINUX) ++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) + /* signal to the thread that it is supposed to exit */ + pState->bTerminate = true; + /* wait for it to terminate */ +@@ -2850,7 +2850,7 @@ int vmsvga3dGenerateMipmaps(PVGASTATE pThis, uint32_t + } + + +-#ifdef RT_OS_LINUX ++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) + /** + * X11 event handling thread. + * +@@ -2880,7 +2880,7 @@ DECLCALLBACK(int) vmsvga3dXEventThread(RTTHREAD hThrea + } + return VINF_SUCCESS; + } +-#endif // RT_OS_LINUX ++#endif // RT_OS_FREEBSD || RT_OS_LINUX + + + /** +@@ -3206,7 +3206,7 @@ static int vmsvga3dContextDestroyOgl(PVGASTATE pThis, + AssertRC(rc); + #elif defined(RT_OS_DARWIN) + vmsvga3dCocoaDestroyViewAndContext(pContext->cocoaView, pContext->cocoaContext); +-#elif defined(RT_OS_LINUX) ++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) + glXMakeCurrent(pState->display, None, NULL); + glXDestroyContext(pState->display, pContext->glxContext); + XDestroyWindow(pState->display, pContext->window); Property changes on: emulators/virtualbox-ose/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/patch-src_VBox_Devices_Makefile.kmk =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Devices_Makefile.kmk (nonexistent) +++ emulators/virtualbox-ose/files/patch-src_VBox_Devices_Makefile.kmk (working copy) @@ -0,0 +1,20 @@ +--- src/VBox/Devices/Makefile.kmk.orig 2019-01-25 18:18:06 UTC ++++ src/VBox/Devices/Makefile.kmk +@@ -277,7 +277,7 @@ if !defined(VBOX_ONLY_EXTPACKS) # Goes on almo + VBoxDD_SOURCES += Graphics/DevVGA-SVGA.cpp + endif + ifdef VBOX_WITH_VMSVGA3D +- if1of ($(KBUILD_TARGET), linux win) ++ if1of ($(KBUILD_TARGET), freebsd linux win) + # Dynamically load 3D library (opengl32, libGL). + # This is a temporary solution. In future the 3D backend will be in a separate library. + VBOX_WITH_VMSVGA3D_DYNAMIC_LOAD = 1 +@@ -1484,6 +1484,8 @@ if defined(VBOX_WITH_VMSVGA3D) && !defined(VBOX_ONLY_E + VBoxSVGA3D_INCS = $(VBOX_GRAPHICS_INCS) + VBoxSVGA3D_INCS.win := \ + Graphics/shaderlib/libWineStub/include ++ VBoxSVGA3D_INCS.freebsd := \ ++ Graphics/shaderlib/wine/include + VBoxSVGA3D_INCS.linux := \ + Graphics/shaderlib/wine/include + VBoxSVGA3D_INCS.darwin := \ Property changes on: emulators/virtualbox-ose/files/patch-src_VBox_Devices_Makefile.kmk ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/patch-src_VBox_Devices_Storage_DrvHostBase-freebsd.cpp =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Devices_Storage_DrvHostBase-freebsd.cpp (revision 491834) +++ emulators/virtualbox-ose/files/patch-src_VBox_Devices_Storage_DrvHostBase-freebsd.cpp (working copy) @@ -1,10 +1,29 @@ ---- src/VBox/Devices/Storage/DrvHostBase-freebsd.cpp.orig 2017-10-18 07:11:48 UTC +--- src/VBox/Devices/Storage/DrvHostBase-freebsd.cpp.orig 2019-01-25 18:18:40 UTC +++ src/VBox/Devices/Storage/DrvHostBase-freebsd.cpp @@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include #include - #include +@@ -31,7 +32,9 @@ + #include + #include +#include #include ++#include - /** Maximum buffer size supported by the CAM subsystem. */ + + /********************************************************************************************************************************* +@@ -164,6 +167,8 @@ DECLHIDDEN(int) drvHostBaseScsiCmdOs(PDRVHOSTBASE pThi + else + rc = RTErrConvertFromErrno(errno); + } ++ ++ return rc; + } + + Index: emulators/virtualbox-ose/files/patch-src_VBox_Devices_VMMDev_VMMDevHGCM.cpp =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Devices_VMMDev_VMMDevHGCM.cpp (nonexistent) +++ emulators/virtualbox-ose/files/patch-src_VBox_Devices_VMMDev_VMMDevHGCM.cpp (working copy) @@ -0,0 +1,11 @@ +--- src/VBox/Devices/VMMDev/VMMDevHGCM.cpp.orig 2019-01-25 18:18:41 UTC ++++ src/VBox/Devices/VMMDev/VMMDevHGCM.cpp +@@ -2390,7 +2390,7 @@ void vmmdevHGCMDestroy(PVMMDEV pThis) + RTCritSectDelete(&pThis->critsectHGCMCmdList); + } + +- AssertCompile((uintptr_t)NIL_RTMEMCACHE == 0); ++ AssertCompile(NIL_RTMEMCACHE == (RTMEMCACHE)0); + if (pThis->hHgcmCmdCache != NIL_RTMEMCACHE) + { + RTMemCacheDestroy(pThis->hHgcmCmdCache); Property changes on: emulators/virtualbox-ose/files/patch-src_VBox_Devices_VMMDev_VMMDevHGCM.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageHelp.cpp =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageHelp.cpp (revision 491834) +++ emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageHelp.cpp (working copy) @@ -1,6 +1,15 @@ ---- src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp.orig 2016-08-16 19:59:52 UTC +--- src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp.orig 2019-01-25 18:19:18 UTC +++ src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp -@@ -797,7 +797,7 @@ void printUsage(USAGECATEGORY fCategory, +@@ -610,7 +610,7 @@ void printUsage(USAGECATEGORY fCategory, uint32_t fSub + " file |\n" + " ]\n" + " [--uarttype<1-N> 16450|16550A|16750\n" +-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) ++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) + " [--lpt<1-N> off| ]\n" + " [--lptmode<1-N> ]\n" + #endif +@@ -624,7 +624,7 @@ void printUsage(USAGECATEGORY fCategory, uint32_t fSub RTStrmPrintf(pStrm, "|dsound"); #endif } @@ -9,10 +18,11 @@ { RTStrmPrintf(pStrm, "" #ifdef VBOX_WITH_AUDIO_OSS -@@ -811,22 +811,6 @@ void printUsage(USAGECATEGORY fCategory, +@@ -637,22 +637,6 @@ void printUsage(USAGECATEGORY fCategory, uint32_t fSub + "|pulse" #endif ); - } +- } - if (fFreeBSD) - { -#ifdef VBOX_WITH_AUDIO_OSS @@ -28,7 +38,6 @@ -#ifdef VBOX_WITH_AUDIO_PULSE - RTStrmPrintf(pStrm, "|pulse"); -#endif -- } + } if (fDarwin) { - RTStrmPrintf(pStrm, "|coreaudio"); Index: emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp (nonexistent) +++ emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp (working copy) @@ -0,0 +1,29 @@ +--- src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp.orig 2019-01-25 18:19:18.000000000 +0000 ++++ src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp 2019-02-01 06:06:37.701231000 +0000 +@@ -150,7 +150,7 @@ enum + MODIFYVM_UARTMODE, + MODIFYVM_UARTTYPE, + MODIFYVM_UART, +-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) ++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) + MODIFYVM_LPTMODE, + MODIFYVM_LPT, + #endif +@@ -341,7 +341,7 @@ static const RTGETOPTDEF g_aModifyVMOptions[] = + { "--uartmode", MODIFYVM_UARTMODE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX }, + { "--uarttype", MODIFYVM_UARTTYPE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX }, + { "--uart", MODIFYVM_UART, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX }, +-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) ++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) + { "--lptmode", MODIFYVM_LPTMODE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX }, + { "--lpt", MODIFYVM_LPT, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX }, + #endif +@@ -2224,7 +2224,7 @@ RTEXITCODE handleModifyVM(HandlerArg *a) + break; + } + +-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) ++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) + case MODIFYVM_LPTMODE: + { + ComPtr lpt; Property changes on: emulators/virtualbox-ose/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: emulators/virtualbox-ose/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c =================================================================== --- emulators/virtualbox-ose/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c (revision 491834) +++ emulators/virtualbox-ose/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c (working copy) @@ -1,4 +1,4 @@ ---- src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c.orig 2018-10-15 14:30:57 UTC +--- src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c.orig 2019-01-25 18:19:55 UTC +++ src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c @@ -46,6 +46,7 @@ #include @@ -47,7 +47,7 @@ /* * Configure character devices. Add symbolic links for compatibility. */ -@@ -311,7 +328,21 @@ static int VBoxDrvFreeBSDIOCtl(struct cdev *pDev, u_lo +@@ -311,11 +328,25 @@ static int VBoxDrvFreeBSDIOCtl(struct cdev *pDev, u_lo PSUPDRVSESSION pSession; devfs_get_cdevpriv((void **)&pSession); @@ -68,10 +68,15 @@ + /* * Deal with the fast ioctl path first. */ - if ( ( ulCmd == SUP_IOCTL_FAST_DO_RAW_RUN -@@ -325,6 +356,45 @@ static int VBoxDrvFreeBSDIOCtl(struct cdev *pDev, u_lo + AssertCompile((SUP_IOCTL_FAST_DO_FIRST & 0xff) == (SUP_IOCTL_FLAG | 64)); +- if ( (uintptr_t)(iCmd - SUP_IOCTL_FAST_DO_FIRST) < (uintptr_t)32 ++ if ( (uintptr_t)(ulCmd - SUP_IOCTL_FAST_DO_FIRST) < (uintptr_t)32 + && pSession->fUnrestricted) + return supdrvIOCtlFast(ulCmd - SUP_IOCTL_FAST_DO_FIRST, *(uint32_t *)pvData, &g_VBoxDrvFreeBSDDevExt, pSession); +@@ -324,6 +355,45 @@ static int VBoxDrvFreeBSDIOCtl(struct cdev *pDev, u_lo + /** + * Alternative Device I/O Control entry point on hosts with SMAP support. + * @@ -115,7 +120,7 @@ * Deal with the 'slow' I/O control requests. * * @returns 0 on success, appropriate errno on failure. -@@ -373,11 +443,10 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes +@@ -372,11 +442,10 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes */ SUPREQHDR Hdr; pvUser = *(void **)pvData; @@ -130,7 +135,7 @@ } if (RT_UNLIKELY((Hdr.fFlags & SUPREQHDR_FLAGS_MAGIC_MASK) != SUPREQHDR_FLAGS_MAGIC)) { -@@ -402,13 +471,12 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes +@@ -401,13 +470,12 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: failed to allocate buffer of %d bytes; ulCmd=%#lx\n", cbReq, ulCmd)); return ENOMEM; } @@ -148,7 +153,7 @@ } if (Hdr.cbIn < cbReq) RT_BZERO((uint8_t *)pHdr + Hdr.cbIn, cbReq - Hdr.cbIn); -@@ -436,9 +504,8 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes +@@ -435,9 +503,8 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: too much output! %#x > %#x; uCmd=%#lx!\n", cbOut, cbReq, ulCmd)); cbOut = cbReq; } @@ -160,7 +165,7 @@ Log(("VBoxDrvFreeBSDIOCtlSlow: returns %d / %d ulCmd=%lx\n", 0, pHdr->rc, ulCmd)); -@@ -541,8 +608,7 @@ bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDE +@@ -540,8 +607,7 @@ bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDE bool VBOXCALL supdrvOSAreCpusOfflinedOnSuspend(void) { @@ -170,7 +175,7 @@ } -@@ -616,11 +682,25 @@ int VBOXCALL supdrvOSMsrProberModify(RTCPUID idCpu, +@@ -624,11 +690,25 @@ int VBOXCALL supdrvOSMsrProberModify(RTCPUID idCpu, #endif /* SUPDRV_WITH_MSR_PROBER */ @@ -196,7 +201,7 @@ va_start(va, pszFormat); cch = RTStrPrintfV(szMsg, sizeof(szMsg), pszFormat, va); -@@ -628,12 +708,19 @@ SUPR0DECL(int) SUPR0Printf(const char *pszFormat, ...) +@@ -636,12 +716,19 @@ SUPR0DECL(int) SUPR0Printf(const char *pszFormat, ...) printf("%s", szMsg); Index: emulators/virtualbox-ose/pkg-plist =================================================================== --- emulators/virtualbox-ose/pkg-plist (revision 491834) +++ emulators/virtualbox-ose/pkg-plist (working copy) @@ -14,6 +14,7 @@ bin/vboxmanage %%X11%%bin/vboxsdl %%WEBSERVICE%%bin/vboxwebsrv %%QT%%bin/virtualbox +%%QT%%bin/virtualboxvm include/virtualbox/VirtualBox_XPCOM.h include/virtualbox/ipcIClientObserver.h include/virtualbox/ipcIDConnectService.h @@ -385,6 +386,7 @@ lib/virtualbox/VBoxDDU.so lib/virtualbox/VBoxEFI32.fd lib/virtualbox/VBoxEFI64.fd lib/virtualbox/VBoxExtPackHelperApp +%%QT%%lib/virtualbox/VBoxGlobal.so lib/virtualbox/VBoxGuestControlSvc.so lib/virtualbox/VBoxGuestPropSvc.so @(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxHeadless @@ -409,6 +411,7 @@ lib/virtualbox/VBoxRT.so %%X11%%@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxSDL %%X11%%lib/virtualbox/VBoxSDL.so lib/virtualbox/VBoxSVC +%%X11%%lib/virtualbox/VBoxSVGA3D.so %%X11%%lib/virtualbox/VBoxSharedClipboard.so %%X11%%lib/virtualbox/VBoxSharedCrOpenGL.so lib/virtualbox/VBoxSharedFolders.so @@ -420,8 +423,9 @@ lib/virtualbox/VBoxXPCOMC.so lib/virtualbox/VBoxXPCOMIPCD lib/virtualbox/VMMR0.r0 lib/virtualbox/VMMRC.rc -%%QT%%@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VirtualBox -%%QT%%lib/virtualbox/VirtualBox.so +%%QT%%lib/virtualbox/VirtualBox +%%QT%%@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VirtualBoxVM +%%QT%%lib/virtualbox/VirtualBoxVM.so %%SDK%%lib/virtualbox/sdk %%WEBSERVICE%%lib/virtualbox/vboxwebsrv %%WEBSERVICE%%lib/virtualbox/webtest Index: emulators/virtualbox-ose-additions/Makefile =================================================================== --- emulators/virtualbox-ose-additions/Makefile (revision 491834) +++ emulators/virtualbox-ose-additions/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= virtualbox-ose -PORTVERSION= 5.2.26 +PORTVERSION= 6.0.4 CATEGORIES= emulators MASTER_SITES= https://download.virtualbox.org/virtualbox/${PORTVERSION}/ PKGNAMESUFFIX?= -additions Index: emulators/virtualbox-ose-additions/distinfo =================================================================== --- emulators/virtualbox-ose-additions/distinfo (revision 491834) +++ emulators/virtualbox-ose-additions/distinfo (working copy) @@ -1,3 +1,3 @@ -TIMESTAMP = 1548732081 -SHA256 (VirtualBox-5.2.26.tar.bz2) = 4debe583463be3917ac60ad76a31f6db27586423d86f1f53c060d70d5e70d467 -SIZE (VirtualBox-5.2.26.tar.bz2) = 118371765 +TIMESTAMP = 1548976366 +SHA256 (VirtualBox-6.0.4.tar.bz2) = f80b0c68182c946fb74ada8034960c38159ad91085b153da1277e4f191af6e1f +SIZE (VirtualBox-6.0.4.tar.bz2) = 155233564 Index: emulators/virtualbox-ose-additions-nox11/Makefile =================================================================== --- emulators/virtualbox-ose-additions-nox11/Makefile (revision 491834) +++ emulators/virtualbox-ose-additions-nox11/Makefile (working copy) @@ -1,6 +1,5 @@ # $FreeBSD$ -PORTREVISION= 1 PKGNAMESUFFIX= -additions-nox11 OPTIONS_EXCLUDE= DBUS DEBUG OPENGL X11 Index: emulators/virtualbox-ose-kmod/Makefile =================================================================== --- emulators/virtualbox-ose-kmod/Makefile (revision 491834) +++ emulators/virtualbox-ose-kmod/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= virtualbox-ose -PORTVERSION= 5.2.26 +PORTVERSION= 6.0.4 CATEGORIES= emulators MASTER_SITES= https://download.virtualbox.org/virtualbox/${PORTVERSION}/ PKGNAMESUFFIX= -kmod Index: emulators/virtualbox-ose-kmod/distinfo =================================================================== --- emulators/virtualbox-ose-kmod/distinfo (revision 491834) +++ emulators/virtualbox-ose-kmod/distinfo (working copy) @@ -1,3 +1,3 @@ -TIMESTAMP = 1548732081 -SHA256 (VirtualBox-5.2.26.tar.bz2) = 4debe583463be3917ac60ad76a31f6db27586423d86f1f53c060d70d5e70d467 -SIZE (VirtualBox-5.2.26.tar.bz2) = 118371765 +TIMESTAMP = 1548976366 +SHA256 (VirtualBox-6.0.4.tar.bz2) = f80b0c68182c946fb74ada8034960c38159ad91085b153da1277e4f191af6e1f +SIZE (VirtualBox-6.0.4.tar.bz2) = 155233564 Index: emulators/virtualbox-ose-nox11/Makefile =================================================================== --- emulators/virtualbox-ose-nox11/Makefile (revision 491834) +++ emulators/virtualbox-ose-nox11/Makefile (working copy) @@ -1,10 +1,9 @@ # $FreeBSD$ -PORTREVISION= 1 PKGNAMESUFFIX= -nox11 -OPTIONS_EXCLUDE= ALSA DBUS DEBUG GUESTADDITIONS MANUAL NLS PULSEAUDIO -OPTIONS_EXCLUDE+= QT5 VPX X11 +OPTIONS_EXCLUDE= ALSA DBUS DEBUG GUESTADDITIONS MANUAL NLS OPUS +OPTIONS_EXCLUDE+= PULSEAUDIO QT5 VPX X11 MASTERDIR= ${.CURDIR}/../virtualbox-ose