forked from OSchip/llvm-project
[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
This commit is contained in:
parent
8b08fa0103
commit
f34ae1b9de
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue