
Okay, I tried with LLVM registerised, I've read about it and the idea sounds nice.
What is in your build.mk? 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/ghc.mk:655: 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