[libunwind] f34ae1b - [AArch64] Add v8.5 Branch Target Identification support.
Daniel Kiss via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 29 06:51:10 PDT 2020
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)
More information about the cfe-commits
mailing list