Author: Daniel Kiss Date: 2020-09-29T15:51:01+02:00 New Revision: f34ae1b9de68152de037fd3e394d196b997c4296
URL: https://github.com/llvm/llvm-project/commit/f34ae1b9de68152de037fd3e394d196b997c4296 DIFF: https://github.com/llvm/llvm-project/commit/f34ae1b9de68152de037fd3e394d196b997c4296.diff LOG: [AArch64] Add v8.5 Branch Target Identification support. The .note.gnu.property must be in the assembly file to indicate the support for BTI otherwise BTI will be disabled for the whole library. __unw_getcontext and libunwind::Registers_arm64::jumpto() may be called indirectly therefore they should start with a landing pad. Reviewed By: tamas.petz, #libunwind, compnerd Differential Revision: https://reviews.llvm.org/D77786 Added: Modified: libunwind/src/assembly.h Removed: ################################################################################ diff --git a/libunwind/src/assembly.h b/libunwind/src/assembly.h index 4cf179e13edc..3b1e6e6d01d7 100644 --- a/libunwind/src/assembly.h +++ b/libunwind/src/assembly.h @@ -48,6 +48,24 @@ #define PPC64_OPD2 #endif +#if 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 \ + .long 0xc0000000 SEPARATOR /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ \ + .long 4 SEPARATOR \ + .long 3 SEPARATOR /* GNU_PROPERTY_AARCH64_FEATURE_1_BTI AND */ \ + /* GNU_PROPERTY_AARCH64_FEATURE_1_PAC */ \ + .long 0 SEPARATOR \ + .popsection SEPARATOR +#define AARCH64_BTI bti c +#else +#define AARCH64_BTI +#endif + #define GLUE2(a, b) a ## b #define GLUE(a, b) GLUE2(a, b) #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name) @@ -144,7 +162,8 @@ SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ PPC64_OPD1 \ SYMBOL_NAME(name): \ - PPC64_OPD2 + PPC64_OPD2 \ + AARCH64_BTI #if defined(__arm__) #if !defined(__ARM_ARCH) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits