Install shared objects under their ABI names
Previously, the installed objects were named like libc-2.33.so, and the ABI soname libc.so.6 was just a symbolic link. The Makefile targets to install these symbolic links are no longer needed after this, so they are removed with this commit. The more general $(make-link) command (which invokes scripts/rellns-sh) is retained because other symbolic links are still needed. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@rehdat.com>
This commit is contained in:
parent
6bf789d69e
commit
8208be389b
6
Makefile
6
Makefile
|
@ -109,12 +109,6 @@ elf/ldso_install:
|
||||||
# Ignore the error if we cannot update /etc/ld.so.cache.
|
# Ignore the error if we cannot update /etc/ld.so.cache.
|
||||||
ifeq (no,$(cross-compiling))
|
ifeq (no,$(cross-compiling))
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
install: install-symbolic-link
|
|
||||||
.PHONY: install-symbolic-link
|
|
||||||
install-symbolic-link: subdir_install
|
|
||||||
$(symbolic-link-prog) $(symbolic-link-list)
|
|
||||||
rm -f $(symbolic-link-list)
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C \
|
-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C \
|
||||||
$(elf-objpfx)ldconfig $(addprefix -r ,$(install_root)) \
|
$(elf-objpfx)ldconfig $(addprefix -r ,$(install_root)) \
|
||||||
|
|
45
Makerules
45
Makerules
|
@ -990,14 +990,12 @@ versioned := $(strip $(foreach so,$(install-lib.so),\
|
||||||
install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
|
install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
|
||||||
install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
|
install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
|
||||||
|
|
||||||
# For libraries whose soname have version numbers, we install three files:
|
# For libraries whose soname have version numbers, we install two files:
|
||||||
# $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
|
# $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
|
||||||
# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME, symlink
|
# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME
|
||||||
# $(inst_slibdir)/libfoo-X.Y.Z.so -- the real shared object file
|
|
||||||
install-lib-nosubdir: $(install-lib.so-unversioned:%=$(inst_slibdir)/%) \
|
install-lib-nosubdir: $(install-lib.so-unversioned:%=$(inst_slibdir)/%) \
|
||||||
$(foreach L,$(install-lib.so-versioned),\
|
$(foreach L,$(install-lib.so-versioned),\
|
||||||
$(inst_libdir)/$L \
|
$(inst_libdir)/$L \
|
||||||
$(inst_slibdir)/$(L:.so=)-$(version).so \
|
|
||||||
$(inst_slibdir)/$L$($L-version))
|
$(inst_slibdir)/$L$($L-version))
|
||||||
|
|
||||||
# Install all the unversioned shared libraries.
|
# Install all the unversioned shared libraries.
|
||||||
|
@ -1030,35 +1028,10 @@ ln -f $(objpfx)/$(@F) $@
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
ifeq (no,$(cross-compiling))
|
|
||||||
symbolic-link-prog := $(elf-objpfx)sln
|
|
||||||
symbolic-link-list := $(elf-objpfx)symlink.list
|
|
||||||
define make-shlib-link
|
|
||||||
echo `$(..)scripts/rellns-sh -p $< $@` $@ >> $(symbolic-link-list)
|
|
||||||
endef
|
|
||||||
else # cross-compiling
|
|
||||||
# We need a definition that can be used by elf/Makefile's install rules.
|
|
||||||
symbolic-link-prog = $(LN_S)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifndef make-shlib-link
|
|
||||||
define make-shlib-link
|
|
||||||
rm -f $@
|
|
||||||
$(LN_S) `$(..)scripts/rellns-sh -p $< $@` $@
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef libc.so-version
|
ifdef libc.so-version
|
||||||
# For a library specified to be version N, install three files:
|
$(inst_slibdir)/libc.so$(libc.so-version): $(common-objpfx)libc.so $(+force)
|
||||||
# libc.so -> libc.so.N (e.g. libc.so.6)
|
|
||||||
# libc.so.6 -> libc-VERSION.so (e.g. libc-1.10.so)
|
|
||||||
|
|
||||||
$(inst_slibdir)/libc.so$(libc.so-version): $(inst_slibdir)/libc-$(version).so \
|
|
||||||
$(+force)
|
|
||||||
$(make-shlib-link)
|
|
||||||
$(inst_slibdir)/libc-$(version).so: $(common-objpfx)libc.so $(+force)
|
|
||||||
$(do-install-program)
|
$(do-install-program)
|
||||||
|
|
||||||
install: $(inst_slibdir)/libc.so$(libc.so-version)
|
install: $(inst_slibdir)/libc.so$(libc.so-version)
|
||||||
|
|
||||||
# This fragment of linker script gives the OUTPUT_FORMAT statement
|
# This fragment of linker script gives the OUTPUT_FORMAT statement
|
||||||
|
@ -1126,15 +1099,7 @@ include $(o-iterator)
|
||||||
generated += $(foreach o,$(versioned),$o$($o-version))
|
generated += $(foreach o,$(versioned),$o$($o-version))
|
||||||
|
|
||||||
define o-iterator-doit
|
define o-iterator-doit
|
||||||
$(inst_slibdir)/$o$($o-version): $(inst_slibdir)/$(o:.so=)-$(version).so \
|
$(inst_slibdir)/$o$($o-version): $(objpfx)$o $(+force);
|
||||||
$(+force);
|
|
||||||
$$(make-shlib-link)
|
|
||||||
endef
|
|
||||||
object-suffixes-left := $(versioned)
|
|
||||||
include $(o-iterator)
|
|
||||||
|
|
||||||
define o-iterator-doit
|
|
||||||
$(inst_slibdir)/$(o:.so=)-$(version).so: $(objpfx)$o $(+force);
|
|
||||||
$$(do-install-program)
|
$$(do-install-program)
|
||||||
endef
|
endef
|
||||||
object-suffixes-left := $(versioned)
|
object-suffixes-left := $(versioned)
|
||||||
|
|
8
NEWS
8
NEWS
|
@ -74,6 +74,14 @@ Deprecated and removed features, and other changes affecting compatibility:
|
||||||
buggy kernel interfaces (for instance some CIFS version) that could still
|
buggy kernel interfaces (for instance some CIFS version) that could still
|
||||||
see spurious EINTR error when cancellation interrupts a blocking syscall.
|
see spurious EINTR error when cancellation interrupts a blocking syscall.
|
||||||
|
|
||||||
|
* Previously, glibc installed its various shared objects under versioned
|
||||||
|
file names such as libc-2.33.so. The ABI sonames (e.g., libc.so.6)
|
||||||
|
were provided as symbolic links. Starting with glibc 2.34, the shared
|
||||||
|
objects are installed under their ABI sonames directly, without
|
||||||
|
symbolic links. This increases compatibility with distribution
|
||||||
|
package managers that delete removed files late during the package
|
||||||
|
upgrade or downgrade process.
|
||||||
|
|
||||||
Changes to build and runtime requirements:
|
Changes to build and runtime requirements:
|
||||||
|
|
||||||
* On Linux, the shm_open, sem_open, and related functions now expect the
|
* On Linux, the shm_open, sem_open, and related functions now expect the
|
||||||
|
|
10
elf/Makefile
10
elf/Makefile
|
@ -630,20 +630,14 @@ $(objpfx)trusted-dirs.st: Makefile $(..)Makeconfig
|
||||||
CPPFLAGS-dl-load.c += -I$(objpfx). -I$(csu-objpfx).
|
CPPFLAGS-dl-load.c += -I$(objpfx). -I$(csu-objpfx).
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
$(inst_slibdir)/$(rtld-version-installed-name): $(objpfx)ld.so $(+force)
|
$(inst_rtlddir)/$(rtld-installed-name): $(objpfx)ld.so $(+force)
|
||||||
$(make-target-directory)
|
$(make-target-directory)
|
||||||
$(do-install-program)
|
$(do-install-program)
|
||||||
|
|
||||||
$(inst_rtlddir)/$(rtld-installed-name): \
|
|
||||||
$(inst_slibdir)/$(rtld-version-installed-name) \
|
|
||||||
$(inst_slibdir)/libc-$(version).so
|
|
||||||
$(make-target-directory)
|
|
||||||
$(make-shlib-link)
|
|
||||||
|
|
||||||
# Special target called by parent to install just the dynamic linker.
|
# Special target called by parent to install just the dynamic linker.
|
||||||
.PHONY: ldso_install
|
.PHONY: ldso_install
|
||||||
ldso_install: $(inst_rtlddir)/$(rtld-installed-name)
|
ldso_install: $(inst_rtlddir)/$(rtld-installed-name)
|
||||||
endif
|
endif # $(build-shared)
|
||||||
|
|
||||||
|
|
||||||
# Workarounds for ${exec_prefix} expansion in configure variables.
|
# Workarounds for ${exec_prefix} expansion in configure variables.
|
||||||
|
|
Loading…
Reference in a new issue