Work-around libffi's FP ABI detection.
On iOS, we must use the AAPCS floating point return value calling conventions. libffi's ARM implementation will only use these conventions if __SOFTFP__ is defined, which is not the case when GCC's -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this we manually define __SOFTFP__ for Apple platforms in the ARM-specific sysv.S. See also: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf
This commit is contained in:
@@ -34,6 +34,12 @@
|
|||||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||||
#define CONCAT2(a, b) a ## b
|
#define CONCAT2(a, b) a ## b
|
||||||
|
|
||||||
|
/* Use the SOFTFP return value ABI on Mac OS X, as per the iOS ABI
|
||||||
|
Function Call Guide */
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#define __SOFTFP__
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Use the right prefix for global labels. */
|
/* Use the right prefix for global labels. */
|
||||||
#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user