Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Remove configuration name patterns from shlib-versions.
This patch 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.

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

libidn/ChangeLog:
	* shlib-versions: Remove first column with configuration names.
  • Loading branch information
Joseph Myers committed Sep 12, 2014
1 parent 73a3911 commit ba90e05
Show file tree
Hide file tree
Showing 30 changed files with 169 additions and 181 deletions.
30 changes: 30 additions & 0 deletions ChangeLog
@@ -1,5 +1,35 @@
2014-09-12 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.
* 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.

* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
(HAVE_ELFV2_ABI): AC_DEFINE in ELFv2 case.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure:
Expand Down
3 changes: 0 additions & 3 deletions Makeconfig
Expand Up @@ -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
Expand Down
13 changes: 0 additions & 13 deletions configure
Expand Up @@ -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.
Expand Down
13 changes: 0 additions & 13 deletions configure.ac
Expand Up @@ -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.
Expand Down
4 changes: 4 additions & 0 deletions libidn/ChangeLog
@@ -1,3 +1,7 @@
2014-09-12 Joseph Myers <joseph@codesourcery.com>

* shlib-versions: Remove first column with configuration names.

2014-02-26 Joseph Myers <joseph@codesourcery.com>

* Makefile: Include Makeconfig immediately after defining subdir.
Expand Down
2 changes: 1 addition & 1 deletion libidn/shlib-versions
@@ -1 +1 @@
.*-.*-.* libcidn=1
libcidn=1
2 changes: 1 addition & 1 deletion nptl/shlib-versions
@@ -1 +1 @@
.*-.*-linux.* libpthread=0
libpthread=0
2 changes: 1 addition & 1 deletion nptl_db/shlib-versions
@@ -1,2 +1,2 @@
# The thread debug library
.*-.*-linux.* libthread_db=1
libthread_db=1
64 changes: 23 additions & 41 deletions 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]
Expand Down
61 changes: 31 additions & 30 deletions 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
2 changes: 1 addition & 1 deletion sysdeps/hppa/shlib-versions
@@ -1 +1 @@
hppa.*-.*-.* libgcc_s=4
libgcc_s=4
2 changes: 1 addition & 1 deletion sysdeps/m68k/shlib-versions
@@ -1 +1 @@
m68k-.*-linux.* libgcc_s=2
libgcc_s=2
10 changes: 5 additions & 5 deletions 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
6 changes: 3 additions & 3 deletions 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
18 changes: 9 additions & 9 deletions 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
6 changes: 3 additions & 3 deletions 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
10 changes: 5 additions & 5 deletions 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
10 changes: 5 additions & 5 deletions 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
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions
@@ -1 +1 @@
m68k-.*-linux.* DEFAULT GLIBC_2.4
DEFAULT GLIBC_2.4
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/microblaze/shlib-versions
@@ -1 +1 @@
microblaze.*-.*-linux.* DEFAULT GLIBC_2.18
DEFAULT GLIBC_2.18

0 comments on commit ba90e05

Please sign in to comment.