]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2002-08-22 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@gnu.org>
Thu, 22 Aug 2002 08:36:06 +0000 (08:36 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 22 Aug 2002 08:36:06 +0000 (08:36 +0000)
* 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.

scripts/firstversions.awk

index 7f1c2edf52821ebb29c6b3dd14837704ec9e1701..8da92ae485d6b0a36703552897a0b50d21e0f18e 100644 (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;
 }