summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-08-18 03:34:10 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-08-18 03:34:10 +0100
commite8766a573860a86ab2b00122250ba4d5754f89a1 (patch)
treea9214b2c08d4716553a4cd12b23eeec9afded075 /eclass
parent19e23b194d10e420ec050c4d8a6253aad17694b1 (diff)
gentoo auto-resync : 18:08:2023 - 03:34:10
Diffstat (limited to 'eclass')
-rw-r--r--eclass/Manifest.gzbin38332 -> 38329 bytes
-rw-r--r--eclass/flag-o-matic.eclass38
-rw-r--r--eclass/toolchain-funcs.eclass4
-rw-r--r--eclass/toolchain.eclass1
4 files changed, 34 insertions, 9 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz
index d4d037dd2295..a5d3079ee893 100644
--- a/eclass/Manifest.gz
+++ b/eclass/Manifest.gz
Binary files differ
diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 0558e639b981..b4c27bf89d92 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -147,7 +147,10 @@ _filter-hardened() {
# not -fPIC or -fpic, but too many places filter -fPIC without
# thinking about -fPIE.
-fPIC|-fpic|-fPIE|-fpie|-Wl,pie|-pie)
- gcc-specs-pie || continue
+ if ! gcc-specs-pie && ! tc-enables-pie ; then
+ continue
+ fi
+
if ! is-flagq -nopie && ! is-flagq -no-pie ; then
# Support older Gentoo form first (-nopie) before falling
# back to the official gcc-6+ form (-no-pie).
@@ -158,15 +161,36 @@ _filter-hardened() {
fi
fi
;;
- -fstack-protector)
- gcc-specs-ssp || continue
- is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector);;
+
+ -fstack-protector|-fstack-protector-strong)
+ if ! gcc-specs-ssp && ! tc-enables-ssp && ! tc-enables-ssp-strong ; then
+ continue
+ fi
+
+ is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
+ ;;
-fstack-protector-all)
- gcc-specs-ssp-to-all || continue
- is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all);;
+ if ! gcc-specs-ssp-to-all && ! tc-enables-ssp-all ; then
+ continue
+ fi
+
+ is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
+ ;;
-fno-strict-overflow)
gcc-specs-nostrict || continue
- is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow);;
+
+ is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
+ ;;
+ -D_GLIBCXX_ASSERTIONS|-D_LIBCPP_ENABLE_ASSERTIONS|-D_LIBCPP_ENABLE_HARDENED_MODE)
+ tc-enables-cxx-assertions || continue
+
+ append-cppflags -U_GLIBCXX_ASSERTIONS -U_LIBCPP_ENABLE_ASSERTIONS -U_LIBCPP_ENABLE_HARDENED_MODE
+ ;;
+ -D_FORTIFY_SOURCE=*)
+ tc-enables-fortify-source || continue
+
+ append-cppflags -U_FORTIFY_SOURCE
+ ;;
esac
done
}
diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
index e28f6148ddc1..556bbac35307 100644
--- a/eclass/toolchain-funcs.eclass
+++ b/eclass/toolchain-funcs.eclass
@@ -963,9 +963,9 @@ gcc-specs-stack-check() {
# @DESCRIPTION:
# Return truth if the current compiler enables assertions in the C++ standard
# library. For libstdc++, this is -D_GLIBCXX_ASSERTIONS, and for libcxx/libc++,
-# this is -D_LIBCPP_ENABLE_ASSERTIONS.
+# this is -D_LIBCPP_ENABLE_ASSERTIONS (deprecated) or -D_LIBCPP_ENABLE_HARDENED_MODE.
tc-enables-cxx-assertions() {
- tc-cpp-is-true "defined(_GLIBCXX_ASSERTIONS) || defined(_LIBCPP_ENABLE_ASSERTIONS)" ${CPPFLAGS} ${CXXFLAGS}
+ tc-cpp-is-true "defined(_GLIBCXX_ASSERTIONS) || defined(_LIBCPP_ENABLE_ASSERTIONS) || defined(_LIBCPP_ENABLE_HARDENED_MODE)" ${CPPFLAGS} ${CXXFLAGS}
}
# @FUNCTION: tc-enables-pie
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 9f626c5bfc77..6a88676b750d 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -1395,6 +1395,7 @@ downgrade_arch_flags() {
# "added" "arch" "replacement"
local archlist=(
+ 12.3 znver4 znver3
10 znver3 znver2
9 znver2 znver1
4.9 bdver4 bdver3