The thing is that there's a plethora of defines, and even GCC itself doesn't get it right all the times.
see libffi/src/arm/sysv.S. This is error prone, and maybe Linaro should push something better upstream.
/* We need a better way of testing for this, but for now, this is all
we can do. */
@ This selects the minimum architecture level required.
#define __ARM_ARCH__ 3
The thing is that there's a plethora of defines, and even GCC itself doesn't get it right all the times.
see libffi/ src/arm/ sysv.S. This is error prone, and maybe Linaro should push something better upstream.
/* We need a better way of testing for this, but for now, this is all
we can do. */
@ This selects the minimum architecture level required.
#define __ARM_ARCH__ 3
#if defined( __ARM_ARCH_ 4__) || defined( __ARM_ARCH_ 4T__)
# undef __ARM_ARCH__
# define __ARM_ARCH__ 4
#endif
#if defined( __ARM_ARCH_ 5__) || defined( __ARM_ARCH_ 5T__) \ __ARM_ARCH_ 5E__) || defined( __ARM_ARCH_ 5TE__) \ __ARM_ARCH_ 5TEJ__)
|| defined(
|| defined(
# undef __ARM_ARCH__
# define __ARM_ARCH__ 5
#endif
#if defined( __ARM_ARCH_ 6__) || defined( __ARM_ARCH_ 6J__) \ __ARM_ARCH_ 6K__) || defined( __ARM_ARCH_ 6Z__) \ __ARM_ARCH_ 6ZK__) || defined( __ARM_ARCH_ 6T2__) \ __ARM_ARCH_ 6M__)
|| defined(
|| defined(
|| defined(
# undef __ARM_ARCH__
# define __ARM_ARCH__ 6
#endif
#if defined( __ARM_ARCH_ 7__) || defined( __ARM_ARCH_ 7A__) \ __ARM_ARCH_ 7R__) || defined( __ARM_ARCH_ 7M__) \ __ARM_ARCH_ 7EM__)
|| defined(
|| defined(
# undef __ARM_ARCH__
# define __ARM_ARCH__ 7
#endif