[libunwind] r311562 - unwind: explicitly align `_Unwind_Control_Block`

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 23 08:33:46 PDT 2017

Author: compnerd
Date: Wed Aug 23 08:33:45 2017
New Revision: 311562

URL: http://llvm.org/viewvc/llvm-project?rev=311562&view=rev
unwind: explicitly align `_Unwind_Control_Block`

The C++ ABI requires that the exception object is double-word aligned.
The alignment attribute was applied to the `_Unwind_Exception` type
which is used on non-EHABI targets.  On EHABI, the exception object type
is `_Unwind_Control_Block`.  Apply the explicit maximal alignment on the
type to ensure that the allocation has the correct alignment.

Resolves PR33858!


Modified: libunwind/trunk/include/unwind.h
URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/include/unwind.h?rev=311562&r1=311561&r2=311562&view=diff
--- libunwind/trunk/include/unwind.h (original)
+++ libunwind/trunk/include/unwind.h Wed Aug 23 08:33:45 2017
@@ -100,7 +100,7 @@ struct _Unwind_Control_Block {
   } pr_cache;
   long long int :0; /* Enforce the 8-byte alignment */
+} __attribute__((__aligned__));
 typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
       (_Unwind_State state,

More information about the cfe-commits mailing list