aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-09-07 23:44:34 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2019-09-07 23:44:34 +0100
commit04d7a13d933a0fb7266df332ddaa2a2d1141d7be (patch)
tree37caeec4204821c8e4026e4be96e41da9925de08
parentgcc-config: add einfo logging around library backup (diff)
downloadgcc-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--Makefile22
-rw-r--r--envd-gcc-backup3
-rw-r--r--gcc-backup/README41
-rwxr-xr-xgcc-config18
4 files changed, 4 insertions, 80 deletions
diff --git a/Makefile b/Makefile
index 087000b..2b3b235 100644
--- a/Makefile
+++ b/Makefile
@@ -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.*
diff --git a/gcc-config b/gcc-config
index b1cda70..b8f695f 100755
--- a/gcc-config
+++ b/gcc-config
@@ -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,