Hi Steve,

On Mon, 2024-08-26 at 11:52 +0100, Steve Capper wrote:
> Hello,
> This series enables Pointer Authentication (PAC) support in elfutils.
> 
> The first three patches were originally posted by German Gomez. I've
> rewritten a new patch to extend the dwfl_thread_state_registers function
> to handle the PAC mask and added an extra patch that was required to
> debug core dumps from PAC enabled applications.
> 
> These patches were tested on Debian Testing and Fedora 40 running on an
> Apple M1 MacBook Pro (the CFLAG -mbranch-protection=standard needs to be
> supplied to the build).
> 
> Without this series applied, the following tests failed:
>  * run-backtrace-native.sh
>  * run-backtrace-dwarf.sh
>  * run-backtrace-native-core.sh
>  * run-deleted.sh
> 
> I am happy to chop/change bits as necessary. 
> 
> A guide to pointer authentication can be found here:
> https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/Learn%20the%20Architecture/Providing%20protection%20for%20complex%20software.pdf
> 
> Changed in V2:
>  * moved DW_AARCH64_RA_SIGN_STATE to cfi.h,
>  * dwfl_thread_state_aarch64_pauth API dropped,
>    (using dwfl_thread_state_registers instead)
>  * AArch64 #ifdefs removed, ptrace logic for PAC consolidated into
>    aarch64_initreg.c

Very nice. This addresses all my concerns. I looked over all 5 patches
and pushed them. The only thing I am concerned about is the usage of
struct user_pac_mask in aarch64_initreg.c. It might not be defined on
older aarch64 systems. Hopefully the buildbot (or some aarch64 user)
will catch that if it really is an issue.

Thanks,

Mark

> Cheers,
> -- 
> Steve
> 
> German Gomez (3):
>   aarch64: Create definitions for AARCH64_RA_SIGN_STATE register
>   libdw, aarch64: Implement DW_CFA_AARCH64_negate_ra_state CFI
>     instruction
>   libdwfl, aarch64: Demangle return addresses using a PAC mask
> 
> Steve Capper (2):
>   libdwfl, aarch64: extend dwfl_thread_state_registers to handle PAC
>   libdwfl, aarch64: Read PAC mask from core
> 
>  backends/aarch64_corenote.c | 17 +++++++++++++++--
>  backends/aarch64_initreg.c  | 12 ++++++++++++
>  backends/aarch64_regs.c     |  5 ++++-
>  libdw/cfi.c                 | 14 +++++++++++++-
>  libdw/cfi.h                 |  5 +++++
>  libdwfl/dwfl_frame.c        |  3 +++
>  libdwfl/dwfl_frame_regs.c   |  6 ++++++
>  libdwfl/frame_unwind.c      | 14 +++++++++++++-
>  libdwfl/libdwflP.h          |  6 ++++++
>  libdwfl/linux-core-attach.c | 34 ++++++++++++++++++++++++++++++++++
>  libdwfl/linux-pid-attach.c  |  9 +++++++--
>  tests/run-addrcfi.sh        |  1 +
>  tests/run-allregs.sh        |  1 +
>  13 files changed, 120 insertions(+), 7 deletions(-)
> 

Reply via email to