Linking fails on Apple M1, macOS 12.3.1
Summary
I can't link binaries with GHC 9.2.2 on M1 macOS. The error is: clang: error: invalid linker name in argument '-fuse-ld=lld'.
Steps to reproduce
% ghc-9.2.2 -v Main.hs
Glasgow Haskell Compiler, Version 9.2.2, stage 2 booted by GHC version 8.10.7
*** initializing unit database:
Using binary package database: /Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/package.conf.d/package.cache
package flags []
loading package database /Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.8.0
wired-in package ghc-bignum mapped to ghc-bignum-1.2
wired-in package base mapped to base-4.16.1.0
wired-in package rts mapped to rts-1.0.2
wired-in package template-haskell mapped to template-haskell-2.18.0.0
wired-in package ghc mapped to ghc-9.2.2
!!! initializing unit database: finished in 4.57 milliseconds, allocated 5.765 megabytes
*** initializing unit database:
package flags []
loading package database /Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.8.0
wired-in package ghc-bignum mapped to ghc-bignum-1.2
wired-in package base mapped to base-4.16.1.0
wired-in package rts mapped to rts-1.0.2
wired-in package template-haskell mapped to template-haskell-2.18.0.0
wired-in package ghc mapped to ghc-9.2.2
!!! initializing unit database: finished in 11.73 milliseconds, allocated 3.382 megabytes
*** Chasing dependencies:
Chasing modules from: Main.hs
!!! Chasing dependencies: finished in 0.26 milliseconds, allocated 0.209 megabytes
Stable obj: {}
Stable BCO: {}
Ready for upsweep
[NONREC
ModSummary {
ms_hs_date = 2022-05-10 17:39:20.85882761 UTC
ms_mod = Main,
ms_textual_imps = [(Nothing, Prelude)]
ms_srcimps = []
} []]
*** Deleting temp files:
Deleting:
compile: input file Main.hs
*** Checking old interface for Main (use -ddump-hi-diffs for more details):
[1 of 1] Compiling Main ( Main.hs, Main.o )
*** Parser [Main]:
!!! Parser [Main]: finished in 0.07 milliseconds, allocated 0.070 megabytes
*** Renamer/typechecker [Main]:
!!! Renamer/typechecker [Main]: finished in 20.30 milliseconds, allocated 16.466 megabytes
*** Desugar [Main]:
Result size of Desugar (before optimization)
= {terms: 17, types: 12, coercions: 0, joins: 0/2}
Result size of Desugar (after optimization)
= {terms: 13, types: 8, coercions: 0, joins: 0/0}
!!! Desugar [Main]: finished in 0.24 milliseconds, allocated 0.195 megabytes
*** Simplifier [Main]:
Result size of Simplifier iteration=1
= {terms: 21, types: 12, coercions: 0, joins: 0/0}
Result size of Simplifier
= {terms: 21, types: 12, coercions: 0, joins: 0/0}
!!! Simplifier [Main]: finished in 0.18 milliseconds, allocated 0.224 megabytes
*** CoreTidy [Main]:
Result size of Tidy Core
= {terms: 21, types: 12, coercions: 0, joins: 0/0}
!!! CoreTidy [Main]: finished in 0.06 milliseconds, allocated 0.086 megabytes
Created temporary directory: /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0
*** CorePrep [Main]:
Result size of CorePrep
= {terms: 21, types: 12, coercions: 0, joins: 0/0}
!!! CorePrep [Main]: finished in 0.32 milliseconds, allocated 0.804 megabytes
*** CoreToStg [Main]:
*** Stg2Stg:
!!! CoreToStg [Main]: finished in 0.04 milliseconds, allocated 0.061 megabytes
*** CodeGen [Main]:
!!! CodeGen [Main]: finished in 2.02 milliseconds, allocated 1.764 megabytes
*** WriteIface [Main.hi]:
writeBinIface: 2 Names
writeBinIface: 19 dict entries
!!! WriteIface [Main.hi]: finished in 0.41 milliseconds, allocated 1.077 megabytes
*** systool:as:
*** Assembler:
gcc '--target=arm64-apple-darwin' -iquote. -fno-common -U__PIC__ -D__PIC__ -Qunused-arguments -x assembler -c /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_2.s -o Main.o.tmp
!!! systool:as: finished in 1.19 milliseconds, allocated 0.137 megabytes
Upsweep completely successful.
*** Deleting temp files:
Deleting: /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_1.s /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_2.s /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_3.c
Warning: deleting non-existent /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_1.s
Warning: deleting non-existent /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_3.c
link: linkables are ...
LinkableM (2022-05-10 17:39:32.944636345 UTC) Main
[DotO Main.o]
Linking Main ...
*** systool:cc:
*** C Compiler:
gcc -c /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_4.c -o /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_5.o -fno-common -U__PIC__ -D__PIC__ -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi -I/Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/../lib/aarch64-osx-ghc-9.2.2/rts-1.0.2/include '--target=arm64-apple-darwin'
!!! systool:cc: finished in 1.45 milliseconds, allocated 0.213 megabytes
*** systool:linker:
*** Linker:
gcc '--target=arm64-apple-darwin' '--target=arm64-apple-darwin' '-fuse-ld=lld' -o Main -fno-common -U__PIC__ -D__PIC__ -Wl,--gc-sections Main.o -L/Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/../lib/aarch64-osx-ghc-9.2.2/base-4.16.1.0 -L/Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/../lib/aarch64-osx-ghc-9.2.2/ghc-bignum-1.2 -L/Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/../lib/aarch64-osx-ghc-9.2.2/ghc-prim-0.8.0 -L/Users/ii/.ghcup/ghc/9.2.2/lib/ghc-9.2.2/lib/../lib/aarch64-osx-ghc-9.2.2/rts-1.0.2 /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_5.o -Wl,-u,_hs_atomic_add64 -Wl,-u,_hs_atomic_sub64 -Wl,-u,_hs_atomic_and64 -Wl,-u,_hs_atomic_nand64 -Wl,-u,_hs_atomic_or64 -Wl,-u,_hs_atomic_xor64 -Wl,-u,_hs_cmpxchg64 -Wl,-u,_hs_atomicread64 -Wl,-u,_hs_atomicwrite64 -Wl,-u,_base_GHCziTopHandler_runIO_closure -Wl,-u,_base_GHCziTopHandler_runNonIO_closure -Wl,-u,_ghczmprim_GHCziTuple_Z0T_closure -Wl,-u,_ghczmprim_GHCziTypes_True_closure -Wl,-u,_ghczmprim_GHCziTypes_False_closure -Wl,-u,_base_GHCziPack_unpackCString_closure -Wl,-u,_base_GHCziWeak_runFinalizzerBatch_closure -Wl,-u,_base_GHCziIOziException_stackOverflow_closure -Wl,-u,_base_GHCziIOziException_heapOverflow_closure -Wl,-u,_base_GHCziIOziException_allocationLimitExceeded_closure -Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,_base_GHCziIOziException_cannotCompactFunction_closure -Wl,-u,_base_GHCziIOziException_cannotCompactPinned_closure -Wl,-u,_base_GHCziIOziException_cannotCompactMutable_closure -Wl,-u,_base_GHCziIOPort_doubleReadException_closure -Wl,-u,_base_ControlziExceptionziBase_nonTermination_closure -Wl,-u,_base_ControlziExceptionziBase_nestedAtomically_closure -Wl,-u,_base_GHCziEventziThread_blockedOnBadFD_closure -Wl,-u,_base_GHCziConcziSync_runSparks_closure -Wl,-u,_base_GHCziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,_base_GHCziConcziIO_interruptIOManager_closure -Wl,-u,_base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,_base_GHCziConcziSignal_runHandlersPtr_closure -Wl,-u,_base_GHCziTopHandler_flushStdHandles_closure -Wl,-u,_base_GHCziTopHandler_runMainIO_closure -Wl,-u,_ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Wzh_con_info -Wl,-u,_base_GHCziPtr_Ptr_con_info -Wl,-u,_base_GHCziPtr_FunPtr_con_info -Wl,-u,_base_GHCziInt_I8zh_con_info -Wl,-u,_base_GHCziInt_I16zh_con_info -Wl,-u,_base_GHCziInt_I32zh_con_info -Wl,-u,_base_GHCziInt_I64zh_con_info -Wl,-u,_base_GHCziWord_W8zh_con_info -Wl,-u,_base_GHCziWord_W16zh_con_info -Wl,-u,_base_GHCziWord_W32zh_con_info -Wl,-u,_base_GHCziWord_W64zh_con_info -Wl,-u,_base_GHCziStable_StablePtr_con_info -Wl,-u,_hs_atomic_add8 -Wl,-u,_hs_atomic_add16 -Wl,-u,_hs_atomic_add32 -Wl,-u,_hs_atomic_sub8 -Wl,-u,_hs_atomic_sub16 -Wl,-u,_hs_atomic_sub32 -Wl,-u,_hs_atomic_and8 -Wl,-u,_hs_atomic_and16 -Wl,-u,_hs_atomic_and32 -Wl,-u,_hs_atomic_nand8 -Wl,-u,_hs_atomic_nand16 -Wl,-u,_hs_atomic_nand32 -Wl,-u,_hs_atomic_or8 -Wl,-u,_hs_atomic_or16 -Wl,-u,_hs_atomic_or32 -Wl,-u,_hs_atomic_xor8 -Wl,-u,_hs_atomic_xor16 -Wl,-u,_hs_atomic_xor32 -Wl,-u,_hs_cmpxchg8 -Wl,-u,_hs_cmpxchg16 -Wl,-u,_hs_cmpxchg32 -Wl,-u,_hs_xchg8 -Wl,-u,_hs_xchg16 -Wl,-u,_hs_xchg32 -Wl,-u,_hs_xchg64 -Wl,-u,_hs_atomicread8 -Wl,-u,_hs_atomicread16 -Wl,-u,_hs_atomicread32 -Wl,-u,_hs_atomicwrite8 -Wl,-u,_hs_atomicwrite16 -Wl,-u,_hs_atomicwrite32 -Wl,-search_paths_first -Wl,-U,___darwin_check_fd_set_overflow -Wl,-dead_strip -lHSbase-4.16.1.0 -lHSghc-bignum-1.2 -lHSghc-prim-0.8.0 -lHSrts-1.0.2 -liconv -lm -ldl -lffi -Wl,-dead_strip_dylibs -Wl,-headerpad,8000
clang: error: invalid linker name in argument '-fuse-ld=lld'
*** Deleting temp files:
Deleting: /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_4.c /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_6.rsp /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_7.rsp /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0/ghc_5.o
*** Deleting temp dirs:
Deleting: /var/folders/p2/_3cpsd_n3yl80hlb4tg1_37c0000gn/T/ghc98921_0
`gcc' failed in phase `Linker'. (Exit code: 1)
Expected behavior
GHC links the binary successfully.
Environment
- GHC version used: 9.2.2
Optional:
- Operating System: macOS 12.3.1 (21E258)
- System Architecture: aarch64