On Wednesday, 1 January 2014 at 15:19:01 UTC, Iain Buclaw wrote:
On 1 Jan 2014 14:05, "Timo Sintonen" <t.sinto...@luukku.com>
wrote:
I started to update minlibd with gdc head from last saturday.
While
testing if exceptions work, the program just stops and does not
reach catch
or abort.
Before investigating further, I want to ask the status of arm
exceptions:
are they known to work, known not to work or is the status just
unknown?
Does anybody know if there are any good articles of exceptions
and
unwinding in gcc or in general?
How are exceptions implemented in minilibd? I assume that you
don't
use/copy from the gdc compiler runtime folders (rt.* and gcc.*)
I do not have my own code here. I just add those files that are
needed to link the test program. Currently I have rt/deh.d,
gcc/deh.d, gcc/unwind/pe.d, gcc/unwind/arm.d and core/exception.d
Meanwhile I found an exception abi documentation from arm:
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf
and now I know a little how this is supposed to work.
By looking the asm I think that at the throw point it generates
the exception object and then the unwind_control_block struct and
then calls _Unwind_Resume. The unwind tables have already been in
linker script. Then the unwind system should at some point call
the personality functions in gcc/deh.d.
Maybe I have to check if there is meaningful data in the unwind
tables and if the personality functions ever get called.