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.awk98
1 files changed, 0 insertions, 98 deletions
diff --git a/scripts/extract-abilist.awk b/scripts/extract-abilist.awk
deleted file mode 100644
index c9adec4..0000000
--- a/scripts/extract-abilist.awk
+++ /dev/null
@@ -1,98 +0,0 @@
-# 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...
-# | GLIBC_x.y.z regexp...
-# | GLIBC_m.n 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. Multiple version lines
-# can match with the same regexp, meaning the stanza is duplicated in
-# multiple version sets. The result matches the original .symlist file
-# from abilist.awk that was fed into merge-abilist.awk.
-
-BEGIN {
- inside = 0;
-}
-
-/^ / {
- inside = 1;
- if (!ignore) {
- for (version in current) {
- if (version in versions)
- versions[version] = versions[version] "\n" $0;
- else
- versions[version] = $0;
- }
- }
- next;
-}
-
-{
- second = ($1 == "|");
- if (second && inside) {
- printf "%s:%d: bad input line inside stanza: %s\n", FILENAME, FNR, $0;
- exit 1;
- }
- inside = 0;
-
- for (i = second ? 3 : 2; i <= NF; ++i) {
- regex = "^" $i "$";
- if (match(config, regex) != 0) {
- if (!second || ignore)
- # Clear old array.
- split("", current);
- current[second ? $2 : $1] = 1;
- ignore = 0;
- next;
- }
- }
-
- if (!second)
- ignore = 1;
- next;
-}
-
-END {
- nverlist = 0;
- for (version in versions) {
- if (nverslist == 0) {
- verslist = version;
- nverslist = 1;
- continue;
- }
- split(verslist, s, "\n");
- if (version < s[1]) {
- verslist = version;
- for (i = 1; i <= nverslist; ++i) {
- verslist = verslist "\n" s[i];
- }
- }
- else {
- verslist = s[1];
- for (i = 2; i <= nverslist; ++i) {
- if (version < s[i]) break;
- verslist = verslist "\n" s[i];
- }
- verslist = verslist "\n" version;
- for (; i <= nverslist; ++i) {
- verslist = verslist "\n" s[i];
- }
- }
- ++nverslist;
- }
-
- split(verslist, order, "\n");
- for (i = 1; i <= nverslist; ++i) {
- version = order[i];
-
- print version;
- outpipe = "sort";
- print versions[version] | outpipe;
- close(outpipe);
-
- if (version == lastversion)
- break;
- }
-}