This patch implements a more robust parsing of the
AVR_MCU lines in genmultlib.awk.
The generated t-multilib-avr is the same.
Ok for trunk?
Johann
AVR: genmultilib.awk - Use more robust parsing of spaces.
gcc/
* config/avr/genmultilib.awk: Parse the AVR_MCU lines in
a more robust way w.r.t. white spaces.
diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk
index 71099e80fbb..a69f31bd640 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,35 @@ BEGIN {
##################################################################
/^AVR_MCU/ {
- name = $2
- gsub ("\"", "", name)
+ line = $0
+ gsub (/[ \t"]/, "", line)
+ n_cols = split (line, col, ",")
+ # Now we have col[] something like:
+ # col[1] = AVR_MCU(avr2 # Device name
+ # col[2] = ARCH_AVR2 # Core
+ # col[3] = AVR_ERRATA_SKIP # Device Attributes
+ # col[4] = NULL # Device Macro like __AVR_ATtiny22__
+ # col[5] = 0x0060 # Tdata
+ # col[6] = 0x0 # Ttext
+ # col[7] = 0x60000 # Flash Size
+ # col[8] = 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
+ }
+
+ # col[1] is something like AVR_MCU(avr2
+ split (col[1], col1, "(")
+ name = col1[2]
- if ($5 == "NULL")
+ if (col[4] == "NULL")
{
core = name
@@ -169,7 +195,7 @@ BEGIN {
opts = option[core]
# split device specific feature list
- n = split($4,dev_attribute,"|")
+ n = split (col[3], dev_attribute, "|")
for (i=1; i <= n; i++)
{