This is the mail archive of the
archer@sourceware.org
mailing list for the Archer project.
Re: C++ Exceptions Status
- From: Pedro Alves <pedro at codesourcery dot com>
- To: archer at sourceware dot org
- Cc: Ian Lance Taylor <iant at google dot com>,Phil Muldoon <pmuldoon at redhat dot com>
- Date: Wed, 6 Aug 2008 15:41:30 +0100
- Subject: Re: C++ Exceptions Status
- Organization: CodeSourcery
- References: <48999B3C.4080900@redhat.com> <m3ej52nsya.fsf@google.com>
A FYI,
On Wednesday 06 August 2008 15:01:17, Ian Lance Taylor wrote:
> Phil Muldoon <pmuldoon@redhat.com> writes:
> Microsoft Windows uses a different system which gcc does not currently
> support, known as SEH.
SEH exceptions are OS supported exceptions. Microsoft's compilers
implement c++ exceptions on top of these, gcc doesn't.
- SEH on x86 is stack based, similar in spirit to sjlj. I had confirmed
a couple of month's back, that MSFT's debugger can step successfully
and transparently from a throw to a catch. We're really way behind
here. :-)
- SEH on x86_64, and RISC machines running WinCE (ARM, SH, MIPS)
is "zero-cost", table based, similar in spirit to dwarf
unwinding.
As Ian noted, SEH isn't supported by gcc yet.
gcc supports both sjlj and dwarf c++ exceptions on cygwin/mingw.
Dwarf unwinding doesn't work right currently when crossing foreign
frames (exceptions thrown from user installed callbacks in
system apis, which are common in Win32 apps), so, by default
(at least until somewhat recently), mingw/cygwin gcc builds
default to sjlj.
--
Pedro Alves