#define GCC_ASM_IMPORT(func__) \\r
.extern _CONCATENATE (__USER_LABEL_PREFIX__, func__)\r
\r
+ #if defined (__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1\r
+#define AARCH64_BTI_NOTE() \\r
+ .ifndef .Lgnu_bti_notesize ;\\r
+ .pushsection .note.gnu.property, "a" ;\\r
+ .set NT_GNU_PROPERTY_TYPE_0, 0x5 ;\\r
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000 ;\\r
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, 0x1 ;\\r
+ .align 3 ;\\r
+ .long .Lnamesize ;\\r
+ .long .Lgnu_bti_notesize ;\\r
+ .long NT_GNU_PROPERTY_TYPE_0 ;\\r
+0: .asciz "GNU" ;\\r
+ .set .Lnamesize, . - 0b ;\\r
+ .align 3 ;\\r
+1: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND ;\\r
+ .long .Lvalsize ;\\r
+2: .long GNU_PROPERTY_AARCH64_FEATURE_1_BTI ;\\r
+ .set .Lvalsize, . - 2b ;\\r
+ .align 3 ;\\r
+ .set .Lgnu_bti_notesize, . - 1b ;\\r
+ .popsection ;\\r
+ .endif\r
+\r
+#define AARCH64_BTI(__type) \\r
+ AARCH64_BTI_NOTE() ;\\r
+ bti __type\r
+\r
+ #endif\r
+\r
+#endif\r
+\r
+#ifndef AARCH64_BTI\r
+#define AARCH64_BTI_NOTE()\r
+#define AARCH64_BTI(__type)\r
#endif\r
\r
/**\r