Skip to content

Change default armhf target to a newer architecture

Currently the default llvm-targets file specifies the default arm-unknown-linux-gnueabihf target to be using -mcpu=arm1176jzf-s. Which is an Armv6 architecture.

This has the problem that it's generating memory barriers using CP15 instructions that are deprecated in Armv7 and removed in Armv8.

Because of this there's no way to run the binaries being produced by GHC HQ on Armv8 CPUs without having kernel support for CP15 Barrier emulation. which is slow.

We're also not taking advantage of new Armv8 instructions this way.

The debian folks have a bug report about this as well https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864847

This means that GHC cannot work on most boards people have/can easily buy today.

I think the default target should be an Armv7 architecture at the very least. But realistically Armv8 would probably be ok as well as I doubt many people use GHC to compile on older cores.

Trac metadata
Trac field Value
Version 8.5
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler (CodeGen)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information