aboutsummaryrefslogtreecommitdiff
path: root/scripts/extract-abilist.awk
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/extract-abilist.awk')
-rw-r--r--scripts/extract-abilist.awk44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/extract-abilist.awk b/scripts/extract-abilist.awk
new file mode 100644
index 0000000000..c5b76e1309
--- /dev/null
+++ b/scripts/extract-abilist.awk
@@ -0,0 +1,44 @@
+# awk script to extract a config-specific .symlist file from a merged file.
+# This must be passed run with awk -v config=TUPLE to specify the configuration
+# tuple we will match. The merged file contains stanzas in the form:
+# GLIBC_x.y regexp...
+# function F
+# variable D 0x4
+# Each regexp is matched against TUPLE, and only matching stanzas go
+# into the output, with the regexp list removed. The result matches the
+# original .symlist file from abilist.awk that was fed into merge-abilist.awk.
+
+BEGIN {
+ outpipe = "";
+}
+
+/^ / { if (!ignore) print | outpipe; next; }
+
+{
+ for (i = 2; i <= NF; ++i) {
+ regex = "^" $i "$";
+ if (match(config, regex) != 0) {
+ if ($1 != version) {
+ if (outpipe != "") {
+ close(outpipe);
+ }
+ version = $1;
+ print version;
+ outpipe = "sort";
+ }
+ ignore = 0;
+ next;
+ }
+ }
+ ignore = 1;
+ next;
+}
+
+END {
+ if (outpipe == "") {
+ print "No stanza matched", config > "/dev/stderr";
+ exit 2;
+ }
+ else
+ close(outpipe);
+}