Hello, On current ‘master’ GCC fails to cross build:
--8<---------------cut here---------------start------------->8--- $ guix build -e '(@ (gnu packages gcc) gcc)' --target=arm-linux-gnueabihf --no-grafts --log-file https://ci.guix.gnu.org/log/85q2g7xyfrqyzy1kc30kzw5y58c4i1ah-gcc-7.4.0 $ guix describe Generacio 137 Mar 31 2020 09:13:55 (nuna) guix 011f941 repository URL: https://git.savannah.gnu.org/git/guix.git branch: master commit: 011f9412795c141ea05fdfa3096ab252252d7080 --8<---------------cut here---------------end--------------->8--- The log reads (slightly edited): --8<---------------cut here---------------start------------->8--- checking for -rdynamic.../tmp/guix-build-gcc-7.4.0.drv-0/gcc-7.4.0/libcc1/configure: line 10735: -T: command not found no configure: error: Building GCC with plugin support requires a host that supports -fPIC, -shared, -ldl and -rdynamic. --8<---------------cut here---------------end--------------->8--- That’s from libcc1/configure. ‘-rdynamic’ is wrongfully determined to not be working. This is because gcc-plugin.m4 uses this: if test x$build = x$host; then export_sym_check="objdump${exeext} -T" elif test x$host = x$target; then export_sym_check="$gcc_cv_objdump -T" # <--- here else export_sym_check= fi and for some reason $gcc_cv_objdump is empty. Its value comes from the top-level configure.ac: gcc_cv_objdump="$OBJDUMP_FOR_TARGET" This would need a fix that does not apply to the cross-GCC, but here we reach another problem: in gcc.scm we don’t distinguish between a cross-compiler and a cross-compiled compiler because we just look at ‘%current-target-system’. Thanks, Ludo’.
