Steve Ellcey - Re: IA64 HP-UX Unwind patch (original) (raw)

This is the mail archive of the libstdc++@gcc.gnu.orgmailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 be expanded.

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__)));
#else
typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
#endif

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 code.

Steve Ellcey sje@cup.hp.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]