public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jason Merrill <jason@redhat.com>
To: Ranjit Mathew <rmathew@hotmail.com>
Cc: gcc@gcc.gnu.org
Subject: Re: __attribute__((cleanup(function)) versus try/finally
Date: Wed, 07 May 2003 13:54:00 -0000	[thread overview]
Message-ID: <wvlllxiamqb.fsf@prospero.boston.redhat.com> (raw)
In-Reply-To: <3EB8DD9A.2050100@hotmail.com> (Ranjit Mathew's message of "Wed, 07 May 2003 15:49:06 +0530")

On Wed, 07 May 2003 15:49:06 +0530, Ranjit Mathew <rmathew@hotmail.com> wrote:

> Sorry to butt in into this discussion, but I would like to point out that
> it would be a BAD idea to name these "__try/__finally" simply because
> these are used in the Windows world to deal with Windows Structured
> Exception Handling (SEH) and are a language extension introduced by MS
> Visual C/C++ (and adopted by other commercial compilers for Windows):
>[...]
> However unfortunate you consider this situation to be, if GCC introduces
> these keywords, it is going to create a lot of confusion.

Why would it cause confusion?  The VC++ version has the same semantics.

> Now I have an issue somewhat related to this discussion that I hope
> someone would be able to shed some light on: on Windows, the Cygwin/MinGW
> targets have had to give up on DW2 EH in favour of SJLJ purely because
> exceptions could not be thrown from a callback function, across the
> Windows Event Dispatcher stack to the handler of the exception.
>[...]
> 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).

Sure.

> In fact, this seems to be a fundamental limitation of the DW2 EH
> mechanism and not just on Windows.

Yes, any callback API would have similar problems if the dispatcher is not
compiled with -fexceptions.

> So is there a way out of this?
>
> MD_FALLBACK_FRAME_STATE_FOR looks a bit promising but how do we
> generalise it to any "foreign" caller?

This is difficult on the x86; you would need to scan back to the beginning
of the function and disassemble the function prologue to find out where
registers are saved.  You could probably use some code from gdb as a
starting point.

Jason

  reply	other threads:[~2003-05-07 13:54 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-07 10:18 Ranjit Mathew
2003-05-07 13:54 ` Jason Merrill [this message]
2003-05-07 18:23 ` Richard Henderson
2003-05-08 18:02 ` Mike Stump
  -- 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-08  7:49 Ranjit Mathew
2003-05-08 21:21 ` Richard Henderson
     [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=wvlllxiamqb.fsf@prospero.boston.redhat.com \
    --to=jason@redhat.com \
    --cc=gcc@gcc.gnu.org \
    --cc=rmathew@hotmail.com \
    /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).