www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - Towards exception handling on ARM

Hi all,

Just wanted to share the latest news concerning ARM support.

I just had another go at fixing exception handling on ARM, and with
the very, _very_ crude patch linked in
https://github.com/ldc-developers/ldc/issues/489, simple instances of
EH such as in the following example now behave as expected: (LLVM 3.3,
ldc merge-2.064, armv7l-unknown-linux-gnueabihf)

———
void thrower() {
    throw new Exception("Hello World!");
}

void main() {
    import std.stdio;
    try {
        thrower();
    } catch (Exception e) {
        writeln(e.msg);
    }
}
———

There is still a long way to go through, as evidenced by this test
suite log: https://gist.github.com/klickverbot/8294261. I cancelled
the build of the std.algorithm tests due to its ridiculous memory
requirements (in ARM SoC terms), but note that quite a few tests are
segfaulting in strange ways. Many of which turn out to be caused by
remaining unwinding issues (just look at the backtrace in GDB).

I don't think I'll really have the time to resume work on this until
end of January or so, but if somebody else wants to continue where I
left off, I'd be glad to provide assistance. The next step I'd suggest
is getting the dmd-testsuite machinery to run, so as to iron out the
most critical bugs before attacking the more complex Phobos test
cases.

Best,
David
Jan 06 2014