Index: libunwind/src/assembly.h =================================================================== --- libunwind/src/assembly.h +++ libunwind/src/assembly.h @@ -35,17 +35,34 @@ #endif #if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1) -#define PPC64_OPD1 .section .opd,"aw",@progbits SEPARATOR -#define PPC64_OPD2 SEPARATOR \ +#define ARCH_OPD1 .section .opd,"aw",@progbits SEPARATOR +#define ARCH_OPD2 SEPARATOR \ .p2align 3 SEPARATOR \ .quad .Lfunc_begin0 SEPARATOR \ .quad .TOC.@tocbase SEPARATOR \ .quad 0 SEPARATOR \ .text SEPARATOR \ .Lfunc_begin0: +#elif defined(__aarch64__) && defined(__ARM_FEATURE_BTI_DEFAULT) + .pushsection ".note.gnu.property", "a" SEPARATOR \ + .balign 8 SEPARATOR \ + .long 4 SEPARATOR \ + .long 0x10 SEPARATOR \ + .long 0x5 SEPARATOR \ + .asciz "GNU" SEPARATOR \ + /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ \ + .long 0xc0000000 SEPARATOR \ + .long 4 SEPARATOR \ + /* GNU_PROPERTY_AARCH64_FEATURE_1_BTI */\ + /* GNU_PROPERTY_AARCH64_FEATURE_1_PAC */\ + .long 3 SEPARATOR \ + .long 0 SEPARATOR \ + .popsection SEPARATOR +#define ARCH_OPD1 +#define ARCH_OPD2 hint #34 /* bti c */ #else -#define PPC64_OPD1 -#define PPC64_OPD2 +#define ARCH_OPD1 +#define ARCH_OPD2 #endif #define GLUE2(a, b) a ## b @@ -142,9 +159,9 @@ .globl SYMBOL_NAME(name) SEPARATOR \ HIDDEN_SYMBOL(SYMBOL_NAME(name)) SEPARATOR \ SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - PPC64_OPD1 \ + ARCH_OPD1 \ SYMBOL_NAME(name): \ - PPC64_OPD2 + ARCH_OPD2 #if defined(__arm__) #if !defined(__ARM_ARCH)