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>