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.