mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
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.
|
||||
ifeq (no,$(cross-compiling))
|
||||
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:
|
||||
-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C \
|
||||
$(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-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_slibdir)/libfoo.so.NN -- for loading by SONAME, symlink
|
||||
# $(inst_slibdir)/libfoo-X.Y.Z.so -- the real shared object file
|
||||
# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME
|
||||
install-lib-nosubdir: $(install-lib.so-unversioned:%=$(inst_slibdir)/%) \
|
||||
$(foreach L,$(install-lib.so-versioned),\
|
||||
$(inst_libdir)/$L \
|
||||
$(inst_slibdir)/$(L:.so=)-$(version).so \
|
||||
$(inst_slibdir)/$L$($L-version))
|
||||
|
||||
# Install all the unversioned shared libraries.
|
||||
@ -1030,35 +1028,10 @@ ln -f $(objpfx)/$(@F) $@
|
||||
endef
|
||||
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
|
||||
# For a library specified to be version N, install three files:
|
||||
# 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)
|
||||
$(inst_slibdir)/libc.so$(libc.so-version): $(common-objpfx)libc.so $(+force)
|
||||
$(do-install-program)
|
||||
|
||||
install: $(inst_slibdir)/libc.so$(libc.so-version)
|
||||
|
||||
# This fragment of linker script gives the OUTPUT_FORMAT statement
|
||||
@ -1126,15 +1099,7 @@ include $(o-iterator)
|
||||
generated += $(foreach o,$(versioned),$o$($o-version))
|
||||
|
||||
define o-iterator-doit
|
||||
$(inst_slibdir)/$o$($o-version): $(inst_slibdir)/$(o:.so=)-$(version).so \
|
||||
$(+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);
|
||||
$(inst_slibdir)/$o$($o-version): $(objpfx)$o $(+force);
|
||||
$$(do-install-program)
|
||||
endef
|
||||
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
|
||||
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:
|
||||
|
||||
* 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).
|
||||
|
||||
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)
|
||||
$(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.
|
||||
.PHONY: ldso_install
|
||||
ldso_install: $(inst_rtlddir)/$(rtld-installed-name)
|
||||
endif
|
||||
endif # $(build-shared)
|
||||
|
||||
|
||||
# Workarounds for ${exec_prefix} expansion in configure variables.
|
||||
|
Loading…
Reference in New Issue
Block a user