From: "Ranjit Mathew" <rmathew@hotmail.com>
To: gcc@gcc.gnu.org
Subject: Re: __attribute__((cleanup(function)) versus try/finally
Date: Thu, 08 May 2003 07:49:00 -0000 [thread overview]
Message-ID: <BAY1-F33lGJZNuIkdg000004bca@hotmail.com> (raw)
> > The same issue was pointed out (albeit in passing)
> > when Aldy Hernandez had submitted his __try/__finally
> > patch to GCC for C.
>
>And I responded at the time claiming that the semantics of
>the two extensions are identical.
Very similar, but not identical, AFAICT:
http://msdn.microsoft.com/library/en-us/vccelng/htm/state_14.asp
The __finally block is executed in case of both "normal" C++ exceptions
as well as "faults" such as accessing a NULL pointer, dividing by zero,
etc.
Of course this would tie in with integrating SEH support into GCC,
a brave attempt at which can be found at:
http://reactos.wox.org/index.php?page=gccseh
in which case my point becomes moot.
> > Since the Win32 API stack does not have DW2 EH
> > unwind information, the program just terminates
> > when an exception is thrown (if using DW2 EH).
> >
> > SJLJ does not have any such problems.
> >
> > In fact, this seems to be a fundamental limitation
> > of the DW2 EH mechanism and not just on Windows.
>
>Yes. Such is the price you pay for not saving all of the
>registers up front when an exception is *not* thrown.
IIRC, till some time ago "-fsjlj-exceptions" used to be available
that should allow such fringe cases to work albeit with a
performance hit.
Otherwise DW2 EH is *way better* than SJLJ as you all
know very well and should be the default.
Does anyone know why "fsjlj-exceptions" support was
dropped and made a configure time option?
> > MD_FALLBACK_FRAME_STATE_FOR looks a bit promising
> > but how do we generalise it to any "foreign" caller?
>
>Eh, MD_FALLBACK_FRAME_STATE_FOR isn't really generalizable.
>You could perhaps hack it to parse SEH unwind data, but...
SEH is an SJLJ type scheme:
http://www.microsoft.com/msj/0197/Exception/Exception.aspx
>Another possibility is to give up on unwind-dw2.c entirely
>and write a new unwinder that uses the SEH bits in the Win32
>API directly, all the time. Then (1) you'd be able to unwind
>through Windows routines and (2) there'd be no "confusion"
>about the supposed "differences" in try/finally.
Possible, but it feels awful to throw away the fantastic DW2 EH...
:-(
Ranjit.
_________________________________________________________________
Dreaming of a holiday? Make it happen.
http://server1.msn.co.in/sp03/switzerlandtourism/index.asp In Switzerland!
next reply other threads:[~2003-05-08 7:49 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-08 7:49 Ranjit Mathew [this message]
2003-05-08 21:21 ` Richard Henderson
-- strict thread matches above, loose matches on Subject: below --
2003-05-13 21:33 Richard Kenner
2003-05-13 22:11 ` Richard Henderson
2003-05-09 9:54 Ranjit Mathew
2003-05-09 10:16 ` Andrew Haley
2003-05-09 12:08 ` Fergus Henderson
2003-05-09 12:49 ` Jamie Lokier
2003-05-09 9:23 Ranjit Mathew
2003-05-09 9:31 ` Andrew Haley
2003-05-07 10:18 Ranjit Mathew
2003-05-07 13:54 ` Jason Merrill
2003-05-07 18:23 ` Richard Henderson
2003-05-08 18:02 ` Mike Stump
[not found] <Pine.BSF.4.55.0305061457450.57349@acrux.dbai.tuwien.ac.at>
[not found] ` <1052245742.2583.315.camel@doubledemon.codesourcery.com>
[not found] ` <wvlissnc2e3.fsf@prospero.boston.redhat.com>
[not found] ` <1052249890.31850.338.camel@doubledemon.codesourcery.com>
2003-05-06 21:04 ` Jason Merrill
2003-05-06 21:24 ` Mark Mitchell
2003-05-07 21:21 ` Jason Merrill
2003-05-07 22:18 ` Mark Mitchell
2003-05-07 23:01 ` Jason Merrill
2003-05-08 12:05 ` Gabriel Dos Reis
2003-05-09 5:46 ` Kai Henningsen
2003-05-06 21:52 ` Anthony Green
2003-05-08 17:44 ` Mike Stump
2003-05-08 17:45 ` Jason Merrill
2003-05-08 18:40 ` Mark Mitchell
2003-05-08 19:06 ` Alexandre Oliva
2003-05-08 19:47 ` Mark Mitchell
2003-05-08 20:19 ` Alexandre Oliva
2003-05-08 21:18 ` Jason Merrill
2003-05-13 21:10 ` Mark Mitchell
2003-05-13 21:25 ` Richard Henderson
2003-05-13 21:41 ` Mark Mitchell
2003-05-13 22:16 ` Richard Henderson
2003-05-13 21:31 ` Gabriel Dos Reis
2003-05-15 17:00 ` Jason Merrill
2003-05-15 17:23 ` Mark Mitchell
2003-05-09 19:41 ` Kai Henningsen
2003-05-08 19:37 ` Jason Merrill
2003-05-07 0:14 ` Richard Henderson
2003-05-07 2:32 ` Mark Mitchell
2003-05-06 19:56 Jason Merrill
2003-05-08 11:59 ` Gabriel Dos Reis
2003-05-08 15:02 ` Jason Merrill
2003-05-08 18:30 ` Mike Stump
2003-05-08 20:49 ` Richard Henderson
2003-05-08 22:29 ` Mike Stump
2003-05-13 0:07 ` Geoff Keating
2003-05-13 21:27 ` Richard Henderson
2003-05-14 1:14 ` Geoff Keating
2003-05-14 7:41 ` Richard Henderson
2003-05-14 21:11 ` Geoff Keating
2003-05-14 22:20 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BAY1-F33lGJZNuIkdg000004bca@hotmail.com \
--to=rmathew@hotmail.com \
--cc=gcc@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).