app-emulation/virtualbox-5.1.4: compile get kill by PaX
authorMagnus Granberg <zorry@gentoo.org>
Tue, 21 Feb 2017 22:02:09 +0000 (23:02 +0100)
committerMagnus Granberg <zorry@gentoo.org>
Tue, 21 Feb 2017 22:04:44 +0000 (23:04 +0100)
Compile get kill by PaX enable kernels, see bug 591582

Reported-by: Sarah Salzstein <sarah.salzstein@gmail.com>
Patch-by: Quentin Minster <quentin@minster.io>
Package-Manager: Portage-2.3.3, Repoman-2.3.1

app-emulation/virtualbox/files/virtualbox-5.1.4-paxmark-bldprogs.patch [new file with mode: 0644]
app-emulation/virtualbox/metadata.xml
app-emulation/virtualbox/virtualbox-5.1.14.ebuild

diff --git a/app-emulation/virtualbox/files/virtualbox-5.1.4-paxmark-bldprogs.patch b/app-emulation/virtualbox/files/virtualbox-5.1.4-paxmark-bldprogs.patch
new file mode 100644 (file)
index 0000000..50fa306
--- /dev/null
@@ -0,0 +1,59 @@
+2017-02-20  Quentin Minster <quentin@minster.io>
+
+       #https://bugs.gentoo.org/show_bug.cgi?id=591582
+       * Config.kmk: add paxmark befor VBOX_VBOXTPG get run.
+       * src/VBox/VMM/Makefile.kmk: add paxmark befor VBOX_VBOXCPP get run.
+       * src/VBox/Main/Makefile.kmk: add paxmark befor USBIdDatabaseGenerator_1_TARGET get run.
+
+--- a/Config.kmk
++++ b/Config.kmk       2016-09-21 02:22:28 
+@@ -3719,11 +3719,13 @@
+               $(if-expr $(intersects $(KBUILD_TARGET_ARCH),$(KBUILD_ARCHES_64)),-64,-32) \
+               -h --host-$(VBOX_HC_ARCH_BITS)-bit #-vvv
+ define TOOL_VBoxTpG_DTRACE_HDR_CMDS
++      $(QUIET)paxmark.sh -m "$(VBOX_VBOXTPG)"
+       $(QUIET)$(VBOX_VBOXTPG) $(flags) -o "$(out)" -s "$(source)"
+ endef
+ TOOL_VBoxTpG_DTRACE_OBJ_NOT_NEEDED :=
+ TOOL_VBoxTpG_DTRACE_OBJ_FLAGS      := -G --host-$(VBOX_HC_ARCH_BITS)-bit #-vvv
+ define TOOL_VBoxTpG_DTRACE_OBJ_CMDS
++      $(QUIET)paxmark.sh -m "$(VBOX_VBOXTPG)"
+       $(QUIET)$(VBOX_VBOXTPG) \
+               $(if-expr $(intersects $(bld_trg_arch),$(KBUILD_ARCHES_64)),-64,-32) \
+               $(flags) \
+@@ -3738,6 +3740,7 @@
+ TOOL_VBoxTpG-Disabled_DTRACE_DEPORD     = $(VBOX_VBOXTPG)
+ TOOL_VBoxTpG-Disabled_DTRACE_HDR_FLAGS := -h
+ define TOOL_VBoxTpG-Disabled_DTRACE_HDR_CMDS
++      $(QUIET)paxmark.sh -m "$(VBOX_VBOXTPG)"
+       $(QUIET)$(VBOX_VBOXTPG) $(flags) -o "$(out)" -s "$(source)"
+ endef
+ TOOL_VBoxTpG-Disabled_DTRACE_OBJ_NOT_NEEDED := $(KBUILD_OSES)
+@@ -3752,6 +3755,7 @@
+ TOOL_DTraceAndVBoxTpG_DTRACE_HDR_CMDS =
+ define TOOL_DTraceAndVBoxTpG_DTRACE_HDR_CMDS
+       $(TOOL_StandardDTrace_DTRACE_HDR_CMDS)
++      $(QUIET)paxmark.sh -m "$(VBOX_VBOXTPG)"
+       $(QUIET)$(VBOX_VBOXTPG) --generate-wrapper-header --host-$(VBOX_HC_ARCH_BITS)-bit --ring-3-context \
+               $(filter-out -C, $(filter-out -h,$(flags))) \
+               -o "$(out).tmp" -s "$(source)"
+--- a/src/VBox/VMM/Makefile.kmk
++++ b/src/VBox/VMM/Makefile.kmk        2016-09-21 02:26:11 
+@@ -795,6 +795,7 @@
+  define def_vmm_lib_dtrace_preprocess
+   $$$$(VMMLibDTrace_0_OUTDIR)/$1: $2 $$(VBOX_VBOXCPP) | $$$$(dir $$$$@)
+       $$(QUIET)$$(call MSG_GENERATE,VMMLibDTrace,$$@,$$<)
++      $$(QUIET)paxmark.sh -m "$(VBOX_VBOXCPP)"
+       $$(QUIET)$(VBOX_VBOXCPP) -d \
+               -D VBOX_FOR_DTRACE_LIB \
+               -D VBOX_FOR_DTRACE_LIB_$(toupper $(KBUILD_TARGET_ARCH)) \
+--- a/src/VBox/Main/Makefile.kmk
++++ b/src/VBox/Main/Makefile.kmk       2016-09-21 02:31:23 
+@@ -522,6 +522,7 @@
+  $$(VBoxSVC_0_OUTDIR)/USBIdDatabase.cpp:  $$(USBIdDatabaseGenerator_1_TARGET) \
+               $(PATH_SUB_CURRENT)/src-server/usb.ids $(PATH_SUB_CURRENT)/src-server/custom.ids | $$(dir $$@)
+       $(call MSG_GENERATE,USBIdDatabase,$@,$<)
++      $(QUIET)paxmark.sh -m "$(USBIdDatabaseGenerator_1_TARGET)"
+       $(QUIET)$(USBIdDatabaseGenerator_1_TARGET) -o "$@" $(filter %.ids,$^)
+  BLDPROGS += USBIdDatabaseGenerator
index eaaefd5f245b5b697e3681d959131daa1ba5b30c..d6912d5575947cb90bc54911b3f7457f45a6bf32 100644 (file)
@@ -15,6 +15,7 @@
 <use>
   <flag name="headless">Build without any graphic frontend</flag>
   <flag name="lvm">Build VBoxVolInfo that needs devicemapper from <pkg>sys-fs/lvm2</pkg>.</flag>
+  <flag name="pax_kernel">Apply patch needed for pax enabled kernels.</flag>
   <flag name="sdk">Enable building of SDK</flag>
   <flag name="udev">Controls installation of special USB udev rules.</flag>
   <flag name="vboxwebsrv">Build and install the VirtualBox webservice</flag>
index e9f05dbdd1a2b0de96a8f556bc9ab2dc5e07ab9c..96ab03d27ff8471a1deebdbf02690c8745613039 100644 (file)
@@ -20,7 +20,7 @@ HOMEPAGE="http://www.virtualbox.org/"
 LICENSE="GPL-2"
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
-IUSE="alsa debug doc headless java libressl lvm pam pulseaudio +opengl python +qt5 +sdk +udev vboxwebsrv vnc"
+IUSE="alsa debug doc headless java libressl lvm pam pax_kernel pulseaudio +opengl python +qt5 +sdk +udev vboxwebsrv vnc"
 
 RDEPEND="!app-emulation/virtualbox-bin
        ~app-emulation/virtualbox-modules-${PV}
@@ -75,6 +75,7 @@ DEPEND="${RDEPEND}
        !headless? ( x11-libs/libXinerama )
        java? ( >=virtual/jre-1.6:= )
        pam? ( sys-libs/pam )
+       pax_kernel? ( sys-apps/elfix )
        pulseaudio? ( media-sound/pulseaudio )
        qt5? ( dev-qt/linguist-tools:5 )
        vboxwebsrv? ( net-libs/gsoap[-gnutls(-)] )
@@ -183,6 +184,11 @@ src_prepare() {
                rm "${WORKDIR}"/patches/050_${PN}-*-nopie.patch || die
        fi
 
+       # Only add paxmark patch when we're on pax_kernel
+       if use pax_kernel ; then
+               epatch "${FILESDIR}"/virtualbox-5.1.4-paxmark-bldprogs.patch || die
+       fi
+
        eapply "${WORKDIR}/patches"
 
        eapply_user