This is the mail archive of the
mailing list for the libstdc++ project.
Re: IA64 HP-UX Unwind patch
- From: Steve Ellcey <sje at cup dot hp dot com>
- To: rth at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Wed, 14 Aug 2002 13:34:50 -0700 (PDT)
- Subject: Re: IA64 HP-UX Unwind patch
> On Wed, Aug 14, 2002 at 12:34:17PM -0700, Steve Ellcey wrote:
> > Actually the modification would only be needed in one place,
> > in eh_throw.cc (__gxx_exception_cleanup) so that should be
> > simple to do.
> You keep forgetting about libjava.
I do keep forgetting about libjava but I just looked and I don't see a
use of _URC_FOREIGN_EXCEPTION in it anywhere so I don't think I have to
change anything there for the _URC_NO_REASON problem. The _Unwind_SetIP
part may require libjava work.
> > I am not sure what you mean by "How does the function call ABI work?"
> > so I don't know how to answer that.
> Does void* get expanded to DImode in a register for the call?
No, void* would just be SImode (in ILP32 mode) when passed and would not
I am experimenting with the idea of the following change in unwind.h:
#if defined(__ia64__) && defined(__hpux__)
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
The other changes that would be needed to make this work would be to
modify catchTemp in the __cxa_exception in cxx-unwind.h to be
_Unwind_Ptr instead of void* and get rid of the void* casts when
assigning to catchTemp. Does this look like a better approach? I am
still testing it to see if it actually works. This might also make
libjava changes unnecessary since the Java LSDA uses _Unwind_Ptr's in
its LSDA but I don't see any void* types like catchTemp in the Java