GHC build on risc-v (unregisterised) fails with undefined references to __atomic_exchange functions.
Summary
Using hadrian to build GHC on debian unstable on risc-v fails on undefined references to _atomic_exchange(1|2) functions. The output is:
| Remove file _build/stage1/utils/hpc/.dependencies.mk.bak
| Run Ghc CompileHs Stage1: utils/hsc2hs/src/UtilsCodegen.hs => _build/stage1/utils/hsc2hs/build/UtilsCodegen.o
| Run Ghc CompileHs Stage1: utils/hsc2hs/src/CrossCodegen.hs => _build/stage1/utils/hsc2hs/build/CrossCodegen.o
| Run Ghc LinkHs Stage1: _build/stage1/utils/runghc/build/Main.dyn_o => _build/stage1/bin/runghc
/usr/bin/ld.bfd: /data/debian/vcs/ghc/_build/stage1/lib/../lib/riscv64-linux-ghc-9.1.0.20201103/libHSghc-prim-0.7.0-ghc9.1.0.20201103.so: undefined reference to `__atomic_exchange_1'
/usr/bin/ld.bfd: /data/debian/vcs/ghc/_build/stage1/lib/../lib/riscv64-linux-ghc-9.1.0.20201103/libHSghc-prim-0.7.0-ghc9.1.0.20201103.so: undefined reference to `__atomic_exchange_2'
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)
Error when running Shake build system:
at action, called at src/Rules.hs:40:19 in main:Rules
at need, called at src/Rules.hs:62:5 in main:Rules
* Depends on: _build/stage1/bin/runghc
at cmd', called at src/Builder.hs:312:23 in main:Builder
at cmd, called at src/Builder.hs:408:8 in main:Builder
* Raised the exception:
Development.Shake.cmd, system command failed
Command line: _build/stage0/bin/ghc -Wall -hisuf dyn_hi -osuf dyn_o -hcsuf dyn_hc -fPIC -dynamic -hide-all-packages -no-user-package-db '-package-db _build/stage1/lib/package.conf.d' '-package-id base-4.16.0.0' '-package-id directory-1.3.6.1' '-package-id filepath-1.4.2.1' '-package-id process-1.6.10.0' '-package-id unix-2.7.2.2' -i -i/data/debian/vcs/ghc/_build/stage1/utils/runghc/build -i/data/debian/vcs/ghc/_build/stage1/utils/runghc/build/runghc/autogen -i/data/debian/vcs/ghc/utils/runghc -Iincludes -I_build/stage1/lib -I_build/stage1/utils/runghc/build -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/process-1.6.10.0/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/unix-2.7.2.2/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/time-1.9.3/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/bytestring-0.10.12.0/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/base-4.16.0.0/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/ghc-bignum-1.0/include -I/data/debian/vcs/ghc/_build/stage1/lib/riscv64-linux-ghc-9.1.0.20201103/rts-1.0/include -I_build/stage1/lib -optc-I_build/stage1/lib -optP-include -optP_build/stage1/utils/runghc/build/runghc/autogen/cabal_macros.h -outputdir _build/stage1/utils/runghc/build -dynamic -optl-Wl,-rpath,$ORIGIN/../lib/riscv64-linux-ghc-9.1.0.20201103 -optl-Wl,-rpath,$ORIGIN/../../../lib/riscv64-linux-ghc-9.1.0.20201103 -optl-Wl,-zorigin -no-auto-link-packages -rtsopts -Wnoncanonical-monad-instances -optc-Wno-error=inline -optP-Wno-nonportable-include-path _build/stage1/utils/runghc/build/Main.dyn_o -o _build/stage1/bin/runghc -O2 -H32m -XHaskell2010 -no-global-package-db -package-db=/data/debian/vcs/ghc/_build/stage1/lib/package.conf.d -ghcversion-file=/data/debian/vcs/ghc/_build/stage1/lib/ghcversion.h
Exit code: 1
Stderr and Stdout:
/usr/bin/ld.bfd: /data/debian/vcs/ghc/_build/stage1/lib/../lib/riscv64-linux-ghc-9.1.0.20201103/libHSghc-prim-0.7.0-ghc9.1.0.20201103.so: undefined reference to `__atomic_exchange_1'
/usr/bin/ld.bfd: /data/debian/vcs/ghc/_build/stage1/lib/../lib/riscv64-linux-ghc-9.1.0.20201103/libHSghc-prim-0.7.0-ghc9.1.0.20201103.so: undefined reference to `__atomic_exchange_2'
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)
Steps to reproduce
Get GHC HEAD as of November 4 source code and then:
Usual:
./configure
[...]
checking for GHC version date... inferred 9.1.0.20201103
checking for GHC Git commit id... inferred bff74de713dac3e62c3bb6f1946e0649549f2215
[...]
./hadrian/build
Environment
- GHC version used: 8.8.4
Optional:
- Operating System: Debian unstable (updated fully on November 4 2020)
- System Architecture: RISC-V