diff options
author | 2019-09-07 23:44:34 +0100 | |
---|---|---|
committer | 2019-09-07 23:44:34 +0100 | |
commit | 04d7a13d933a0fb7266df332ddaa2a2d1141d7be (patch) | |
tree | 37caeec4204821c8e4026e4be96e41da9925de08 | |
parent | gcc-config: add einfo logging around library backup (diff) | |
download | gcc-config-04d7a13d933a0fb7266df332ddaa2a2d1141d7be.tar.gz gcc-config-04d7a13d933a0fb7266df332ddaa2a2d1141d7be.tar.bz2 gcc-config-04d7a13d933a0fb7266df332ddaa2a2d1141d7be.zip |
Revert "gcc-config: store gcc backup into /lib/gcc-backup, not /lib"
This reverts commit 44570a44be60a8fc33bd05089047c1f2980b3047.
Unfortunately ld.so does has static set of fallback paths
when it fails to lookup shared library from ld.so.cache:
those are /lib64 and /usr/lib64 on amd64.
Let's revert the change and jkeep relying on /lib64 for now.
Bug: https://bugs.gentoo.org/667020
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-rw-r--r-- | Makefile | 22 | ||||
-rw-r--r-- | envd-gcc-backup | 3 | ||||
-rw-r--r-- | gcc-backup/README | 41 | ||||
-rwxr-xr-x | gcc-config | 18 |
4 files changed, 4 insertions, 80 deletions
@@ -3,7 +3,6 @@ EPREFIX ?= PN = gcc-config PV = git P = $(PN)-$(PV) -BACKUPDIR = gcc-backup PREFIX = $(EPREFIX)/usr BINDIR = $(PREFIX)/bin @@ -12,18 +11,15 @@ ESELECTDIR = $(PREFIX)/share/eselect/modules SUBLIBDIR = lib LIBDIR = $(PREFIX)/$(SUBLIBDIR) -LIBGCC_BACKUPDIR = $(EPREFIX)/$(SUBLIBDIR)/$(BACKUPDIR) - -ENVD = $(EPREFIX)/etc/env.d MKDIR_P = mkdir -p -m 755 INSTALL_EXE = install -m 755 INSTALL_DATA = install -m 644 -all: .gcc-config .envd-gcc-backup +all: .gcc-config clean: - rm -f .gcc-config .envd-gcc-backup + rm -f .gcc-config .gcc-config: gcc-config sed \ @@ -31,26 +27,14 @@ clean: -e 's:@GENTOO_EPREFIX@:$(EPREFIX):g' \ -e 's:@GENTOO_LIBDIR@:$(SUBLIBDIR):g' \ -e 's:@PV@:$(PV):g' \ - -e 's:@GENTOO_GCC_BACKUP_DIR@:$(BACKUPDIR):g' \ $< > $@ chmod a+rx $@ -.envd-gcc-backup: envd-gcc-backup - sed \ - -e 's:@LIBGCC_BACKUPDIR@:$(LIBGCC_BACKUPDIR):g' \ - $< > $@ - install: all - $(MKDIR_P) $(DESTDIR)$(BINDIR) + $(MKDIR_P) $(DESTDIR)$(BINDIR) $(DESTDIR)$(ESELECTDIR) $(DESTDIR)$(DOCDIR) $(INSTALL_EXE) .gcc-config $(DESTDIR)$(BINDIR)/gcc-config - $(MKDIR_P) $(DESTDIR)$(ESELECTDIR) $(INSTALL_DATA) gcc.eselect $(DESTDIR)$(ESELECTDIR) - $(MKDIR_P) $(DESTDIR)$(DOCDIR) $(INSTALL_DATA) README $(DESTDIR)$(DOCDIR) - $(MKDIR_P) $(DESTDIR)$(LIBGCC_BACKUPDIR) - $(INSTALL_DATA) gcc-backup/README $(DESTDIR)$(LIBGCC_BACKUPDIR) - $(MKDIR_P) $(DESTDIR)$(ENVD) - $(INSTALL_DATA) .envd-gcc-backup $(DESTDIR)$(ENVD)/99gcc-backup test check: .gcc-config cd tests && ./run_tests diff --git a/envd-gcc-backup b/envd-gcc-backup deleted file mode 100644 index 4367b62..0000000 --- a/envd-gcc-backup +++ /dev/null @@ -1,3 +0,0 @@ -# A fallback for libgcc_s.so.* and dependencies. -# See @LIBGCC_BACKUPDIR@/README for details -LDPATH="@LIBGCC_BACKUPDIR@" diff --git a/gcc-backup/README b/gcc-backup/README deleted file mode 100644 index fdac223..0000000 --- a/gcc-backup/README +++ /dev/null @@ -1,41 +0,0 @@ -What is gcc-backup -================== - -gcc-backup is a directory to backup critical runtime -libraries used by gcc to link in code too big to inline it -from code generator. - -See gcc/doc/libgcc.texi doc in gcc source tree. - -gcc-config is responsible to back up libgcc_s.so.* and it's -runtime dependencies. - -Which systems needed this backup -================================ - -During normal system operation these libraries should not be -needed (unless gcc installation is somehow completely broken). - -The main use case for libgcc-backup is booting of a system -with the following properties: -- '/usr' mount is separate from '/' mount -- AND binaries in /bin (say, /bin/bash) are executed before - /usr is mounted - -Which systems link libgcc_s.so in -================================= - -By default gcc attempts to link libgcc_s.so in into every -binary and shared library. If code generator happens to -generate the code that does not refer libgcc_s.so then --Wl,--as-needed linker option omits the dependency. - -Thus any system might have libgcc_s.so linked into any binary -or shared library. - -What goes into this directory -============================= - -- libgcc_s.so.* itself: gcc driver attempts to link it in as-is -- libunwind.so.*: ia64-*-linux only, a runtime dependency of - libgcc_so.so.* @@ -42,9 +42,6 @@ PV="@PV@" GENTOO_LIBDIR="@GENTOO_LIBDIR@" [[ ${GENTOO_LIBDIR} == @*@ ]] && GENTOO_LIBDIR="lib" -GENTOO_GCC_BACKUP_DIR="@GENTOO_GCC_BACKUP_DIR@" -[[ ${GENTOO_GCC_BACKUP_DIR} == @*@ ]] && GENTOO_GCC_BACKUP_DIR="gcc-backup" - usage() { cat <<-EOF Usage: gcc-config [options] [CC Profile] @@ -319,25 +316,12 @@ handle_split_usr() { if is_same_mountpoint "${EROOT}/lib" "${ROOT}/${LDPATH}" ; then local lib old_libs=0 saved_nullglob=$(shopt -p nullglob) shopt -s nullglob - - # We relied on these copies until Sept 2019. - # Can be removed in 2021. for lib in "${EROOT}"/lib*/libgcc_s{.so*,*dylib} "${EROOT}"/lib*/libunwind.so.7* ; do # If we previously had stuff in /, make sure ldconfig gets re-run. einfo "Removing '${lib}'" rm -f "${lib}" old_libs=1 done - - for lib in \ - "${EROOT}"/lib*/"${GENTOO_GCC_BACKUP_DIR}"/libgcc_s.so.* \ - "${EROOT}"/lib*/"${GENTOO_GCC_BACKUP_DIR}"/libunwind.so.* ; do - # If we previously had stuff in /, make sure ldconfig gets re-run. - einfo "Removing '${lib}'" - rm -f "${lib}" - old_libs=1 - done - ${saved_nullglob} return ${old_libs} fi @@ -345,7 +329,7 @@ handle_split_usr() { # Only bother with this stuff for the native ABI. We assume the user # doesn't have critical binaries for non-native ABIs which is fair. local gcclib - local libdir="${EROOT}/${GENTOO_LIBDIR}/${GENTOO_GCC_BACKUP_DIR}" + local libdir="${EROOT}${GENTOO_LIBDIR}" mkdir -p "${libdir}"/.gcc.config.new || return 0 # !?!?! for gcclib in gcc_s unwind ; do # This assumes that we always have the .so symlink, |