glibc/scripts/firstversions.awk
Roland McGrath 48a5e01019 * scripts/versions.awk: Improve error message for missing version.
Each version inherits from the last one only if they have the same
	nonnumeric prefix, i.e. GLIBC_x.y and GLIBC_x.z or FOO_x and FOO_y
	but not GLIBC_x and FOO_y.

	* scripts/firstversions.awk: Handle libraries that don't have each
	particular version named in the third column of shlib-versions.
2002-02-07 05:25:11 +00:00

47 lines
1.1 KiB
Awk

# Script to preprocess Versions.all lists based on "earliest version"
# specifications in the shlib-versions file.
NF > 2 && $2 == ":" {
for (i = 0; i <= NF - 3; ++i)
firstversion[$1, i] = $(3 + i);
idx[$1] = 0;
next;
}
NF == 2 && $2 == "{" { thislib = $1; print; next }
$1 == "}" {
if ((thislib, idx[thislib]) in firstversion) {
# We haven't seen the stated version, but have produced
# others pointing to it, so we synthesize it now.
printf " %s\n", firstversion[thislib, idx[thislib]];
idx[thislib]++;
}
print;
next;
}
/GLIBC_PRIVATE/ { print; next }
{
if ((thislib, idx[thislib]) in firstversion) {
# XXX relative string comparison loses if we ever have multiple digits
# between dots in GLIBC_x.y[.z] names.
v = firstversion[thislib, idx[thislib]];
while ($1 >= v) {
firstversion[thislib, idx[thislib]] = 0;
idx[thislib]++;
if ((thislib, idx[thislib]) in firstversion)
v = firstversion[thislib, idx[thislib]];
else
break;
}
if ($1 >= v)
print;
else
print $1, "=", v;
}
else
print;
}