GDC 9 and ARM Cortex-M

Timo Sintonen t.sintonen at luukku.com
Sun Jul 7 06:24:06 UTC 2019


My little test program is nearly working now.
Some funny things I have found:

- When not using -O2 4 extra bytes appear in front of tdata init 
values. With -O2 they disappear.
- I have my own calloc where I first allocate a block with malloc 
and then use memset to zero it. GCC can see this and replaces 
these two calls with a call to calloc...

>
> There were big changes in exception handling code about 2 years 
> ago and my exception code stopped to work. What was changed 
> back then? How can I get my code to work again? Could this be 
> some struct alignment problem like some years ago?

The program dies somewhere in unwinding code. It looks like the 
stack pointer is moved incorrectly and values are popped to wrong 
registers in function return. There might be a size mismatch 
between c and d side when function arguments are passed in stack.
Any idea where to look?



More information about the D.gnu mailing list