+// When compiling with Clang, we still use GNU as for the assembler, so we still\r
+// need to define the GCC_ASM* macros.\r
+#if defined (__GNUC__) || defined (__clang__)\r
+///\r
+/// For GNU assembly code, .global or .globl can declare global symbols.\r
+/// Define this macro to unify the usage.\r
+///\r
+#define ASM_GLOBAL .globl\r
+\r
+ #if !defined (__APPLE__)\r
+///\r
+/// ARM EABI defines that the linker should not manipulate call relocations\r
+/// (do bl/blx conversion) unless the target symbol has function type.\r
+/// CodeSourcery 2010.09 started requiring the .type to function properly\r
+///\r
+#define INTERWORK_FUNC(func__) .type ASM_PFX(func__), %function\r
+\r
+#define GCC_ASM_EXPORT(func__) \\r
+ .global _CONCATENATE (__USER_LABEL_PREFIX__, func__) ;\\r
+ .type ASM_PFX(func__), %function\r
+\r
+#define GCC_ASM_IMPORT(func__) \\r
+ .extern _CONCATENATE (__USER_LABEL_PREFIX__, func__)\r
+\r
+ #else\r
+//\r
+// .type not supported by Apple Xcode tools\r
+//\r
+#define INTERWORK_FUNC(func__)\r
+\r
+#define GCC_ASM_EXPORT(func__) \\r
+ .globl _CONCATENATE (__USER_LABEL_PREFIX__, func__) \\r
+\r
+#define GCC_ASM_IMPORT(name)\r
+\r
+ #endif\r
+#elif defined (_MSC_EXTENSIONS)\r
+//\r
+// PRESERVE8 is not supported by the MSFT assembler.\r
+//\r
+#define PRESERVE8\r