aboutsummaryrefslogtreecommitdiffstats
path: root/chapter8/gcc.sh
diff options
context:
space:
mode:
authorWilliam Harrington <kb0iic@berzerkula.org>2021-04-12 12:49:29 -0500
committerWilliam Harrington <kb0iic@berzerkula.org>2021-04-12 12:49:29 -0500
commit99659c30e5369c3f02e286a4a6ec6fecd77f0416 (patch)
tree12110b15571365acae602ebd9c1348463a0d4710 /chapter8/gcc.sh
parent0e5288f8f3bee7276d561cde029ed492e2ea85e6 (diff)
parent13c6afd35cab1e3f4d96857d549e02cfd1e23acd (diff)
Merge branch 'chapter8'
Diffstat (limited to 'chapter8/gcc.sh')
-rw-r--r--chapter8/gcc.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/chapter8/gcc.sh b/chapter8/gcc.sh
new file mode 100644
index 0000000..7b4df3b
--- /dev/null
+++ b/chapter8/gcc.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+case $(uname -m) in
+ x86_64)
+ sed -e '/m64=/s/lib64/lib/' \
+ -i.orig gcc/config/i386/t-linux64
+ ;;
+esac
+
+mkdir -v build
+cd build || exit 1
+
+../configure --prefix=/usr \
+ LD=ld \
+ --enable-languages=c,c++ \
+ --disable-multilib \
+ --disable-bootstrap \
+ --with-system-zlib
+
+make
+
+make -j1 install
+rm -rf /usr/lib/gcc/"$(gcc -dumpmachine)"/"${VERSION}"/include-fixed/bits/
+
+chown -v -R root:root \
+ /usr/lib/gcc/*linux-gnu/"${VERSION}"/include{,-fixed}
+
+ln -sv ../usr/bin/cpp /lib
+
+ln -sfv ../../libexec/gcc/"$(gcc -dumpmachine)"/"${VERSION}"/liblto_plugin.so \
+ /usr/lib/bfd-plugins/
+
+echo 'int main(){}' > dummy.c
+cc dummy.c -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+
+grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
+grep -B4 '^ /usr/include' dummy.log
+grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+grep "/lib.*/libc.so.6 " dummy.log
+grep found dummy.log
+
+rm -v dummy.c a.out dummy.log
+
+mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib