From: Cary Coutant <cary@cup.hp.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] Unwind problem for __attribute__ noreturn
Date: Sat, 24 Mar 2001 00:58:59 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590693005348@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590693005303@msgid-missing>
>I don't know who Cary is
For those who don't know me, I'm responsible for the HP-UX runtime
architecture on both PA-RISC and IA-64. I've worked with Intel on IA-64
from the beginning, contributed to the hardware architecture, co-led the
development of the runtime architecture, and wrote a large part of the
Software Conventions and Runtime Architecture document, including all of
the unwind chapter. (Sometimes I don't like to admit that when it becomes
evident that I neglected a corner case such as the one we're now
discussing!)
While I don't participate in the Linux implementation effort (though I'd
like to), I keep an eye on this mailing list to catch and correct issues
like this one.
>When unwinding, we are doing a table lookup. The address space is split into
>a bunch of separate unwind regions, each one stopping where the next one
>starts. This leaves us vulnerable to boundary crossing problems. If a call
>occurs in the last bundle of an unwind region, then the return address points
>to the next unwind region.
Except for calls to noreturn procedures (which I failed to anticipate in
the design and specification of the unwind architecture), the return
point must always be in the same unwind region as the call, because
nothing can happen to change the unwind state between the call and the
return point.
>Similarly, when doing C++ exception handling, we are doing a table lookup.
>The address space in split into a bunch of separate exception regions, and
>there is a boundary-crossing problem if a call is the last instruction of an
>exception region.
To me, the EH model is better thought of not as a set of regions, but as
a set of discrete points in the code where an exception can be raised.
Each of these points, most of which are return points following calls,
can be described in the EH tables without any ambiguity about what region
the IP address belongs to.
-cary
next prev parent reply other threads:[~2001-03-24 0:58 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-20 2:10 [Linux-ia64] Unwind problem for __attribute__ noreturn Keith Owens
2001-03-21 0:24 ` Jim Wilson
2001-03-21 6:03 ` Keith Owens
2001-03-21 6:53 ` David Mosberger
2001-03-21 7:12 ` Jim Wilson
2001-03-21 7:54 ` David Mosberger
2001-03-21 8:54 ` Keith Owens
2001-03-21 17:54 ` David Mosberger
2001-03-21 18:48 ` Cary Coutant
2001-03-21 19:07 ` Jim Wilson
2001-03-21 19:13 ` David Mosberger
2001-03-21 19:13 ` Jim Wilson
2001-03-21 19:26 ` Cary Coutant
2001-03-21 19:40 ` Jim Wilson
2001-03-21 19:58 ` David Mosberger
2001-03-21 20:00 ` Jim Wilson
2001-03-21 20:38 ` Jim Wilson
2001-03-21 22:54 ` David Mosberger
2001-03-21 23:42 ` Cary Coutant
2001-03-22 17:00 ` Rich Altmaier
2001-03-23 20:28 ` Jim Wilson
2001-03-24 0:58 ` Cary Coutant [this message]
2001-03-24 1:27 ` Keith Owens
2001-03-24 1:37 ` Jim Wilson
2001-03-26 22:06 ` DE-DINECHIN,CHRISTOPHE (HP-Cupertino,ex1)
2001-03-26 22:58 ` Cary Coutant
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=marc-linux-ia64-105590693005348@msgid-missing \
--to=cary@cup.hp.com \
--cc=linux-ia64@vger.kernel.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