C++ exception handler on gnu arm cortex m4

Chris Johns chrisj@rtems.org
Wed Sep 28 00:23:00 GMT 2016


On 27/09/2016 22:44, David Brown wrote:
> On 27/09/16 11:31, Richard Earnshaw (lists) wrote:
>> On 27/09/16 09:58, Markus Klemm wrote:
>>> Hi folks,
>>>
>>> I'm using the gnu compiler suite for my arm cortex m4 project. But every
>>> throw produces a hard fault, even on simple
>>>
>>> try {throw 4;} catch(...){}
>>>
>>> scenarios. __cxa_throw jumps right to _ZSt9terminatev, after
>>> __cxa_begin_catch returns, which should AFAIK never return.
>>>
>>> Are there any common problems leading to this behavior?
>>>
>>> Specific I'm using Kinetis Design Studio 3.2.0. with the GNU ARM C/C++
>>> Cross Compiler Version: 1.12.1.201502281154 for our FRDM-KV31F.
>>>
>>
>> I don't recognize any of the above in terms of an FSF GCC release, so
>> there's little we can do to help, especially without a full test case.
>
> The Kinetis is a family of ARM Cortex M4 and M0+ microcontrollers from
> Freescale/NXP.  The Kinetis Design Studio is a toolchain package from
> Freescale/NXP consisting of Eclipse, gdb (with OpenOCD and other
> hardware interfacing), gcc, libraries, device-specific headers, wizards,
> etc.
>
> The gcc + friends package is from
> <https://launchpad.net/gcc-arm-embedded> .  As far as I know, Freescale
> does not modify it at all now - it is taken straight from that site,
> though not necessarily the latest release.  The library is newlib or
> newlib-nano (both are part of it).
>
> The OP can probably get best support on this setup by posting to the
> Kinetis Design Studio forums at Freescale/NXP, or on the forums on the
> Launchpad site.
>

If exceptions are in the build and you are landing in terminate then I 
suggest looking at your link map and linker command files to make sure 
you have included all the data needed by the unwinder. If there is any 
issue with the exception frame data terminate is called.

Chris



More information about the Gcc-help mailing list