From 52fa9d334e23327ba08139f8617d3ae16adff64e Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 23 Mar 2024 20:18:16 +0000 Subject: toolchain.eclass: fortify hybrid workaround * Make sure the result is non-empty before trying to use it as an index * Make sure the result is an integer before trying to use it as an index * Don't try to set --param ... if we had no result at all These are good ideas anyway but they happen with gnat-gpl as apparently older GCC didn't actually have the l1-cache-size thing (I thought it was a bit older than 10). Whatever. Closes: https://bugs.gentoo.org/927646 Signed-off-by: Sam James --- eclass/toolchain.eclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 331e107bacf3..03e6a5d987d1 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -1616,10 +1616,11 @@ gcc_do_filter_flags() { [[ -z ${x} || ${x} -gt 64 ]] && break l1_cache_size=$(taskset --cpu-list ${x} $(tc-getCC) -Q --help=params -O2 -march=native \ | awk '{ if ($1 ~ /^.*param.*l1-cache-size/) print $2; }' || die) + [[ -n ${l1_cache_size} && ${l1_cache_size} =~ "^[0-9]+$" ]] || break l1_cache_sizes[${l1_cache_size}]=1 done # If any of them are different, just pick the first one. - if [[ ${#l1_cache_sizes} != 1 ]] ; then + if [[ ${#l1_cache_sizes} -gt 1 ]] ; then append-flags --param=l1-cache-size=${l1_cache_size} fi fi -- cgit v1.2.3-65-gdbad