Recover GCC on Gentoo

Author Artem Butusov · Published on December 24th, 2017

Why?

Gentoo could became completely unusable if for some reason build chain is broken.

If you see “Segmentation fault” from “gcc” then probably replacing whole GCC by the version provided in Stage 3 could be a good fix.

You could also use this method to install binary version of other packages, like binutils, libtool, glibc etc…

Download and extract GCC

mkdir ~/gentoo
cd ~/gentoo
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64-hardened/stage3-amd64-hardened-*.tar.bz2
tar xvpf stage3-*.tar.bz2
chroot ~/gentoo /bin/bash
quickpkg sys-devel/gcc
exit

Install binary GCC

mkdir -p /usr/portage/packages/sys-devel
cp -v ~/gentoo/usr/portage/packages/sys-devel/gcc-*.tbz2 /usr/portage/packages/sys-devel
emerge gcc -1 --usepkgonly

Cleanup

cd ~
rm /usr/portage/packages/sys-devel/gcc-*.tbz2
rm -rf ~/gentoo

Switch to new GCC

gcc-config -l
 [1] x86_64-pc-linux-gnu-4.9.4 *
 [2] x86_64-pc-linux-gnu-4.9.4-hardenednopie
 [3] x86_64-pc-linux-gnu-4.9.4-hardenednopiessp
 [4] x86_64-pc-linux-gnu-4.9.4-hardenednossp
 [5] x86_64-pc-linux-gnu-4.9.4-vanilla
 [6] x86_64-pc-linux-gnu-5.4.0
 [7] x86_64-pc-linux-gnu-5.4.0-hardenednopie
 [8] x86_64-pc-linux-gnu-5.4.0-hardenednopiessp
 [9] x86_64-pc-linux-gnu-5.4.0-hardenednossp
 [10] x86_64-pc-linux-gnu-5.4.0-vanilla

gcc-config x86_64-pc-linux-gnu-5.4.0
source /etc/profile

Rebuild other toolchain packages

General recommendation after gcc update is to rebuild also:

emerge -1 sys-devel/libtool
emerge -1 sys-devel/binutils
emerge -1 sys-libs/glibc