# 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;
}
# 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)
# ------------- --------------- ------------------------------
# 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.