Update.
[glibc.git] / scripts / firstversions.awk
blob736ef0365c17eeccd57b02f1daf9bfb4d0b0ff50
1 # Script to preprocess Versions.all lists based on "earliest version"
2 # specifications in the shlib-versions file.
4 NF > 2 && $2 == ":" {
5 for (i = 0; i <= NF - 3; ++i)
6 firstversion[$1, i] = $(3 + i);
7 idx[$1] = 0;
8 next;
11 NF == 2 && $2 == "{" { thislib = $1; print; next }
13 $1 == "}" {
14 if ((thislib, idx[thislib]) in firstversion) {
15 # We haven't seen the stated version, but have produced
16 # others pointing to it, so we synthesize it now.
17 printf " %s\n", firstversion[thislib, idx[thislib]];
18 idx[thislib]++;
20 print;
21 next;
24 /GLIBC_PRIVATE/ { print; next }
27 if ((thislib, idx[thislib]) in firstversion) {
28 # XXX relative string comparison loses if we ever have multiple digits
29 # between dots in GLIBC_x.y[.z] names.
30 v = firstversion[thislib, idx[thislib]];
31 while ($1 >= v) {
32 firstversion[thislib, idx[thislib]] = 0;
33 idx[thislib]++;
34 if ((thislib, idx[thislib]) in firstversion)
35 v = firstversion[thislib, idx[thislib]];
36 else
37 break;
39 if ($1 >= v)
40 print;
41 else
42 print $1, "=", v;
44 else
45 print;