mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 12:54:27 +00:00
Merge libcxxrt commit 45ca8b1942090226ba9368caeeeabc0d4ee41ad6
Insert padding in __cxa_exception struct for compatibility Similar to https://github.com/llvm/llvm-project/commit/f2a436058fcb, the addition of __attribute__((__aligned__)) to _Unwind_Exception (in commit b9616964) causes implicit padding to be inserted before the unwindHeader field in __cxa_exception. Applications attempt to get at the earlier fields in __cxa_exception, so preserve the same negative offsets in __cxa_exception, by moving the padding to the beginning of the struct. The assumption here is that if the ABI is not aware of the padding before unwindHeader and put the referenceCount/primaryException in there, no padding should exist before unwindHeader. This should make libreoffice's custom exception handling mechanisms work correctly, even if it was built against an older cxxabi.h/unwind.h pair. PR: 263370 MFC after: 3 days
This commit is contained in:
parent
034dd2d54f
commit
434215c26d
|
@ -77,6 +77,13 @@ typedef void (*terminate_handler)();
|
|||
struct __cxa_exception
|
||||
{
|
||||
#if __LP64__
|
||||
/**
|
||||
* Now _Unwind_Exception is marked with __attribute__((aligned)), which
|
||||
* implies __cxa_exception is also aligned. Insert padding in the
|
||||
* beginning of the struct, rather than before unwindHeader.
|
||||
*/
|
||||
void *reserve;
|
||||
|
||||
/**
|
||||
* Reference count. Used to support the C++11 exception_ptr class. This
|
||||
* is prepended to the structure in 64-bit mode and squeezed in to the
|
||||
|
|
Loading…
Reference in a new issue