Exceptions in ARM

Timo Sintonen t.sintonen at luukku.com
Wed Jan 1 08:43:27 PST 2014


On Wednesday, 1 January 2014 at 15:19:01 UTC, Iain Buclaw wrote:
> On 1 Jan 2014 14:05, "Timo Sintonen" <t.sintonen at 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.


More information about the D.gnu mailing list