https://gcc.gnu.org/g:5282e13a938404d7d4edc0ccfe6cbe9b4f980d7e
commit r15-7387-g5282e13a938404d7d4edc0ccfe6cbe9b4f980d7e Author: Georg-Johann Lay <a...@gjlay.de> Date: Wed Feb 5 12:01:55 2025 +0100 AVR: genmultilib.awk - Use more robust parsing of spaces. gcc/ PR target/118768 * config/avr/genmultilib.awk: Parse the AVR_MCU lines in a more robust way w.r.t. white spaces. Diff: --- gcc/config/avr/genmultilib.awk | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk index 71099e80fbbc..e824be6e7657 100644 --- a/gcc/config/avr/genmultilib.awk +++ b/gcc/config/avr/genmultilib.awk @@ -31,6 +31,7 @@ BEGIN { FS ="[(, \t]+" option[""] = "" comment = 1 + cols_expected = -1 dir_tiny = "tiny-stack" opt_tiny = "msp8" @@ -136,10 +137,36 @@ BEGIN { ################################################################## /^AVR_MCU/ { - name = $2 - gsub ("\"", "", name) + line = $0 + gsub (/\(/, ",", line) + gsub (/[ \t")]/, "", line) + n_cols = split (line, col, ",") + + # Now we have col[] something like: + # col[1] = AVR_MCU + # col[2] = avr2 # Device name + # col[3] = ARCH_AVR2 # Core + # col[4] = AVR_ERRATA_SKIP # Device Attributes + # col[5] = NULL # Device Macro like __AVR_ATtiny22__ + # col[6] = 0x0060 # Tdata + # col[7] = 0x0 # Ttext + # col[8] = 0x60000 # Flash Size + # col[9] = 0 # PM Offset + + # Sanity check the number of columns. + if (cols_expected == -1) + cols_expected = n_cols + else if (n_cols != cols_expected) + { + msg = "genmultilib.awk: error: wrong number of columns" + print msg | "cat 1>&2" + print $0 | "cat 1>&2" + exit 1 + } + + name = col[2] - if ($5 == "NULL") + if (col[5] == "NULL") { core = name @@ -169,9 +196,9 @@ BEGIN { opts = option[core] # split device specific feature list - n = split($4,dev_attribute,"|") + n = split (col[4], dev_attribute, "|") - for (i=1; i <= n; i++) + for (i = 1; i <= n; i++) { if (dev_attribute[i] == "AVR_SHORT_SP") opts = opts "/" opt_tiny