From: Roland McGrath Date: Thu, 22 Jan 2009 11:08:46 +0000 (-0800) Subject: known-dwarf.awk: Handle DW_FOO_BAR_* sets better. X-Git-Tag: elfutils-0.139~6^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97b12d0e19be004bd623b5ebc2b0504620ed06cc;p=thirdparty%2Felfutils.git known-dwarf.awk: Handle DW_FOO_BAR_* sets better. --- diff --git a/config/ChangeLog b/config/ChangeLog index 883e89395..02184719d 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,7 @@ +2009-01-22 Roland McGrath + + * known-dwarf.awk: Handle DW_FOO_BAR_* sets better. + 2009-01-11 Roland McGrath * known-dwarf.awk: New file. diff --git a/config/known-dwarf.awk b/config/known-dwarf.awk index 6e8af6d43..3089dd27f 100644 --- a/config/known-dwarf.awk +++ b/config/known-dwarf.awk @@ -1,9 +1,17 @@ #!/bin/awk -f -$1 ~ /DW_([A-Z]+)_([^ ]+)/ { - match($1, /DW_([A-Z]+)_([^ ]+)/, fields); - set = fields[1]; - elt = fields[2]; +$1 == "enum" { set = ""; next } + +set == "" && $1 ~ /DW_([A-Z_]+)_([^ ]+)/ { + set = $1; + sub(/^DW_/, "", set); + sub(/_[^[:upper:]_].*$/, "", set); + if (set ~ /LANG_.+/) set = "LANG"; +} + +$1 ~ /DW([_A-Z]+)_([^ ]+)/ { + match($1, ("DW_" set "_([^ ]+)"), fields); + elt = fields[1]; if (set in DW) DW[set] = DW[set] "," elt; else @@ -14,16 +22,18 @@ $1 ~ /DW_([A-Z]+)_([^ ]+)/ { comment[set, elt] = c; } } + END { print "/* Generated by config/dwarf-known.awk from libdw.h contents. */"; n = asorti(DW, sets); for (i = 1; i <= n; ++i) { set = sets[i]; if (what && what != set) continue; - print "\n#define ALL_KNOWN_DW_" set " \\"; split(DW[set], elts, ","); m = asort(elts); lo = hi = ""; + if (m == 0) continue; + print "\n#define ALL_KNOWN_DW_" set " \\"; for (j = 1; j <= m; ++j) { elt = elts[j]; if (elt ~ /(lo|low)_user$/) {