about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-22 07:22:03 +0000
committerRoland McGrath <roland@gnu.org>2002-08-22 07:22:03 +0000
commit5015cde4c8f4d5b50c906967cdf88d8bff82dca1 (patch)
tree6f5b5199b33dd4c5a462960c5bae275218ab4bf6
parent90d1d40b27ab1785e309c243e39765ff6cce9442 (diff)
downloadglibc-5015cde4c8f4d5b50c906967cdf88d8bff82dca1.tar.gz
glibc-5015cde4c8f4d5b50c906967cdf88d8bff82dca1.tar.xz
glibc-5015cde4c8f4d5b50c906967cdf88d8bff82dca1.zip
* 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.
-rw-r--r--ChangeLog6
-rw-r--r--scripts/firstversions.awk27
2 files changed, 27 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 282bf9bfa7..ac29548eac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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-08-21  Roland McGrath  <roland@redhat.com>
 
 	* configure.in: Make GCC version check require 3.[2-9]* and no others.
diff --git a/scripts/firstversions.awk b/scripts/firstversions.awk
index 1a500f4f1d..8da92ae485 100644
--- a/scripts/firstversions.awk
+++ b/scripts/firstversions.awk
@@ -27,20 +27,35 @@ $1 == "}" {
   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 = firstversion[thislib, idx[thislib]];
-    v = f;
+    f = v = firstversion[thislib, idx[thislib]];
     while ($1 >= v) {
-      firstversion[thislib, idx[thislib]] = 0;
+      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)
+    if ($1 == v || $1 == f)
+      # This version was the specified earliest version itself.
       print;
-    else
-      print $1, "=", v;
+    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;