[all-commits] [llvm/llvm-project] 735111: [AArch64][PAC] Lower auth/resign into checked sequ...

Ahmed Bougacha via All-commits all-commits at lists.llvm.org
Mon Mar 18 22:26:28 PDT 2024


  Branch: refs/heads/users/abougacha/ptrauth-auth-resign-isel
  Home:   https://github.com/llvm/llvm-project
  Commit: 735111d2988d0582c058e337df1861a562e03f3a
      https://github.com/llvm/llvm-project/commit/735111d2988d0582c058e337df1861a562e03f3a
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
    M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
    M llvm/lib/Target/AArch64/AArch64InstrInfo.td
    M llvm/lib/Target/AArch64/GISel/AArch64GlobalISelUtils.cpp
    M llvm/lib/Target/AArch64/GISel/AArch64GlobalISelUtils.h
    M llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
    A llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll
    A llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll

  Log Message:
  -----------
  [AArch64][PAC] Lower auth/resign into checked sequence.

This introduces 3 hardening modes in the authentication step of
auth/resign lowering:
- unchecked, which uses the AUT instructions as-is
- poison, which detects authentication failure (using an XPAC+CMP
  sequence), explicitly yielding the XPAC result rather than the
  AUT result, to avoid leaking
- trap, which additionally traps on authentication failure,
  using BRK #0xC470 + key (IA C470, IB C471, DA C472, DB C473.)

Not all modes are necessarily useful in all contexts, and there
are more performant alternative lowerings in specific contexts
(e.g., when I/D TBI enablement is a target ABI guarantee.)

This is controlled by the `ptrauth-auth-traps` function attributes,
and can be overridden using `-aarch64-ptrauth-auth-checks=`.


  Commit: 5d7cd2c4e48700f7a080affa94f4dea3ded8d02d
      https://github.com/llvm/llvm-project/commit/5d7cd2c4e48700f7a080affa94f4dea3ded8d02d
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64.td
    M llvm/lib/Target/AArch64/AArch64InstrInfo.td

  Log Message:
  -----------
  [AArch64] Add FPAC feature.


  Commit: de7afdad0e6e38d666f9516e74caeb954a9013f0
      https://github.com/llvm/llvm-project/commit/de7afdad0e6e38d666f9516e74caeb954a9013f0
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
    A llvm/test/CodeGen/AArch64/ptrauth-fpac.ll

  Log Message:
  -----------
  [AArch64][PAC] Don't emit auth/resign checks when targeting FPAC.

When the FPAC feature is present, we can rely on its faulting
behavior to avoid emitting the expensive authentication failure
check sequence ourvelves.  In which case we emit the same
sequence as a plain unchecked auth/resign.


Compare: https://github.com/llvm/llvm-project/compare/735111d2988d%5E...de7afdad0e6e

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list