Cannot have GHC in ARMv6 architecture

jmcf125 at jmcf125 at
Wed Sep 9 23:33:34 UTC 2015

Okay, I tried with LLVM registerised, I've read about it and the idea sounds nice.

> What is in your Maybe you are using one of the build flavors that
> sets -fllvm explicitly?
Ah, so that was it. I followed Karel's blog, seems back then the
BuildFlavour = quick-cross option he used didn't include LLVM, which makes
sense, since there was no support. Now, the option is there, as you suspected:

ifeq "$(BuildFlavour)" "quick-cross"
GhcStage2HcOpts    = -O0 -fllvm
GhcLibHcOpts       = -O -fllvm

> That said you can also try installing the supported version of LLVM for ghc
> 7.10, which is LLVM 3.5.
Good that it was still in Arch Linux repos, as llvm35. All went fine
through stage 1, now ghc-stage1 works, and I mean:
 $ ../inplace/bin/ghc-stage1 --make HelloWorld.lhs 
[1 of 1] Compiling Main             ( HelloWorld.lhs, HelloWorld.o )
Linking HelloWorld ...

But I still got an error in the end (using make with only one core costed me a
few hours...):
echo 'exec "$executablename" ${1+"$@"}'                     >> inplace/bin/dll-split
chmod +x                                                     inplace/bin/dll-split
inplace/bin/dll-split compiler/stage2/build/.depend-v-dyn.haskell "DynFlags" "Annotations ApiAnnotation Avail Bag BasicTypes Binary BooleanFormula BreakArray BufWrite Class CmdLineParser CmmType CoAxiom ConLike Coercion Config Constants CoreArity CoreFVs CoreSubst CoreSyn CoreTidy CoreUnfold CoreUtils CostCentre Ctype DataCon Demand Digraph DriverPhases DynFlags Encoding ErrUtils Exception ExtsCompat46 FamInstEnv FastFunctions FastMutInt FastString FastTypes Fingerprint FiniteMap ForeignCall Hooks HsBinds HsDecls HsDoc HsExpr HsImpExp HsLit PlaceHolder HsPat HsSyn HsTypes HsUtils HscTypes IOEnv Id IdInfo IfaceSyn IfaceType InstEnv Kind Lexeme Lexer ListSetOps Literal Maybes MkCore MkId Module MonadUtils Name NameEnv NameSet OccName OccurAnal OptCoercion OrdList Outputable PackageConfig Packages Pair Panic PatSyn PipelineMonad Platform PlatformConstants PprCore PrelNames PrelRules Pretty PrimOp RdrName Rules Serialized SrcLoc StaticFlags StringBuffer TcEvidence TcRnTypes TcType TrieMap TyCon Type TypeRep TysPrim TysWiredIn Unify UniqFM UniqSet UniqSupply Unique Util Var VarEnv VarSet Bitmap BlockId ByteCodeAsm ByteCodeInstr ByteCodeItbls CLabel Cmm CmmCallConv CmmExpr CmmInfo CmmMachOp CmmNode CmmUtils CodeGen.Platform CodeGen.Platform.ARM CodeGen.Platform.ARM64 CodeGen.Platform.NoRegs CodeGen.Platform.PPC CodeGen.Platform.PPC_Darwin CodeGen.Platform.SPARC CodeGen.Platform.X86 CodeGen.Platform.X86_64 FastBool Hoopl Hoopl.Dataflow InteractiveEvalTypes MkGraph PprCmm PprCmmDecl PprCmmExpr Reg RegClass SMRep StgCmmArgRep StgCmmClosure StgCmmEnv StgCmmLayout StgCmmMonad StgCmmProf StgCmmTicky StgCmmUtils StgSyn Stream"
inplace/bin/dll-split: line 8: /home/jmcf125/ghc-raspberry-pi/ghc/inplace/lib/bin/dll-split: cannot execute binary file: Exec format error
inplace/bin/dll-split: line 8: /home/jmcf125/ghc-raspberry-pi/ghc/inplace/lib/bin/dll-split: Success
compiler/ recipe for target 'compiler/stage2/dll-split.stamp' failed
make[1]: *** [compiler/stage2/dll-split.stamp] Error 126
Makefile:71: recipe for target 'all' failed
make: *** [all] Error 2

OK, it did try to get to stage 2, as I thought it would. Is dll-split trying to
execute a stage 2 binary? Why? What's going on?

Thanks for the help so far,
João Miguel

More information about the ghc-devs mailing list