mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
This set of changes enable support for the ARMv8.1-m PACBTI extensions [1]. The goal of the PACBTI extensions is similar in scope to that of a-profile PAC/BTI (aarch64 only), but the underlying implementation is different. One important difference is that the pointer authentication code is stored in a separate register, thus we don't need to mask/unmask the return address from a function in order to produce a correct backtrace. The patch introduces the following modifications: - Extend the prologue analyser for 32-bit ARM to handle some instructions from ARMv8.1-m PACBTI: pac, aut, pacg, autg and bti. Also keep track of return address signing/authentication instructions. - Adds code to identify object file attributes that indicate the presence of ARMv8.1-m PACBTI (Tag_PAC_extension, Tag_BTI_extension, Tag_PACRET_use and Tag_BTI_use). - Adds support for DWARF pseudo-register RA_AUTH_CODE, as described in the aadwarf32 [2]. - Extends the dwarf unwinder to track the value of RA_AUTH_CODE. - Decorates backtraces with the "[PAC]" identifier when a frame has signed the return address. - Makes GDB aware of a new XML feature "org.gnu.gdb.arm.m-profile-pacbti". This feature is not included as an XML file on GDB's side because it is only supported for bare metal targets. - Additional documentation. [1] https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension [2] https://github.com/ARM-software/abi-aa/blob/main/aadwarf32/aadwarf32.rst |
||
---|---|---|
.. | ||
aarch32.c | ||
aarch32.h | ||
aarch64-insn.c | ||
aarch64-insn.h | ||
aarch64-mte-linux.c | ||
aarch64-mte-linux.h | ||
aarch64.c | ||
aarch64.h | ||
amd64.c | ||
amd64.h | ||
arc.c | ||
arc.h | ||
arm-get-next-pcs.c | ||
arm-get-next-pcs.h | ||
arm-linux.c | ||
arm-linux.h | ||
arm.c | ||
arm.h | ||
i386.c | ||
i386.h | ||
loongarch.c | ||
loongarch.h | ||
ppc-linux-common.c | ||
ppc-linux-common.h | ||
ppc-linux-tdesc.h | ||
riscv.c | ||
riscv.h | ||
tic6x.c | ||
tic6x.h | ||
xtensa.h |