This is the mail archive of the libstdc++@gcc.gnu.org mailing 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]

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
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]