mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-19 14:44:39 +00:00
ARM: explicitly specify the 8-byte alignment
It seems that GCC interprets `__attribute__((__aligned__))` as 8-byte alignment on ARM, but clang does not. Explicitly specify the double-word alignment value to ensure that the structure is properly aligned. llvm-svn: 311574
This commit is contained in:
parent
853a8d9ffc
commit
f8774f1d73
@ -100,7 +100,7 @@ struct _Unwind_Control_Block {
|
||||
} pr_cache;
|
||||
|
||||
long long int :0; /* Enforce the 8-byte alignment */
|
||||
} __attribute__((__aligned__));
|
||||
} __attribute__((__aligned__(8)));
|
||||
|
||||
typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
|
||||
(_Unwind_State state,
|
||||
|
@ -13,8 +13,16 @@
|
||||
|
||||
#include <unwind.h>
|
||||
|
||||
struct MaxAligned {} __attribute__((aligned));
|
||||
static_assert(alignof(_Unwind_Exception) == alignof(MaxAligned), "");
|
||||
// EHABI : 8-byte aligned
|
||||
// itanium: largest supported alignment for the system
|
||||
#if defined(_LIBUNWIND_ARM_EHABI)
|
||||
static_assert(alignof(_Unwind_Control_Block) == 8,
|
||||
"_Unwind_Control_Block must be double-word aligned");
|
||||
#else
|
||||
struct MaxAligned {} __attribute__((__aligned__));
|
||||
static_assert(alignof(_Unwind_Exception) == alignof(MaxAligned),
|
||||
"_Unwind_Exception must be maximally aligned");
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user