Successfully identified regression in *glibc* in CI configuration 
tcwg_bmk_gnu_tx1/gnu-master-aarch64-spec2k6-O2_LTO.  So far, this commit has 
regressed CI configurations:
 - tcwg_bmk_gnu_tx1/gnu-master-aarch64-spec2k6-O2_LTO

Culprit:
<cut>
commit 8208be389bce84be0e1c35a3daa0c3467418f921
Author: Florian Weimer <fwei...@redhat.com>
Date:   Mon Jun 28 08:33:57 2021 +0200

    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 <car...@redhat.com>
    Tested-by: Carlos O'Donell <car...@rehdat.com>
</cut>

Results regressed to (for first_bad == 8208be389bce84be0e1c35a3daa0c3467418f921)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer:
-8
# build_abe linux:
-7
# build_abe glibc:
-6
# build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer:
-5
# true:
0
# benchmark -O2_LTO -- 
artifacts/build-8208be389bce84be0e1c35a3daa0c3467418f921/results_id:
1
# 434.zeusmp,zeusmp_base.default                                regressed by 
7549591
# 435.gromacs,gromacs_base.default                              regressed by 
10863956
# 447.dealII,dealII_base.default                                regressed by 
12999253
# 454.calculix,calculix_base.default                            regressed by 
3929138
# 465.tonto,tonto_base.default                                  regressed by 
12056000
# 459.GemsFDTD,GemsFDTD_base.default                            regressed by 
7978538
# 410.bwaves,bwaves_base.default                                regressed by 
8373106
# 416.gamess,gamess_base.default                                regressed by 
4372732
# 481.wrf,wrf_base.default                                      regressed by 
8973237
# 436.cactusADM,cactusADM_base.default                          regressed by 
4181826
# 437.leslie3d,leslie3d_base.default                            regressed by 
7255644

from (for last_good == 6bf789d69e6be48419094ca98f064e00297a27d5)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer:
-8
# build_abe linux:
-7
# build_abe glibc:
-6
# build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer:
-5
# true:
0
# benchmark -O2_LTO -- 
artifacts/build-6bf789d69e6be48419094ca98f064e00297a27d5/results_id:
1

Artifacts of last_good build: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/build-6bf789d69e6be48419094ca98f064e00297a27d5/
Results ID of last_good: 
tx1_64/tcwg_bmk_gnu_tx1/bisect-gnu-master-aarch64-spec2k6-O2_LTO/976
Artifacts of first_bad build: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/build-8208be389bce84be0e1c35a3daa0c3467418f921/
Results ID of first_bad: 
tx1_64/tcwg_bmk_gnu_tx1/bisect-gnu-master-aarch64-spec2k6-O2_LTO/988
Build top page/logs: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/

Configuration details:


Reproduce builds:
<cut>
mkdir investigate-glibc-8208be389bce84be0e1c35a3daa0c3467418f921
cd investigate-glibc-8208be389bce84be0e1c35a3daa0c3467418f921

git clone https://git.linaro.org/toolchain/jenkins-scripts

mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/manifests/build-baseline.sh
 --fail
curl -o artifacts/manifests/build-parameters.sh 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/manifests/build-parameters.sh
 --fail
curl -o artifacts/test.sh 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/test.sh
 --fail
chmod +x artifacts/test.sh

# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_bmk-build.sh @@ artifacts/manifests/build-baseline.sh

cd glibc

# Reproduce first_bad build
git checkout --detach 8208be389bce84be0e1c35a3daa0c3467418f921
../artifacts/test.sh

# Reproduce last_good build
git checkout --detach 6bf789d69e6be48419094ca98f064e00297a27d5
../artifacts/test.sh

cd ..
</cut>

History of pending regressions and results: 
https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_bmk_gnu_tx1/gnu-master-aarch64-spec2k6-O2_LTO

Artifacts: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/artifact/artifacts/
Build log: 
https://ci.linaro.org/job/tcwg_bmk_ci_gnu-bisect-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/19/consoleText

Full commit (up to 1000 lines):
<cut>
commit 8208be389bce84be0e1c35a3daa0c3467418f921
Author: Florian Weimer <fwei...@redhat.com>
Date:   Mon Jun 28 08:33:57 2021 +0200

    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 <car...@redhat.com>
    Tested-by: Carlos O'Donell <car...@rehdat.com>
---
 Makefile     |  6 ------
 Makerules    | 45 +++++----------------------------------------
 NEWS         |  8 ++++++++
 elf/Makefile | 10 ++--------
 4 files changed, 15 insertions(+), 54 deletions(-)

diff --git a/Makefile b/Makefile
index 0157b53cb8..f98d5a9e67 100644
--- a/Makefile
+++ b/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)) \
diff --git a/Makerules b/Makerules
index f2587907fb..596fa68376 100644
--- a/Makerules
+++ b/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)
diff --git a/NEWS b/NEWS
index b24ebf9898..37ba4334c6 100644
--- a/NEWS
+++ b/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
diff --git a/elf/Makefile b/elf/Makefile
index 62f7e8a225..cdbcc14087 100644
--- a/elf/Makefile
+++ b/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.
</cut>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to