28.01.2015 Views

Exception Handling ABI for the ARM Architecture

Exception Handling ABI for the ARM Architecture

Exception Handling ABI for the ARM Architecture

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Exception</strong> handling <strong>ABI</strong> <strong>for</strong> <strong>the</strong> <strong>ARM</strong> architecture<br />

In C++, exception propagations must be strictly nested (<strong>the</strong> C++ Standard phrases this by saying that if a<br />

destructor called during stack unwinding exits with an exception, terminate() is called). Consider a hypo<strong>the</strong>tical<br />

language L in which exception propagations aren't required to nest, but can overlap. Presumably in such a case,<br />

where one propagation 'overtakes ano<strong>the</strong>r', <strong>the</strong> 'overtaken' propagation must be disposed of. Some slightly<br />

delicate analysis suggests that it would suffice to add one fur<strong>the</strong>r _Unwind function that did this. The function<br />

would be called (from a semantics library routine <strong>for</strong> L) only when an exception object participated in more than<br />

propagation, and it would tidy up (discard) state saved <strong>for</strong> <strong>the</strong> previous (i.e. second-most-recent) propagation, thus<br />

disposing of that propagation. Support <strong>for</strong> this possibility will be deferred until demand <strong>for</strong> it arises.<br />

<strong>ARM</strong> IHI 0038A Copyright © 2002-2005, 2007 <strong>ARM</strong> Limited. All rights reserved. Page 30 of 50

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!