commit:     96d5303a2e1daee48a79e8cbb5a24be652535b95
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Jul  6 16:35:52 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 16:39:07 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=96d5303a

toolchain.eclass: add USE=valgrind for annotations for valgrind

This adds annotation hints to memory handling code into
gcc to ease debugging it under valgrind.

Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/toolchain.eclass    | 9 +++++++++
 sys-devel/gcc/metadata.xml | 1 +
 2 files changed, 10 insertions(+)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 8384e565d86..5bd4e18eb0d 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -200,6 +200,7 @@ if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
        tc_version_is_at_least 9.0 && IUSE+=" d"
        tc_version_is_at_least 9.1 && IUSE+=" lto"
        tc_version_is_at_least 10 && IUSE+=" zstd" TC_FEATURES+=(zstd)
+       tc_version_is_at_least 11 && IUSE+=" valgrind" TC_FEATURES+=(valgrind)
 fi
 
 if tc_version_is_at_least 10; then
@@ -272,6 +273,10 @@ if tc_has_feature zstd ; then
        DEPEND+=" zstd? ( app-arch/zstd )"
 fi
 
+if tc_has_feature valgrind; then
+       BDEPEND+=" valgrind? ( dev-util/valgrind )"
+fi
+
 case ${EAPI:-0} in
        5*|6) DEPEND+=" ${BDEPEND}" ;;
 esac
@@ -1278,6 +1283,10 @@ toolchain_src_configure() {
                confgcc+=( $(use_enable systemtap) )
        fi
 
+       if in_iuse valgrind ; then
+               confgcc+=( $(use_enable valgrind valgrind-annotations) )
+       fi
+
        if in_iuse vtv ; then
                confgcc+=(
                        $(use_enable vtv vtable-verify)

diff --git a/sys-devel/gcc/metadata.xml b/sys-devel/gcc/metadata.xml
index a6c76c3bd10..feeacd30317 100644
--- a/sys-devel/gcc/metadata.xml
+++ b/sys-devel/gcc/metadata.xml
@@ -34,6 +34,7 @@
     <flag name="sanitize">Build support for various sanitizer functions 
(ASAN/TSAN/etc...)</flag>
     <flag name="ssp">Build packages with stack smashing protector on by 
default</flag>
     <flag name="systemtap">enable systemtap static probe points</flag>
+    <flag name="valgrind">Enable valgrind annotations for gcc internals 
(useful for gcc debugging).</flag>
     <flag name="vtv">Build support for virtual table verification (a C++ 
hardening feature)</flag>
   </use>
   <upstream>

Reply via email to