2015-10-29 Florian Weimer <fweimer@redhat.com>
* scripts/abilist.awk: Collect descriptors in the descs variable.
(emit): Write descs variable and sort it
externally, with sort.
* sysdeps/**/*.abilist: Convert to new format.
@@ -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;