------- Comment #12 from stephan dot bergmann at sun dot com 2009-01-06 09:12 ------- I was a bit sloppy in what I wrote before (i.e., in what Matthias turned into the description of this bug); it is the change of offsets of __cxa_exception members caused by the addition of referenceCount that causes problems for OOo: In the OOo-supplied exception destructor function (which receives a pointer P pointing just past the __cxa_exception header), OOo assumes to access the __cxa_exception member exceptionType at P - 80 bytes. From my reading of <http://www.codesourcery.com/public/cxx-abi/abi-eh.html> I think OOo is correct in making this assumption, if GCC conforms to that ABI. However, the addition of a referenceCount member to the front of GCC's __cxa_exception unfortunately causes the "backwards offset" of exceptionType to change from -80 to -76 bytes (as the four bytes of referenceCount cancel out a previous four padding bytes just before the unwindHeader member coming later in the struct).
>From the comments to this bug so far, I am not sure whether the GCC maintainers (a) acknowledge this and will fix it (in which case I do not need to modify OOo), or (b) acknowledge this but consider OOo to be using undocumented internals of GCC that legitimately changed (in which case I will need to modify OOo), or rather (c) consider alignment issues of unwindHeader instead (which I think are irrelevant to my problem). -- stephan dot bergmann at sun dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |stephan dot bergmann at sun | |dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38732