1*7304104dSAndroid Build Coastguard Worker#!/bin/gawk -f 2*7304104dSAndroid Build Coastguard Worker 3*7304104dSAndroid Build Coastguard Worker## Copyright (C) 2012, 2015 Red Hat, Inc. 4*7304104dSAndroid Build Coastguard Worker## 5*7304104dSAndroid Build Coastguard Worker## This file is part of elfutils. 6*7304104dSAndroid Build Coastguard Worker## 7*7304104dSAndroid Build Coastguard Worker## This file is free software; you can redistribute it and/or modify 8*7304104dSAndroid Build Coastguard Worker## it under the terms of the GNU General Public License as published by 9*7304104dSAndroid Build Coastguard Worker## the Free Software Foundation; either version 3 of the License, or 10*7304104dSAndroid Build Coastguard Worker## (at your option) any later version. 11*7304104dSAndroid Build Coastguard Worker## 12*7304104dSAndroid Build Coastguard Worker## elfutils is distributed in the hope that it will be useful, but 13*7304104dSAndroid Build Coastguard Worker## WITHOUT ANY WARRANTY; without even the implied warranty of 14*7304104dSAndroid Build Coastguard Worker## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*7304104dSAndroid Build Coastguard Worker## GNU General Public License for more details. 16*7304104dSAndroid Build Coastguard Worker## 17*7304104dSAndroid Build Coastguard Worker## You should have received a copy of the GNU General Public License 18*7304104dSAndroid Build Coastguard Worker## along with this program. If not, see <http://www.gnu.org/licenses/>. 19*7304104dSAndroid Build Coastguard Worker 20*7304104dSAndroid Build Coastguard Worker$1 == "enum" { set = ""; next } 21*7304104dSAndroid Build Coastguard Worker 22*7304104dSAndroid Build Coastguard Workerset == "" && $1 ~ /DW_([A-Z_]+)_([^ ]+)/ { 23*7304104dSAndroid Build Coastguard Worker set = $1; 24*7304104dSAndroid Build Coastguard Worker sub(/^DW_/, "", set); 25*7304104dSAndroid Build Coastguard Worker sub(/_[^[:upper:]_].*$/, "", set); 26*7304104dSAndroid Build Coastguard Worker if (set ~ /LANG_.+/) set = "LANG"; 27*7304104dSAndroid Build Coastguard Worker} 28*7304104dSAndroid Build Coastguard Worker 29*7304104dSAndroid Build Coastguard Worker$1 ~ /DW([_A-Z]+)_([^ ]+)/ { 30*7304104dSAndroid Build Coastguard Worker match($1, ("DW_" set "_([^ ]+)"), fields); 31*7304104dSAndroid Build Coastguard Worker elt = fields[1]; 32*7304104dSAndroid Build Coastguard Worker if (set in DW) 33*7304104dSAndroid Build Coastguard Worker DW[set] = DW[set] "," elt; 34*7304104dSAndroid Build Coastguard Worker else 35*7304104dSAndroid Build Coastguard Worker DW[set] = elt; 36*7304104dSAndroid Build Coastguard Worker} 37*7304104dSAndroid Build Coastguard Worker 38*7304104dSAndroid Build Coastguard WorkerEND { 39*7304104dSAndroid Build Coastguard Worker print "/* Generated by config/known-dwarf.awk from libdw/dwarf.h contents. */"; 40*7304104dSAndroid Build Coastguard Worker n = asorti(DW, sets); 41*7304104dSAndroid Build Coastguard Worker for (i = 1; i <= n; ++i) { 42*7304104dSAndroid Build Coastguard Worker set = sets[i]; 43*7304104dSAndroid Build Coastguard Worker if (what && what != set) continue; 44*7304104dSAndroid Build Coastguard Worker split(DW[set], elts, ","); 45*7304104dSAndroid Build Coastguard Worker m = asort(elts); 46*7304104dSAndroid Build Coastguard Worker if (m == 0) continue; 47*7304104dSAndroid Build Coastguard Worker print "\n#define DWARF_ALL_KNOWN_DW_" set " \\"; 48*7304104dSAndroid Build Coastguard Worker for (j = 1; j <= m; ++j) { 49*7304104dSAndroid Build Coastguard Worker elt = elts[j]; 50*7304104dSAndroid Build Coastguard Worker if (elt ~ /(low?|hi|high)_user$/) 51*7304104dSAndroid Build Coastguard Worker continue; 52*7304104dSAndroid Build Coastguard Worker print " DWARF_ONE_KNOWN_DW_" set " (" elt ", DW_" set "_" elt ") \\"; 53*7304104dSAndroid Build Coastguard Worker } 54*7304104dSAndroid Build Coastguard Worker print " /* End of DW_" set "_*. */"; 55*7304104dSAndroid Build Coastguard Worker } 56*7304104dSAndroid Build Coastguard Worker} 57