[Bug 951] New: libgcc_s incorrect "header" information
| Newsgroups | gmane.linux.lsb.specification |
|---|---|
| Message-ID | <[email protected]> |
OtherBugsDependingO 611
nThis:
The data structure _UnwindException does not match the "C++ ABI". Ours:
typedef unsigned int _Unwind_Ptr;
typedef unsigned int _Unwind_Word;
. . .
struct _Unwind_Exception
{
_Unwind_Exception_Class;
_Unwind_Exception_Cleanup_Fn;
_Unwind_Word;
_Unwind_Word;
}
This is an incomplete definition since we don't define types
_Unwind_Exception_Class or _Unwind_Exception_Cleanup_Fn. Also, the C++ ABI
requires the first, third and fourth members to be 64-bit, thus the "typedef
unsigned int" should be "typedef unsigned long". Here's the clip:
Exception Header
The unwind interface uses a pointer to an exception header object as its
representation of an exception being thrown. In general, the full representation
of an exception object is language- and implementation-specific, but it will be
prefixed by a header understood by the unwind interface, defined as follows:
typedef void (*_Unwind_Exception_Cleanup_Fn)
(_Unwind_Reason_Code reason,
struct _Unwind_Exception *exc);
struct _Unwind_Exception {
uint64 exception_class;
_Unwind_Exception_Cleanup_Fn exception_cleanup;
uint64 private_1;
uint64 private_2;
};
An _Unwind_Exception object must be double-word aligned. The first two fields
are set by user code prior to raising the exception, and the latter two should
never be touched except by the runtime.
--
Configure bugmail: http://bugs.linuxbase.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.