incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov" <Farid_Zari...@epam.com>
Subject RE: 19.exceptions.mt.cpp fails on AIX
Date Fri, 02 Nov 2007 17:21:33 GMT
> -----Original Message-----
> From: Travis Vitek [mailto:vitek@roguewave.com] 
> Sent: Friday, November 02, 2007 6:40 PM
> To: stdcxx-dev@incubator.apache.org
> Subject: 19.exceptions.mt.cpp fails on AIX
> 
> If I'm reading the code correctly, this means that STDCXX will provide
> definitions for the default ctor, copy-assignment operator, 
> dtor and what().
> The definition of the copy-ctor will come from somewhere else 
> [where?].

  The definition of the copy-ctor should be present in libc.

> Anyways, an exception is created and copied out for the unwind. The
> exception is then copied back onto the stack at the location 
> the exception
> is handled. The code that actually copies the exception 
> expects the object
> to be 8 bytes in size, but the code that created the exception only
> allocates 4 bytes for it.

  The definitions of the std::exception class in STDCXX and AIX system
headers should be the same. If no, the include/exception header file
should
have corresponding #ifdef _RWSTD_OS_AIX / #endif

> So here is my problem with all of this. How is this safe? If 
> the one of the
> 'special' functions provided by the system has some side 
> effect, and we use
> that implementation, then how can we safely define any of the other
> 'special' functions?
> 
> That said, what is the appropriate solution? Should we just 
> pad the type out to the correct size

  Yes, since the stdcxx uses std::exception class just as base class
for the other exception classes (the members of the std::exception are
not used).

Farid.

Mime
View raw message