Open
Description
Your environment
Which OS do you use? Alpine Linux 3.22.0
Which version of LLVM do you use and how do you install it? Version 20. Using apk
.
Preparation
git clone https://github.com/benz0li/ghc-musl.git
cd ghc-musl
git checkout 361466df797552946aeece4d4e0d618203821b75
Build GHC musl
docker build \
--progress plain \
--target test \
-t ghc-musl:9.10.2 \
-f dockerfiles/9.10.2.Dockerfile .
Expected behaviour
Build succeeds. Test (static linking) succeeds.
Actual behaviour
Build succeeds. Test (static linking) fails.
Cross references:
- [lld] Not creating fully statically linked binaries on Alpine Linux #137510 (comment)
ld.lld
(the LLVM linker) is missing in the images benz0li/ghc-musl#13 (comment)
Output (excerpt):
#17 [test 1/4] WORKDIR /usr/local/src
#17 DONE 0.0s
#18 [test 2/4] COPY --from=ghc-stage2 /root/.local/bin/cabal /usr/local/bin/cabal
#18 DONE 0.5s
#19 [test 3/4] COPY Main.hs Main.hs
#19 DONE 0.0s
#20 [test 4/4] RUN ghc -static -optl-pthread -optl-static Main.hs && file Main && ./Main && mkdir cabal-test && cd cabal-test && cabal update && cabal init -n --is-executable -p tester -l MIT && cabal run
#20 0.249 [1 of 2] Compiling Main ( Main.hs, Main.o )
#20 0.333 [2 of 2] Linking Main
#20 0.677 ld.lld: error: undefined symbol: __gmpn_add_1
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzuaddzu1_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzuaddzu1_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzuaddzuword_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 1 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_sub_1
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzusubzu1_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzusubzu1_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzusubzuword_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 1 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_add
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzuadd_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzuadd_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzuadd_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 2 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_sub
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzusub_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzusub_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzusub_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 2 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_mul
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzumul_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzumul_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzumul_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 1 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_cmp
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzucmp_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzucompare_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by BigNat.o:(ghczmbignum_GHCziNumziBigNat_bigNatEqzh_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 27 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_tdiv_qr
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzutdivzuqr_slow$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzutdivzuqr_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzuquotrem_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 5 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_mod_1
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_czumpnzumodzu1_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by GMP.o:(ghczmbignum_GHCziNumziBackendziGMP_bignatzuremzuword_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by BigNat.o:(ghczmbignum_GHCziNumziBigNat_bigNatRemWordzh_info$def) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 5 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpz_get_d
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_get_d) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpz_get_d_2exp
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_get_d) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpn_gcd_1
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_gcd_word) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_gcd_1) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpz_init
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_gcd) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_gcdext) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced by gmp_wrappers.o:(integer_gmp_gcdext) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.677 >>> referenced 8 more times
#20 0.677
#20 0.677 ld.lld: error: undefined symbol: __gmpz_gcd
#20 0.678 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_gcd) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.678
#20 0.678 ld.lld: error: undefined symbol: __gmpz_clear
#20 0.678 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_gcd) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.678 >>> referenced by gmp_wrappers.o:(integer_gmp_gcdext) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_gcdext) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679 >>> referenced 8 more times
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_gcdext
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_gcdext) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_sizeinbase
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_sizeinbase) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_export
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_mpn_export) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_probab_prime_p
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_test_prime) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_nextprime
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_next_prime) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_next_prime1) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: undefined symbol: __gmpz_powm
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_powm) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679 >>> referenced by gmp_wrappers.o:(integer_gmp_powm1) in archive /usr/local/lib/ghc-9.10.2/lib/../lib/aarch64-linux-ghc-9.10.2/ghc-bignum-1.3-inplace/libHSghc-bignum-1.3-inplace.a
#20 0.679
#20 0.679 ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
#20 0.682 collect2: error: ld returned 1 exit status
#20 0.683 ghc-9.10.2: `gcc' failed in phase `Linker'. (Exit code: 1)
#20 0.683 HasCallStack backtrace:
#20 0.683 collectBacktraces, called at libraries/ghc-internal/src/GHC/Internal/Exception.hs:169:13 in ghc-internal:GHC.Internal.Exception
#20 0.683 toExceptionWithBacktrace, called at libraries/ghc-internal/src/GHC/Internal/IO.hs:260:11 in ghc-internal:GHC.Internal.IO
#20 0.683 throwIO, called at libraries/exceptions/src/Control/Monad/Catch.hs:308:12 in exceptions-0.10.9-inplace:Control.Monad.Catch
#20 0.683 throwM, called at libraries/exceptions/src/Control/Monad/Catch.hs:797:84 in exceptions-0.10.9-inplace:Control.Monad.Catch
#20 0.683 onException, called at compiler/GHC/Driver/Make.hs:2983:23 in ghc-9.10.2-inplace:GHC.Driver.Make
#20 0.683
#20 0.683
#20 ERROR: process "/bin/sh -c ghc -static -optl-pthread -optl-static Main.hs && file Main && ./Main && mkdir cabal-test && cd cabal-test && cabal update && cabal init -n --is-executable -p tester -l MIT && cabal run" did not complete successfully: exit code: 1