diff options
author | Florian Weimer <fweimer@redhat.com> | 2015-10-29 15:33:54 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2015-11-06 13:58:53 +0100 |
commit | 8c77b6ad4063534fb1e5a6904217c4586060334a (patch) | |
tree | 523517a67c4b852dfd6c849c11270b8a997a2e88 /scripts/abilist.awk | |
parent | 8b7b7f75d91f7bac323dd6a370aeb3e9c5c4a7d5 (diff) | |
download | glibc-8c77b6ad4063534fb1e5a6904217c4586060334a.zip glibc-8c77b6ad4063534fb1e5a6904217c4586060334a.tar.gz glibc-8c77b6ad4063534fb1e5a6904217c4586060334a.tar.bz2 |
Simplify the abilist format
The new format lists the version on each line, as in:
VERSION SYMBOL TYPE [VALUE]
This makes it easier to process the files with line-oriented tools.
The abilist files were converted with this awk script:
/^[^ ]/ { version = $1 }
/^ / { print version, substr($0, 2) }
And sorted under the "C" locale with sort.
Diffstat (limited to 'scripts/abilist.awk')
-rw-r--r-- | scripts/abilist.awk | 67 |
1 files changed, 9 insertions, 58 deletions
diff --git a/scripts/abilist.awk b/scripts/abilist.awk index 52b5b32..bd740d4 100644 --- a/scripts/abilist.awk +++ b/scripts/abilist.awk @@ -100,17 +100,13 @@ $2 == "g" || $2 == "w" && (NF == 7 || NF == 8) { # Disabled -- weakness should not matter to shared library ABIs any more. #if (weak == "w") type = tolower(type); if (desc == "") - desc = " " symbol " " type size; + desc = symbol " " type size; if (combine) version = soname " " version (combine_fullname ? " " sofullname : ""); - if (version in versions) { - versions[version] = versions[version] "\n" desc; - } - else { - versions[version] = desc; - } + # Append to the string which collects the results. + descs = descs version " " desc "\n"; next; } @@ -126,65 +122,20 @@ function emit(end) { return; tofile = parse_names && !combine; - nverslist = 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; - } - if (tofile) { out = prefix soname ".symlist"; if (soname in outfiles) out = out "." ++outfiles[soname]; else outfiles[soname] = 1; - printf "" > out; + outpipe = "LC_ALL=C sort -u > " out; + } else { + outpipe = "LC_ALL=C sort -u"; } - split(verslist, order, "\n"); - for (i = 1; i <= nverslist; ++i) { - version = order[i]; - - if (tofile) { - print version >> out; - close(out); - outpipe = "sort >> " out; - } - else { - if (combine) - print ""; - print prefix version; - outpipe = "sort"; - } - print versions[version] | outpipe; - close(outpipe); - - delete versions[version]; - } - for (version in versions) - delete versions[version]; + printf "%s", descs | outpipe; + + descs = ""; if (tofile) print "wrote", out, "for", sofullname; |