This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

shorthand for shlib-versions


I noticed there is a lot of error-prone duplication in shlib-versions every
time a new platform is added.  This patch allows for special entries to set
the default symbol set list to be used when a library entry with no
specific list matches.  As a random example, my patch includes changes to
make s390x-.*-linux.* use the new feature instead of having many specific
entries.  Numerous other platforms could likewise use the feature to make
their specifications in shlib-versions more concise.  Of course, no
platform's specifications should actually be changed except by the port
maintainers. 


2001-04-08  Roland McGrath  <roland@frob.com>

	* Makeconfig ($(common-objpfx)soversions.i): Grok entries with DEFAULT
	in second column, to provide default values for third column.
	* shlib-versions: Add comments about using DEFAULT in second column.
	(s390x-.*-linux.*): Replace individual entries with a DEFAULT entry.

Index: Makeconfig
===================================================================
RCS file: /cvs/glibc/libc/Makeconfig,v
retrieving revision 1.254
diff -u -r1.254 Makeconfig
--- Makeconfig	2001/01/07 00:37:33	1.254
+++ Makeconfig	2001/04/09 02:21:47
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-1999,2000 Free Software Foundation, Inc.
+# Copyright (C) 1991-1999,2000,01 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -725,11 +725,15 @@
 	    test -n "$$version" && \
 	    test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \
 		       : "$$conf"` != 0 || continue; \
-	    lib=`echo $$version | sed 's/=.*$$//'`; \
-	    if eval test -z "\$${versioned_$${lib}}"; then \
-	      eval versioned_$${lib}=yes; \
-	      number=`echo $$version | sed "s/^.*=//"`; \
-	      echo $$lib $$number $$setname; \
+	    if test "x$$version" = xDEFAULT; then \
+	      default_setname="$$setname"; \
+	    else \
+	      lib=`echo $$version | sed 's/=.*$$//'`; \
+	      if eval test -z "\$${versioned_$${lib}}"; then \
+		eval versioned_$${lib}=yes; \
+		number=`echo $$version | sed "s/^.*=//"`; \
+		echo $$lib $$number $${setname:-$${default_setname}}; \
+	      fi; \
 	    fi; \
 	  done > $@T; exit 0
 	mv -f $@T $@
Index: shlib-versions
===================================================================
RCS file: /cvs/glibc/libc/shlib-versions,v
retrieving revision 1.57
diff -u -r1.57 shlib-versions
--- shlib-versions	2001/03/16 08:46:26	1.57
+++ shlib-versions	2001/04/09 02:21:47
@@ -12,7 +12,17 @@
 # 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.
 
+# Configuration		DEFAULT			Earliest symbol set
+# -------------		---------------		------------------------------
+
+s390x-.*-linux.*        DEFAULT			GLIBC_2.2
+
 # Configuration		Library=version		Earliest symbol set (optional)
 # -------------		---------------		------------------------------
 
@@ -23,7 +33,6 @@
 ia64-.*-linux.*		libm=6.1		GLIBC_2.2
 sh.*-.*-linux.*		libm=6			GLIBC_2.2
 hppa.*-.*-.*		libm=6			GLIBC_2.2
-s390x-.*-linux.*        libm=6			GLIBC_2.2
 .*-.*-linux.*		libm=6
 .*-.*-gnu-gnu.*		libm=6
 
@@ -35,7 +44,6 @@
 sh.*-.*-linux.*		libc=6			GLIBC_2.2
 sparc64-.*-linux.*	libc=6			GLIBC_2.2
 hppa.*-.*-.*		libc=6			GLIBC_2.2
-s390x-.*-linux.*	libc=6			GLIBC_2.2
 .*-.*-linux.*		libc=6
 
 # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.
@@ -44,11 +52,12 @@
 # libhurduser.so.0.0 corresponds to hurd/*.defs as of 7 May 1996.
 .*-.*-gnu-gnu.*		libhurduser=0.0
 
+%ifndef USE_IN_LIBIO
 # libc.so.0.2 is for the Hurd alpha release 0.2.
-%ifdef USE_IN_LIBIO /* experimental only! */
-.*-.*-gnu-gnu.*		libc=0.2.90.libio	GLIBC_2.2
-%else
 .*-.*-gnu-gnu.*		libc=0.2
+%else				/* experimental only! */
+# libc.so.0.3 is
+.*-.*-gnu-gnu.*		libc=0.2.91.libio	GLIBC_2.2.3
 %endif
 
 # The dynamic loader also requires different names.
@@ -61,20 +70,17 @@
 ia64-.*-linux.*		ld=ld-linux-ia64.so.2	GLIBC_2.2
 mips.*-.*-linux.*	ld=ld.so.1		GLIBC_2.0 GLIBC_2.2
 hppa.*-.*-.*		ld=ld.so.1		GLIBC_2.2
-s390x-.*-linux.*	ld=ld64.so.1		GLIBC_2.2
 # We use the ELF ABI standard name for the default.
 .*-.*-.*		ld=ld.so.1
 
 # The -ldl interface (see <dlfcn.h>) is the same on all platforms.
 alpha.*-.*-linux.*	libdl=2.1
 mips.*-.*-linux.*	libdl=2			GLIBC_2._2.2
-s390x-.*-linux.*        libdl=2			GLIBC_2.2
 .*-.*-.*		libdl=2
 
 # So far the -lutil interface is the same on all platforms, except for the
 # `struct utmp' format, which depends on libc.
 alpha.*-.*-linux.*	libutil=1.1
-s390x-.*-linux.*        libutil=1		GLIBC_2.2
 .*-.*-.*		libutil=1
 
 # Version number 2 is used on other systems for the BIND 4.9.5 resolver
@@ -93,13 +99,6 @@
 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
-s390x-.*-linux.*	libnss_files=2		GLIBC_2.2
-s390x-.*-linux.*	libnss_dns=2		GLIBC_2.2
-s390x-.*-linux.*	libnss_compat=2		GLIBC_2.2
-s390x-.*-linux.*	libnss_nis=2		GLIBC_2.2
-s390x-.*-linux.*	libnss_nisplus=2	GLIBC_2.2
-s390x-.*-linux.*	libnss_ldap=2		GLIBC_2.2
-s390x-.*-linux.*	libnss_hesiod=2		GLIBC_2.2
 .*-.*-.*		libnss_files=2
 .*-.*-.*		libnss_dns=2
 .*-.*-.*		libnss_compat=2
@@ -111,12 +110,10 @@
 # Version for libnsl with YP and NIS+ functions.
 alpha.*-.*-linux.*	libnsl=1.1
 mips.*-.*-linux.*	libnsl=1		GLIBC_2.0 GLIBC_2.2
-s390x-.*-linux.*	libnsl=1		GLIBC_2.2
 .*-.*-.*		libnsl=1
 
 # This defines the shared library version numbers we will install.
 alpha.*-.*-linux.*	libcrypt=1.1
-s390x-.*-linux.*	libcrypt=1		GLIBC_2.2
 .*-.*-.*		libcrypt=1
 
 # The gross patch for programs assuming broken locale implementations.
@@ -125,12 +122,10 @@
 sh.*-.*-.*		libBrokenLocale=1	GLIBC_2.2
 sparc64-.*-.*		libBrokenLocale=1	GLIBC_2.2
 hppa-.*-.*		libBrokenLocale=1	GLIBC_2.2
-s390x-.*-linux.*	libBrokenLocale=1	GLIBC_2.2
 .*-.*-.*		libBrokenLocale=1
 
 # The real-time library from POSIX.1b.
 mips.*-.*-linux.*	librt=1			GLIBC_2.0 GLIBC_2.2
-s390x-.*-linux.*	librt=1			GLIBC_2.2
 .*-.*-.*		librt=1
 
 # The asynchronous name lookup library.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]