
#9895: No -mtriple param being passed to opt/llc when cross compiling -------------------------------------+------------------------------------- Reporter: erikd | Owner: erikd Type: feature request | Status: new Priority: normal | Milestone: 7.10.1 Component: Compiler | Version: 7.9 Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Moderate (less | Type of failure: than a day) | None/Unknown Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Currently trying to build an x86_64-linu to arm64-linux cross-compiler. After fixing some code in `rts/StgCRun.c` i ran into an issue where ghc was calling `llc` and generating `x86_64` assembly instead of `aarch64` assembly. For now, I've hacked `compiler/main/SysTools.hs` to add `-mtriple=aarch64 -linux-gnu` to the `opt` and `llc` command lines and that allows me to get a bit further in the compile process. For cross-compiling, passing something like this `-mtriple=...` is pretty much mandatory. I suggest adding it by doing the following: * Add a `crossCompiling :: Bool` field to `DynFlags`. * Add the `-mtriple=...` string to the `sOpt_lo` and `sOpt_lc` fields of `Settings` when we are cross-compiling. * Possibly also store the triple string in the `Platform` struct. Comments? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9895 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler