This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: generating functions and eh region


Vincent R. wrote:

>> Really, it's all pretty much the same as DW2, except that rather than 
>> calling a raise exception function in libgcc, it begins with a real 
>> processor exception that then ends up routing into the unwinder. From
>> there it's all fairly analagous.

  I should have added that the relevant distinction that's coming into play
here is that, instead of having data in the unwind tables for each catch
handler to describe what exceptions it has, with SEH you have a filter
function called at each catch level, which does a runtime test on the
exception and tells the unwinder whether it wants to handle that particular
exception or not.

  I think a nested function is entirely suitable for this, and in particular
that the ability of a nested function to access the enclosing function's local
variables is entirely appropriate in this usage.

> Yes this article is the best one about frame-based SEH (x86) but there are 
> also very good one about table-based (x64, arm, mips, sh).
> 
> http://www.microsoft.com/msj/0197/Exception/Exception.aspx : frame-based
> exception
> In google type : x64 seh and select first entry (cached version only
> available)
> http://www.nynaeve.net/?p=99
> http://www.howzatt.demon.co.uk/articles/oct04.html
> http://www.ntcore.com/Files/vista_x64.htm#Exception_Handling
> http://www.smartmobili.com/content/view/40/42/lang,fr/

  I guess as long as we're sharing links I should post a pointer to the "EH
newbies HOWTO":

http://gcc.gnu.org/ml/gcc/2002-07/msg00391.html

and of course the C++ ABI spec:

http://www.codesourcery.com/public/cxx-abi/abi-eh.html

> Please note that SEH is also the underlying mechanism used by C++
> exceptions on windows platforms.

  Yep, so we know it all has to be possible somehow!

    cheers,
      DaveK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]