summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--scripts/firstversions.awk23
-rw-r--r--shlib-versions7
2 files changed, 23 insertions, 7 deletions
diff --git a/scripts/firstversions.awk b/scripts/firstversions.awk
index 236d90ec97..7f1c2edf52 100644
--- a/scripts/firstversions.awk
+++ b/scripts/firstversions.awk
@@ -1,27 +1,36 @@
 # Script to preprocess Versions.all lists based on "earliest version"
 # specifications in the shlib-versions file.
 
-NF == 3 && $2 == ":" { firstversion[$1] = $3; next }
+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 (firstversion[thislib]) {
+  if (firstversion[thislib, idx[thislib]]) {
     # We haven't seen the stated version, but have produced
     # others pointing to it, so we synthesize it now.
-    printf "  %s\n", firstversion[thislib];
+    printf "  %s\n", firstversion[thislib, idx[thislib]];
+    idx[thislib]++;
   }
   print;
   next;
 }
 
 {
-  if (! firstversion[thislib])
+  v = firstversion[thislib, idx[thislib]];
+
+  if (! v)
     print;
-  else if ($1 == firstversion[thislib]) {
+  else if ($1 == v) {
     print;
-    firstversion[thislib] = 0;
+    firstversion[thislib, idx[thislib]] = 0;
+    idx[thislib]++;
   }
   else
-    print $1, "=", firstversion[thislib];
+    print $1, "=", v;
 }
diff --git a/shlib-versions b/shlib-versions
index f907bc7eee..f4365eede6 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -8,6 +8,11 @@
 # This file can use cpp-style conditionals starting with % instead of #
 # to test the symbols defined in config.h by configure.
 
+# In the optional third column, there can one or more symbol set names
+# listed, which must be in ascending version order reading left to right
+# and must appear in this same order in the Versions.def file.  Each listed
+# version subsumes all prior versions back to the previous listed version.
+
 # Configuration		Library=version		Earliest symbol set (optional)
 # -------------		---------------		------------------------------
 
@@ -23,6 +28,8 @@ arm.*-.*-.*		libm=6
 
 # We provide libc.so.6 for Linux kernel versions 2.0 and later.
 alpha.*-.*-linux.*	libc=6.1
+# Working mips versions were never released between 2.0 and 2.2.
+mips.*-.*-linux.*	libc=6			GLIBC_2.0 GLIBC_2.2
 .*-.*-linux.*		libc=6
 
 # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.