+2009-01-22 Roland McGrath <roland@redhat.com>
+
+ * known-dwarf.awk: Handle DW_FOO_BAR_* sets better.
+
2009-01-11 Roland McGrath <roland@redhat.com>
* known-dwarf.awk: New file.
#!/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
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$/) {