2002-08-22 Roland McGrath <roland@redhat.com>

* scripts/firstversions.awk: When encountering a version newer than
	the specified earliest version, be sure to emit the specified earliest
	version first if any renaming of an older version to that has been.
2002-03-22  H.J. Lu  <hjl@gnu.org>

	* scripts/firstversions.awk: Check the first version.
2002-02-06  Roland McGrath  <roland@frob.com>

	* scripts/firstversions.awk: Handle libraries that don't have each
	particular version named in the third column of shlib-versions.
	* scripts/firstversions.awk: Don't mess with GLIBC_PRIVATE.
This commit is contained in:
Roland McGrath 2002-08-22 08:36:06 +00:00
parent b5e987d473
commit 89f08aa950

View File

@ -11,7 +11,7 @@ NF > 2 && $2 == ":" {
NF == 2 && $2 == "{" { thislib = $1; print; next }
$1 == "}" {
if (firstversion[thislib, idx[thislib]]) {
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]];
@ -21,16 +21,42 @@ $1 == "}" {
next;
}
{
v = firstversion[thislib, idx[thislib]];
/GLIBC_PRIVATE/ { print; next }
if (! v)
print;
else if ($1 == v) {
print;
firstversion[thislib, idx[thislib]] = 0;
idx[thislib]++;
{
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.
f = v = firstversion[thislib, idx[thislib]];
while ($1 >= v) {
delete firstversion[thislib, idx[thislib]];
idx[thislib]++;
if ((thislib, idx[thislib]) in firstversion)
v = firstversion[thislib, idx[thislib]];
else
break;
}
if ($1 == v || $1 == f)
# This version was the specified earliest version itself.
print;
else if ($1 < v) {
# This version is older than the specified earliest version.
print " " $1, "=", v;
# Record that V has been referred to, so we will be sure to emit it
# if we hit a later one without hitting V itself.
usedversion[thislib, v] = 1;
}
else {
# This version is newer than the specified earliest version.
# We haven't seen that version itself or else we wouldn't be here
# because we would have removed it from the firstversion array.
# If there were any earlier versions that used that one, emit it now.
if ((thislib, v) in usedversion) {
print " " v;
}
print " " $1;
}
}
else
print $1, "=", v;
print;
}