Posts tagged 'arm'

GHC on Debian/armel (ARM EABI)

A while back Riku Voipio called for help with missing bits for Debian/armel one of which was GHC. Not knowing Martin Guy was already (privately) working on bootstrapping GHC (an ARM port existed already) I decided to have a go at it. The GHC porting documentation is clearly excellent and resulted in quick success (relatively quick given the slow build hardware). At that time Martin was already far ahead of me. Meanwhile he has made packages available. I have yet to get around to reporting some minor problems GHC upstream and I may also investigate why ghci doesn't work at some point, but basically this means Haskell is available to the EABI crowd :)


Being a guy I talked to Andrew Haley at the Oldenburg DevJam about how feasible running GCJ on ARM would be and what needs to be done to make it happen. Incidentally Tom Tromey had given an overview on the same topic on IRC a few days before. So, thanks to Tom I wasn't totally clueless ;)

Anyways, here's a short summary:

  • GCJ is the production quality (just have a look at how many packages Fedora ships use GCJ) runtime of choice ATM. We want this on ARM as well.
  • The ARM port of GCJ isn't finished. Code that has been compiled to native binaries/libraries using the BC ABI should run fine. The interpreter, however, needs some work to be fully usable.
  • For the interpreter to work closure support would have to be added to libffi. Lack of closure support is also why DotGNU Portable.NET can't run Gtk# applications on ARM yet. (Making pnet/gtk# work on ARM was one of the Summer of Code projects mentored by
  • Some platform specifics in libjava (for locks, stack traces, turning null pointer dereference into a Java exception, ...) will have to be written.
  • Versions of boehm gc earlier than 6.6 won't work properly on ARM.

Andrew also pointed out that Java classes compiled to native code add significantly to the space requirements of the class library. Michael Koch and me had blogged about possible solutions to this issue before.

That's it for now. As usual, any corrections/suggestions are welcome. Oh, I should note that in order to work on this myself I'd have to learn a *lot*, which doesn't mean it won't happen but don't hold your breath on it...