Re: 64-bit int not being aligned in 32-bit ARM, causing crash
Re: 64-bit int not being aligned in 32-bit ARM, causing crash
- Subject: Re: 64-bit int not being aligned in 32-bit ARM, causing crash
- From: Jonas Maebe <email@hidden>
- Date: Wed, 11 Mar 2015 11:26:27 +0100
On 11 Mar 2015, at 11:23, Roland King wrote:
On 11 Mar 2015, at 18:13, Jonas Maebe <email@hidden>
wrote:
On 06 Mar 2015, at 02:50, Jens Alfke wrote:
Shouldn’t C alignment rules dictate that the ‘value’ union and the
surrounding ‘atomic_val_t’ type be 8-byte-aligned, since they
contain a 64-bit integer?
Alignment rules are not dictated by the programming language, but
by the ABI. The ARM ABI, and also Apple's variant, says that 64 bit
integers are only guaranteed 4 byte alignment: https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html
If that's true, and read it too, the the compiler shouldn't be
emitting a double word load which requires 8-byte alignment on a
platform which doesn't guarantee it.
The compiler will, under normal circumstances, never by itself emit an
atomic 64 bit load. My guess is that Jens is passing the address of
that field to a function that is hardcoded (possibly using inline
assembly) to perform a 64 bit atomic load.
Jonas
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden