commit:     0f4dd949d7671bd86610836d5ac270430be37a4c
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Mon May  9 01:57:57 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Mon May  9 02:15:23 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f4dd949

sys-devel/gcc: add USE=vtv support for vtable verification #547040

 eclass/toolchain.eclass                       | 9 ++++++++-
 profiles/base/package.use.mask                | 4 ++++
 profiles/default/linux/amd64/package.use.mask | 4 ++++
 profiles/default/linux/arm/package.use.mask   | 4 ++++
 profiles/default/linux/arm64/package.use.mask | 4 ++++
 profiles/default/linux/x86/package.use.mask   | 4 ++++
 sys-devel/gcc/metadata.xml                    | 3 ++-
 7 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index b875e19..9920740 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -152,7 +152,7 @@ if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
        # versions which we dropped.  Since graphite was also experimental in
        # the older versions, we don't want to bother supporting it.  #448024
        tc_version_is_at_least 4.8 && IUSE+=" graphite" IUSE_DEF+=( sanitize )
-       tc_version_is_at_least 4.9 && IUSE+=" cilk"
+       tc_version_is_at_least 4.9 && IUSE+=" cilk +vtv"
        tc_version_is_at_least 5.0 && IUSE+=" jit"
        tc_version_is_at_least 6.0 && IUSE+=" pie +ssp"
 fi
@@ -1165,6 +1165,13 @@ toolchain_src_configure() {
                confgcc+=( $(use_enable cilk libcilkrts) )
        fi
 
+       if in_iuse vtv ; then
+               confgcc+=(
+                       $(use_enable vtv vtable-verify)
+                       $(use_enable vtv libvtv)
+               )
+       fi
+
        # newer gcc's come with libquadmath, but only fortran uses
        # it, so auto punt it when we don't care
        if tc_version_is_at_least 4.6 && ! is_fortran ; then

diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask
index 6e27a8a..65d250d 100644
--- a/profiles/base/package.use.mask
+++ b/profiles/base/package.use.mask
@@ -5,6 +5,10 @@
 # This file requires >=portage-2.1.1
 # New entries go on top.
 
+# Mike Frysinger <[email protected]> (08 May 2016)
+# Most targets do not support VTV #547040.
+sys-devel/gcc vtv
+
 # Matthew Brewer <[email protected]> (08 May 2016)
 # Upstream supports using Clang's address sanitizer, but apparently
 # invokes it wrong.

diff --git a/profiles/default/linux/amd64/package.use.mask 
b/profiles/default/linux/amd64/package.use.mask
index 8495579..3f60c80 100644
--- a/profiles/default/linux/amd64/package.use.mask
+++ b/profiles/default/linux/amd64/package.use.mask
@@ -2,6 +2,10 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+# Mike Frysinger <[email protected]> (08 May 2016)
+# This target supports VTV #547040.
+>=sys-devel/gcc-4.9 -vtv
+
 # Mike Frysinger <[email protected]> (21 Oct 2014)
 # This target supports ASAN/etc... #504200.
 sys-devel/gcc -sanitize

diff --git a/profiles/default/linux/arm/package.use.mask 
b/profiles/default/linux/arm/package.use.mask
index 940aef7..3f40609 100644
--- a/profiles/default/linux/arm/package.use.mask
+++ b/profiles/default/linux/arm/package.use.mask
@@ -2,6 +2,10 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+# Mike Frysinger <[email protected]> (08 May 2016)
+# This target supports VTV #547040.
+>=sys-devel/gcc-6 -vtv
+
 # Mike Frysinger <[email protected]> (21 Oct 2014)
 # This target supports ASAN/etc... #504200.
 >=sys-devel/gcc-4.9.0 -sanitize

diff --git a/profiles/default/linux/arm64/package.use.mask 
b/profiles/default/linux/arm64/package.use.mask
index 70af019..252007d 100644
--- a/profiles/default/linux/arm64/package.use.mask
+++ b/profiles/default/linux/arm64/package.use.mask
@@ -2,6 +2,10 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+# Mike Frysinger <[email protected]> (08 May 2016)
+# This target supports VTV #547040.
+>=sys-devel/gcc-6 -vtv
+
 # Mike Frysinger <[email protected]> (22 Mar 2016)
 # This target supports ASAN/etc... #504200.
 >=sys-devel/gcc-5 -sanitize

diff --git a/profiles/default/linux/x86/package.use.mask 
b/profiles/default/linux/x86/package.use.mask
index e9df847..d49253b 100644
--- a/profiles/default/linux/x86/package.use.mask
+++ b/profiles/default/linux/x86/package.use.mask
@@ -2,6 +2,10 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+# Mike Frysinger <[email protected]> (08 May 2016)
+# This target supports VTV #547040.
+>=sys-devel/gcc-4.9 -vtv
+
 # Mike Frysinger <[email protected]> (21 Oct 2014)
 # This target supports ASAN/etc... #504200.
 sys-devel/gcc -sanitize

diff --git a/sys-devel/gcc/metadata.xml b/sys-devel/gcc/metadata.xml
index 8374583..9e45459 100644
--- a/sys-devel/gcc/metadata.xml
+++ b/sys-devel/gcc/metadata.xml
@@ -28,7 +28,8 @@
     <flag name="objc-gc">Build support for the Objective C code language 
Garbage
       Collector</flag>
     <flag name="regression-test">Run the testsuite and install the results 
(requires FEATURES=test)</flag>
-    <flag name="sanitize">Build support various sanitizer functions 
(ASAN/TSAN/etc...)</flag>
+    <flag name="sanitize">Build support for various sanitizer functions 
(ASAN/TSAN/etc...)</flag>
+    <flag name="vtv">Build support for virtual table verification (a C++ 
hardening feature)</flag>
   </use>
   <upstream>
     <remote-id type="cpe">cpe:/a:gnu:gcc</remote-id>

Reply via email to