Remove configuration name patterns from shlib-versions

Message ID Pine.LNX.4.64.1409111633270.17850@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers Sept. 11, 2014, 4:36 p.m. UTC
  This patch, relative to a tree with
<https://sourceware.org/ml/libc-alpha/2014-09/msg00114.html> (pending
sparc testing),
<https://sourceware.org/ml/libc-alpha/2014-09/msg00129.html> and
<https://sourceware.org/ml/libc-alpha/2014-09/msg00151.html> (pending
powerpc64 testing) applied, removes the first column (patterns
matching configuration names) from shlib-versions, leaving
shlib-versions entry selection based purely on sysdeps directories.

An implication of this removal is that the default for any non-Linux
ports using NPTL will be the same SONAMEs for NPTL libraries as for
Linux (as those defaults, previously limited to .*-.*-linux.*, are
left in nptl/shlib-versions and nptl_db/shlib-versions).

Special host_os handling in configure.ac that was purely for
shlib-versions is removed.  (The host_os setting is still used for
libc-abis - see
<https://sourceware.org/ml/libc-alpha/2014-01/msg00375.html> regarding
that - but no entries there are affected by this change.)

Tested on x86_64 and x86 that the installed shared libraries are
unchanged by this patch.

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, 10:03 p.m. UTC | #1
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.

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.

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."


Thanks,
Roland
  

Patch

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..2b16cf1 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -1,72 +1,72 @@ 
 # 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.  So loose patterns at the end
+# of the list can give defaults.
 
 # 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