aboutsummaryrefslogtreecommitdiffstats
path: root/chapter8/gcc.sh
diff options
context:
space:
mode:
authorWilliam Harrington <kb0iic@berzerkula.org>2021-04-06 14:09:59 -0500
committerWilliam Harrington <kb0iic@berzerkula.org>2021-04-06 14:09:59 -0500
commitaf28b78b8e659f995b39a5dde2ce2cef0da9fbe0 (patch)
treea80d4cfef7713f7aa26137c0da553358af4cd7b2 /chapter8/gcc.sh
parent783a4c48e04e81783848f0cb0f757f6a836d7f6e (diff)
Add chapter8 script commands.
Diffstat (limited to 'chapter8/gcc.sh')
-rw-r--r--chapter8/gcc.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/chapter8/gcc.sh b/chapter8/gcc.sh
index 7a693aa..7b4df3b 100644
--- a/chapter8/gcc.sh
+++ b/chapter8/gcc.sh
@@ -1,3 +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