Dave Martin has recently posted a kernel patch set for supporting ARMv8.5 Branch Target Identification in userland.
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-May/654654.html While that support is not yet in the upstream kernel, it looks to be close to its final form. Note that the patch set spells this PROT_BTI_GUARDED, but review suggested to rename to PROT_BTI. Changes since v5: * New function to validate the target PROT parameter for mmap/mprotect. * Require BTI in the cpu for PROT_BTI set. * Set PSTATE.BTYPE=2 for the signal handler. Adjust the smoke test to match. * Tidy up the note parsing. r~ Richard Henderson (6): linux-user/aarch64: Reset btype for syscalls and signals linux-user: Validate mmap/mprotect prot value linux-user: Set PAGE_TARGET_1 for TARGET_PROT_BTI include/elf: Add defines related to notes for GNU systems linux-user: Parse NT_GNU_PROPERTY_TYPE_0 notes tests/tcg/aarch64: Add bti smoke test include/elf.h | 48 ++++++++++++ include/exec/cpu-all.h | 2 + linux-user/syscall_defs.h | 4 + linux-user/aarch64/cpu_loop.c | 7 ++ linux-user/aarch64/signal.c | 10 ++- linux-user/elfload.c | 83 ++++++++++++++++++-- linux-user/mmap.c | 122 ++++++++++++++++++++++-------- target/arm/translate-a64.c | 6 +- tests/tcg/aarch64/bti-1.c | 77 +++++++++++++++++++ tests/tcg/aarch64/bti-crt.inc.c | 69 +++++++++++++++++ tests/tcg/aarch64/Makefile.target | 3 + 11 files changed, 387 insertions(+), 44 deletions(-) create mode 100644 tests/tcg/aarch64/bti-1.c create mode 100644 tests/tcg/aarch64/bti-crt.inc.c -- 2.17.1