Remove configuration name patterns from shlib-versions
diff mbox

Message ID Pine.LNX.4.64.1409112210510.5583@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers Sept. 11, 2014, 10:22 p.m. UTC
On Thu, 11 Sep 2014, Roland McGrath wrote:

> I've forgotten about whatever change made this not break the multi-variant
> (e.g. biarch) cases for generating gnu/lib-names.h.  It appears that now
> operates by assuming that most SONAMEs will be the same for all the ABI
> variants, and requires that abi-variant-libfoo-soname variables be set in
> sysdeps/.../Makefile for the ones that vary.  I'm not particularly happy
> with that.  There should only be one flavor of file where SONAME strings
> appear in the sources.

Dealing with that is the next point on the list at 
<https://sourceware.org/ml/libc-alpha/2014-06/msg00949.html>.

> I think we need a more thoroughgoing overhaul of the shlib-versions
> picture.  I believe we already have consensus that all such things should
> be organized purely via the sysdeps/ hierarchy rather than with any config
> tuple matching.  So this change could well be an appropriate incremental
> step along the path to the clean overhaul.  But I'd prefer to see a design
> for that end state before we just whittle away with incremental changes
> like this one.  As is, it just feels to me like it's making something
> baroque slightly differently baroque (and perhaps moreso), and not clearly
> easier to grok than the status quo that (some) people already grok.

The only other things I know of are avoiding repeating the "Earliest 
symbol set" information many times in some cases, and removing the 
bitrotten --enable-oldest-abi support as previously discussed.

> As to the tunnel-vision review of the patch per se, the only problem I see
> is that the comments in shlib-versions still describe things in ways that
> don't really make sense any more, e.g. "loose patterns at the end of the
> list can give defaults."

This patch version updates that comment (so instead it describes the 
ordering of the various shlib-versions files, which is the key ordering 
information given the files coming from sysdeps).

2014-09-11  Joseph Myers  <joseph@codesourcery.com>

	* scripts/soversions.awk: Do not handle configuration names.
	* Makeconfig ($(common-objpfx)soversions.i): Do not pass cpu,
	vendor and os variables to soversions.awk.
	* configure.ac: Do not modify gnu-* host_os.
	* configure: Regenerated
	* shlib-versions: Remove first column with configuration names.
	* libidn/shlib-versions: Likewise.
	* nptl/shlib-versions: Likewise.
	* nptl_db/shlib-versions: Likewise.
	* sysdeps/hppa/shlib-versions: Likewise.
	* sysdeps/m68k/shlib-versions: Likewise.
	* sysdeps/mach/hurd/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/aarch64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/alpha/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/arm/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/hppa/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/ia64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/mips/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sh/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/tile/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions: Likewise.

Comments

Roland McGrath Sept. 11, 2014, 11:22 p.m. UTC | #1
> Dealing with that is the next point on the list at 
> <https://sourceware.org/ml/libc-alpha/2014-06/msg00949.html>.

OK, if it's RSN then this incremental step is OK.

> The only other things I know of are avoiding repeating the "Earliest 
> symbol set" information many times in some cases, and removing the 
> bitrotten --enable-oldest-abi support as previously discussed.

OK, perhaps that's all there is.

> This patch version updates that comment (so instead it describes the 
> ordering of the various shlib-versions files, which is the key ordering 
> information given the files coming from sysdeps).

That looks fine now.

Patch
diff mbox

diff --git a/Makeconfig b/Makeconfig
index 0f8069b..0780788 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -964,9 +964,6 @@  soversions-default-setname = $(patsubst %, %,\
 $(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
 			      $(common-objpfx)shlib-versions.v
 	$(AWK) -v default_setname='$(soversions-default-setname)' \
-	       -v cpu='$(config-machine)' \
-	       -v vendor='$(config-vendor)' \
-	       -v os='$(config-os)' \
 	       -f $^ > $@T
 	mv -f $@T $@
 $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
diff --git a/configure b/configure
index 86ba307..ff5c730 100755
--- a/configure
+++ b/configure
@@ -3728,19 +3728,6 @@  if test "$build_pt_chown" = yes; then
 
 fi
 
-# The way shlib-versions is used to generate soversions.mk uses a
-# fairly simplistic model for name recognition that can't distinguish
-# i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
-# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
-# tell.  This doesn't get used much beyond that, so it's fairly safe.
-case "$host_os" in
-linux*)
-  ;;
-gnu*)
-  host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
-  ;;
-esac
-
 # We keep the original values in `$config_*' and never modify them, so we
 # can write them unchanged into config.make.  Everything else uses
 # $machine, $vendor, and $os, and changes them whenever convenient.
diff --git a/configure.ac b/configure.ac
index 2553399..794ffc2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -365,19 +365,6 @@  if test "$build_pt_chown" = yes; then
   AC_DEFINE(HAVE_PT_CHOWN)
 fi
 
-# The way shlib-versions is used to generate soversions.mk uses a
-# fairly simplistic model for name recognition that can't distinguish
-# i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
-# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
-# tell.  This doesn't get used much beyond that, so it's fairly safe.
-case "$host_os" in
-linux*)
-  ;;
-gnu*)
-  host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
-  ;;
-esac
-
 # We keep the original values in `$config_*' and never modify them, so we
 # can write them unchanged into config.make.  Everything else uses
 # $machine, $vendor, and $os, and changes them whenever convenient.
diff --git a/libidn/shlib-versions b/libidn/shlib-versions
index 9b27e51..0aa1a59 100644
--- a/libidn/shlib-versions
+++ b/libidn/shlib-versions
@@ -1 +1 @@ 
-.*-.*-.*	libcidn=1
+libcidn=1
diff --git a/nptl/shlib-versions b/nptl/shlib-versions
index f2cc32d..e08931a 100644
--- a/nptl/shlib-versions
+++ b/nptl/shlib-versions
@@ -1 +1 @@ 
-.*-.*-linux.*		libpthread=0
+libpthread=0
diff --git a/nptl_db/shlib-versions b/nptl_db/shlib-versions
index 592f7fa..cf5a9e9 100644
--- a/nptl_db/shlib-versions
+++ b/nptl_db/shlib-versions
@@ -1,2 +1,2 @@ 
 # The thread debug library
-.*-.*-linux.*		libthread_db=1
+libthread_db=1
diff --git a/scripts/soversions.awk b/scripts/soversions.awk
index adba155..dbc9059 100644
--- a/scripts/soversions.awk
+++ b/scripts/soversions.awk
@@ -1,59 +1,41 @@ 
 # awk script for shlib-versions.v -> soversions.i; see Makeconfig.
 
-BEGIN {
-  config = cpu "-" vendor "-" os;
-  configs[config] = "DEFAULT";
-}
-
-{ thiscf = $1 }
-
 # Obey the first matching DEFAULT line.
-$2 == "DEFAULT" {
-  $1 = $2 = "";
-  default_set[++ndefault_set] = thiscf "\n" $0;
+$1 == "DEFAULT" {
+  $1 = "";
+  default_set[++ndefault_set] = $0;
   next
 }
 
 # Collect all lib lines before emitting anything, so DEFAULT
 # can be interspersed.
 {
-  lib = number = $2;
+  lib = number = $1;
   sub(/=.*$/, "", lib);
   sub(/^.*=/, "", number);
-  if ((thiscf FS lib) in numbers) next;
-  numbers[thiscf FS lib] = number;
-  order[thiscf FS lib] = ++order_n;
-  if (NF > 2) {
-    $1 = $2 = "";
-    versions[thiscf FS lib] = $0
+  if (lib in numbers) next;
+  numbers[lib] = number;
+  order[lib] = ++order_n;
+  if (NF > 1) {
+    $1 = "";
+    versions[lib] = $0
   }
 }
 
 END {
-  for (elt in numbers) {
-    split(elt, x);
-    cf = x[1];
-    lib = x[2];
-    for (c in configs)
-      if (c ~ cf) {
-	if (elt in versions)
-	  set = versions[elt];
-	else {
-	  set = (c == config) ? default_setname : "";
-	  for (i = 1; i <= ndefault_set; ++i) {
-	    split(default_set[i], x, "\n");
-	    if (c ~ x[1]) {
-	      set = x[2];
-	      break;
-	    }
-	  }
-	}
-	line = set ? (lib FS numbers[elt] FS set) : (lib FS numbers[elt]);
-	if (!((c FS lib) in lineorder) || order[elt] < lineorder[c FS lib]) {
-	  lineorder[c FS lib] = order[elt];
-	  lines[c FS lib] = configs[c] FS line;
-	}
-      }
+  for (lib in numbers) {
+    if (lib in versions)
+      set = versions[lib];
+    else {
+      set = default_setname;
+      if (ndefault_set >= 1)
+	set = default_set[1];
+    }
+    line = set ? (lib FS numbers[lib] FS set) : (lib FS numbers[lib]);
+    if (!(lib in lineorder) || order[lib] < lineorder[lib]) {
+      lineorder[lib] = order[lib];
+      lines[lib] = "DEFAULT" FS line;
+    }
   }
   for (c in lines) {
     print lines[c]
diff --git a/shlib-versions b/shlib-versions
index d34dea8..e05b248 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -1,72 +1,73 @@ 
 # This file (and shlib-versions files in sysdeps directories) defines
 # the shared library version numbers we will install.
 
-# The following lines list filename patterns matching canonical configurations,
-# and the associated versions to use for various libraries.  The entire
-# list is processed, with earlier entries taking precedence over later
-# entries.  So loose patterns at the end of the list can give defaults.
+# The following lines list the associated versions to use for various
+# libraries.  The entire list is processed, with earlier entries
+# taking precedence over later entries (and the files from sysdeps
+# directories coming before those from other subdirectories, which
+# come before this file).
 
 # 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
+# In the optional second 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.
 #
-# An entry with DEFAULT in the second column gives a default third column
-# to apply on matching configurations when the matching entry for a particular
-# library has no third column.  The defaults must precede the entries they
-# apply to.
+# An entry with DEFAULT in the first column gives a default second
+# column to apply when the matching entry for a particular library has
+# no second column.  The defaults must precede the entries they apply
+# to.
 
-# Configuration		Library=version		Earliest symbol set (optional)
-# -------------		---------------		------------------------------
+# Library=version		Earliest symbol set (optional)
+# ---------------		------------------------------
 
 # We use the ELF ABI standard name for the default.
-.*-.*-.*		ld=ld.so.1
+ld=ld.so.1
 
 # The -ldl interface (see <dlfcn.h>) is the same on all platforms.
-.*-.*-.*		libdl=2
+libdl=2
 
 # So far the -lutil interface is the same on all platforms, except for the
 # `struct utmp' format, which depends on libc.
-.*-.*-.*		libutil=1
+libutil=1
 
 # Version number 2 is used on other systems for the BIND 4.9.5 resolver
 # interface.
-.*-.*-.*		libresolv=2
+libresolv=2
 
 # Interface revision of nss_* modules.  This must match NSS_SHLIB_REVISION
 # in nss/nsswitch.h, which determines the library names used for service
 # names given in /etc/nsswitch.conf.
-.*-.*-.*		libnss_files=2
-.*-.*-.*		libnss_dns=2
-.*-.*-.*		libnss_compat=2
-.*-.*-.*		libnss_nis=2
-.*-.*-.*		libnss_nisplus=2
-.*-.*-.*		libnss_ldap=2
-.*-.*-.*		libnss_hesiod=2
-.*-.*-.*		libnss_db=2
+libnss_files=2
+libnss_dns=2
+libnss_compat=2
+libnss_nis=2
+libnss_nisplus=2
+libnss_ldap=2
+libnss_hesiod=2
+libnss_db=2
 
 # Tests for NSS.  They must have the same NSS_SHLIB_REVISION number as
 # the rest.
-.*-.*-.*		libnss_test1=2
+libnss_test1=2
 
 # Version for libnsl with YP and NIS+ functions.
-.*-.*-.*		libnsl=1
+libnsl=1
 
 # This defines the shared library version numbers we will install.
-.*-.*-.*		libcrypt=1
+libcrypt=1
 
 # The gross patch for programs assuming broken locale implementations.
-.*-.*-.*		libBrokenLocale=1
+libBrokenLocale=1
 
 # The real-time library from POSIX.1b.
-.*-.*-.*		librt=1
+librt=1
 
 # The asynchronous name lookup library.
-.*-.*-.*		libanl=1
+libanl=1
 
 # This defines the libgcc soname version this glibc is to load for
 # asynchronous cancellation to work correctly.
-.*-.*-.*		libgcc_s=1
+libgcc_s=1
diff --git a/sysdeps/hppa/shlib-versions b/sysdeps/hppa/shlib-versions
index ae3a3f1..34e9347 100644
--- a/sysdeps/hppa/shlib-versions
+++ b/sysdeps/hppa/shlib-versions
@@ -1 +1 @@ 
-hppa.*-.*-.*		libgcc_s=4
+libgcc_s=4
diff --git a/sysdeps/m68k/shlib-versions b/sysdeps/m68k/shlib-versions
index b65b00b..c8db251 100644
--- a/sysdeps/m68k/shlib-versions
+++ b/sysdeps/m68k/shlib-versions
@@ -1 +1 @@ 
-m68k-.*-linux.*		libgcc_s=2
+libgcc_s=2
diff --git a/sysdeps/mach/hurd/shlib-versions b/sysdeps/mach/hurd/shlib-versions
index f79c633..edbc301 100644
--- a/sysdeps/mach/hurd/shlib-versions
+++ b/sysdeps/mach/hurd/shlib-versions
@@ -1,12 +1,12 @@ 
-.*-.*-gnu-gnu.*		DEFAULT			GLIBC_2.2.6
+DEFAULT			GLIBC_2.2.6
 
-.*-.*-gnu-gnu.*		libm=6
+libm=6
 
 # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.
-.*-.*-gnu-gnu.*		libmachuser=1
+libmachuser=1
 
 # libhurduser.so.0.3 corresponds to hurd/*.defs as of 11 June 2002.
-.*-.*-gnu-gnu.*		libhurduser=0.3
+libhurduser=0.3
 
 # libc.so.0.3 is the first Hurd libc using libio.
-.*-.*-gnu-gnu.*		libc=0.3
+libc=0.3
diff --git a/sysdeps/unix/sysv/linux/aarch64/shlib-versions b/sysdeps/unix/sysv/linux/aarch64/shlib-versions
index 67f1911..e1768a7 100644
--- a/sysdeps/unix/sysv/linux/aarch64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/aarch64/shlib-versions
@@ -1,7 +1,7 @@ 
-aarch64.*-.*-linux.*	DEFAULT			GLIBC_2.17
+DEFAULT			GLIBC_2.17
 
 %ifdef HAVE_AARCH64_BE
-aarch64.*-.*-linux.*	ld=ld-linux-aarch64_be.so.1
+ld=ld-linux-aarch64_be.so.1
 %else
-aarch64.*-.*-linux.*	ld=ld-linux-aarch64.so.1
+ld=ld-linux-aarch64.so.1
 %endif
diff --git a/sysdeps/unix/sysv/linux/alpha/shlib-versions b/sysdeps/unix/sysv/linux/alpha/shlib-versions
index cd4b9af..cd913c2 100644
--- a/sysdeps/unix/sysv/linux/alpha/shlib-versions
+++ b/sysdeps/unix/sysv/linux/alpha/shlib-versions
@@ -1,14 +1,14 @@ 
-alpha.*-.*-linux.*	libm=6.1
-alpha.*-.*-linux.*	libc=6.1
+libm=6.1
+libc=6.1
 
-alpha.*-.*-linux.*	ld=ld-linux.so.2
+ld=ld-linux.so.2
 
-alpha.*-.*-linux.*	libdl=2.1
+libdl=2.1
 
-alpha.*-.*-linux.*	libutil=1.1
+libutil=1.1
 
-alpha.*-.*-linux.*	libresolv=2.1
+libresolv=2.1
 
-alpha.*-.*-linux.*	libnsl=1.1
-alpha.*-.*-linux.*	libcrypt=1.1
-alpha.*-.*-linux.*	libBrokenLocale=1.1
+libnsl=1.1
+libcrypt=1.1
+libBrokenLocale=1.1
diff --git a/sysdeps/unix/sysv/linux/arm/shlib-versions b/sysdeps/unix/sysv/linux/arm/shlib-versions
index 1ac597a..9b16953 100644
--- a/sysdeps/unix/sysv/linux/arm/shlib-versions
+++ b/sysdeps/unix/sysv/linux/arm/shlib-versions
@@ -1,9 +1,9 @@ 
-arm.*-.*-linux-gnueabi.*	DEFAULT			GLIBC_2.4
+DEFAULT			GLIBC_2.4
 
 %ifdef HAVE_ARM_PCS_VFP
 # The EABI-derived hard-float ABI uses a new dynamic linker.
-arm.*-.*-linux-gnueabi.*       ld=ld-linux-armhf.so.3
+ld=ld-linux-armhf.so.3
 %else
 # The EABI-derived soft-float ABI continues to use ld-linux.so.3.
-arm.*-.*-linux-gnueabi.*       ld=ld-linux.so.3
+ld=ld-linux.so.3
 %endif
diff --git a/sysdeps/unix/sysv/linux/hppa/shlib-versions b/sysdeps/unix/sysv/linux/hppa/shlib-versions
index ee46e4a..3a2d496 100644
--- a/sysdeps/unix/sysv/linux/hppa/shlib-versions
+++ b/sysdeps/unix/sysv/linux/hppa/shlib-versions
@@ -1,9 +1,9 @@ 
-hppa.*-.*-.*		libm=6			GLIBC_2.2
+libm=6			GLIBC_2.2
 
-hppa.*-.*-.*		libc=6			GLIBC_2.2
+libc=6			GLIBC_2.2
 
-hppa.*-.*-.*		ld=ld.so.1		GLIBC_2.2
+ld=ld.so.1		GLIBC_2.2
 
-hppa-.*-.*		libBrokenLocale=1	GLIBC_2.2
+libBrokenLocale=1	GLIBC_2.2
 
-hppa.*-.*-linux.*	libpthread=0		GLIBC_2.2
+libpthread=0		GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/ia64/shlib-versions b/sysdeps/unix/sysv/linux/ia64/shlib-versions
index c8e1482..37374c0 100644
--- a/sysdeps/unix/sysv/linux/ia64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/ia64/shlib-versions
@@ -1,8 +1,8 @@ 
-ia64-.*-linux.*		libc=6.1		GLIBC_2.2
-ia64-.*-linux.*		libm=6.1		GLIBC_2.2
+libc=6.1		GLIBC_2.2
+libm=6.1		GLIBC_2.2
 
-ia64-.*-linux.*		ld=ld-linux-ia64.so.2	GLIBC_2.2
+ld=ld-linux-ia64.so.2	GLIBC_2.2
 
-ia64-.*-.*		libBrokenLocale=1	GLIBC_2.2
+libBrokenLocale=1	GLIBC_2.2
 
-ia64.*-.*-linux.*	libpthread=0		GLIBC_2.2
+libpthread=0		GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions b/sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions
index f4c68b2..4309e4a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions
@@ -1 +1 @@ 
-m68k-.*-linux.*         DEFAULT                 GLIBC_2.4
+DEFAULT                 GLIBC_2.4
diff --git a/sysdeps/unix/sysv/linux/microblaze/shlib-versions b/sysdeps/unix/sysv/linux/microblaze/shlib-versions
index 6ec43db..eaf37a1 100644
--- a/sysdeps/unix/sysv/linux/microblaze/shlib-versions
+++ b/sysdeps/unix/sysv/linux/microblaze/shlib-versions
@@ -1 +1 @@ 
-microblaze.*-.*-linux.*	DEFAULT			GLIBC_2.18
+DEFAULT			GLIBC_2.18
diff --git a/sysdeps/unix/sysv/linux/mips/shlib-versions b/sysdeps/unix/sysv/linux/mips/shlib-versions
index d1414ed..c5bd7db 100644
--- a/sysdeps/unix/sysv/linux/mips/shlib-versions
+++ b/sysdeps/unix/sysv/linux/mips/shlib-versions
@@ -1,27 +1,27 @@ 
-mips.*-.*-linux.*	libm=6			GLIBC_2.0 GLIBC_2.2
+libm=6			GLIBC_2.0 GLIBC_2.2
 
 # Working mips versions were never released between 2.0 and 2.2.
-mips.*-.*-linux.*	libc=6			GLIBC_2.0 GLIBC_2.2
+libc=6			GLIBC_2.0 GLIBC_2.2
 
 %ifdef HAVE_MIPS_NAN2008
-mips.*-.*-linux.*	ld=ld-linux-mipsn8.so.1	GLIBC_2.0 GLIBC_2.2
+ld=ld-linux-mipsn8.so.1	GLIBC_2.0 GLIBC_2.2
 %else
-mips.*-.*-linux.*	ld=ld.so.1		GLIBC_2.0 GLIBC_2.2
+ld=ld.so.1		GLIBC_2.0 GLIBC_2.2
 %endif
-mips.*-.*-linux.*	libdl=2			GLIBC_2.0 GLIBC_2.2
+libdl=2			GLIBC_2.0 GLIBC_2.2
 
-mips.*-.*-linux.*	libresolv=2		GLIBC_2.0 GLIBC_2.2
+libresolv=2		GLIBC_2.0 GLIBC_2.2
 
-mips.*-.*-linux.*	libnss_files=2		GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_dns=2		GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_compat=2		GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_nis=2		GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_nisplus=2	GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_ldap=2		GLIBC_2.0 GLIBC_2.2
-mips.*-.*-linux.*	libnss_hesiod=2		GLIBC_2.0 GLIBC_2.2
+libnss_files=2		GLIBC_2.0 GLIBC_2.2
+libnss_dns=2		GLIBC_2.0 GLIBC_2.2
+libnss_compat=2		GLIBC_2.0 GLIBC_2.2
+libnss_nis=2		GLIBC_2.0 GLIBC_2.2
+libnss_nisplus=2	GLIBC_2.0 GLIBC_2.2
+libnss_ldap=2		GLIBC_2.0 GLIBC_2.2
+libnss_hesiod=2		GLIBC_2.0 GLIBC_2.2
 
-mips.*-.*-linux.*	libnsl=1		GLIBC_2.0 GLIBC_2.2
+libnsl=1		GLIBC_2.0 GLIBC_2.2
 
-mips.*-.*-linux.*	librt=1			GLIBC_2.0 GLIBC_2.2
+librt=1			GLIBC_2.0 GLIBC_2.2
 
-mips.*-.*-linux.*	libpthread=0		GLIBC_2.0 GLIBC_2.2
+libpthread=0		GLIBC_2.0 GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions
index 1febda4..0b83af1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions
@@ -1,7 +1,7 @@ 
 %ifdef HAVE_ELFV2_ABI
-powerpc.*le-.*-linux.*	DEFAULT			GLIBC_2.17
-powerpc.*le-.*-linux.*	libpthread=0		GLIBC_2.17
+DEFAULT			GLIBC_2.17
+libpthread=0		GLIBC_2.17
 %else
-powerpc64-.*-linux.*	DEFAULT			GLIBC_2.3
-powerpc64-.*-linux.*	libpthread=0		GLIBC_2.3
+DEFAULT			GLIBC_2.3
+libpthread=0		GLIBC_2.3
 %endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions b/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions
index cab0c0b..31edcfc 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions
@@ -1,2 +1,2 @@ 
-s390x-.*-linux.*        DEFAULT			GLIBC_2.2
-s390x-.*-linux.*	libpthread=0		GLIBC_2.2
+DEFAULT			GLIBC_2.2
+libpthread=0		GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/sh/shlib-versions b/sysdeps/unix/sysv/linux/sh/shlib-versions
index c376fe8..9333bbd 100644
--- a/sysdeps/unix/sysv/linux/sh/shlib-versions
+++ b/sysdeps/unix/sysv/linux/sh/shlib-versions
@@ -1,5 +1,5 @@ 
-sh.*-.*-linux.*		libm=6			GLIBC_2.2
-sh.*-.*-linux.*		libc=6			GLIBC_2.2
-sh.*-.*-linux.*		ld=ld-linux.so.2	GLIBC_2.2
-sh.*-.*-.*		libBrokenLocale=1	GLIBC_2.2
-sh.*-.*-linux.*		libpthread=0		GLIBC_2.2
+libm=6			GLIBC_2.2
+libc=6			GLIBC_2.2
+ld=ld-linux.so.2	GLIBC_2.2
+libBrokenLocale=1	GLIBC_2.2
+libpthread=0		GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/shlib-versions b/sysdeps/unix/sysv/linux/shlib-versions
index 2c06a8e..9160557 100644
--- a/sysdeps/unix/sysv/linux/shlib-versions
+++ b/sysdeps/unix/sysv/linux/shlib-versions
@@ -1,2 +1,2 @@ 
-.*-.*-linux.*		libm=6
-.*-.*-linux.*		libc=6
+libm=6
+libc=6
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions b/sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions
index 26ca1f4..ca5d15b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions
@@ -1 +1 @@ 
-sparc.*-.*-linux.*	ld=ld-linux.so.2
+ld=ld-linux.so.2
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions b/sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions
index 58d2c24..9333bbd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions
@@ -1,5 +1,5 @@ 
-sparc64.*-.*-linux.*	libm=6			GLIBC_2.2
-sparc64.*-.*-linux.*	libc=6			GLIBC_2.2
-sparc64.*-.*-linux.*	ld=ld-linux.so.2	GLIBC_2.2
-sparc64.*-.*-.*		libBrokenLocale=1	GLIBC_2.2
-sparc64.*-.*-linux.*	libpthread=0		GLIBC_2.2
+libm=6			GLIBC_2.2
+libc=6			GLIBC_2.2
+ld=ld-linux.so.2	GLIBC_2.2
+libBrokenLocale=1	GLIBC_2.2
+libpthread=0		GLIBC_2.2
diff --git a/sysdeps/unix/sysv/linux/tile/shlib-versions b/sysdeps/unix/sysv/linux/tile/shlib-versions
index f50868f..b4360d3 100644
--- a/sysdeps/unix/sysv/linux/tile/shlib-versions
+++ b/sysdeps/unix/sysv/linux/tile/shlib-versions
@@ -1,2 +1,2 @@ 
 # glibc 2.12 was released to customers; 2.15 was the first community version.
-tile.*-.*-linux-gnu	DEFAULT		GLIBC_2.12 GLIBC_2.15
+DEFAULT		GLIBC_2.12 GLIBC_2.15
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/shlib-versions b/sysdeps/unix/sysv/linux/x86_64/64/shlib-versions
index 90ea1b7..3d28722 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/shlib-versions
+++ b/sysdeps/unix/sysv/linux/x86_64/64/shlib-versions
@@ -1,4 +1,4 @@ 
-# Configuration		DEFAULT			Earliest symbol set
-# -------------		---------------		------------------------------
-x86_64-.*-linux.*	DEFAULT			GLIBC_2.2.5
-x86_64-.*-linux.*	libpthread=0		GLIBC_2.2.5
+# DEFAULT			Earliest symbol set
+# ---------------		------------------------------
+DEFAULT			GLIBC_2.2.5
+libpthread=0		GLIBC_2.2.5
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions b/sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions
index 8dd73e4..e4db8b9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions
@@ -1,4 +1,4 @@ 
-# Configuration		DEFAULT			Earliest symbol set
-# -------------		---------------		------------------------------
-x86_64-.*-linux.*	DEFAULT			GLIBC_2.16
-x86_64-.*-linux.*	libpthread=0		GLIBC_2.16
+# DEFAULT			Earliest symbol set
+# ---------------		------------------------------
+DEFAULT			GLIBC_2.16
+libpthread=0		GLIBC_2.16