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

Ahmed Bougacha via All-commits all-commits at lists.llvm.org
Mon Feb 12 09:49:24 PST 2024


  Branch: refs/heads/users/ahmedbougacha/ptrauth-call-bundles
  Home:   https://github.com/llvm/llvm-project
  Commit: de38592522c2d8af6845857f4d7e363c4aaa5723
      https://github.com/llvm/llvm-project/commit/de38592522c2d8af6845857f4d7e363c4aaa5723
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-02-12 (Mon, 12 Feb 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: 80b05e7cda461a3fd32eb53227989f79622d4b72
      https://github.com/llvm/llvm-project/commit/80b05e7cda461a3fd32eb53227989f79622d4b72
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-02-12 (Mon, 12 Feb 2024)

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

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


  Commit: 251086cbf63ccdfd990023665667d367c7393c60
      https://github.com/llvm/llvm-project/commit/251086cbf63ccdfd990023665667d367c7393c60
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-02-12 (Mon, 12 Feb 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.


  Commit: ba334a1ba83977a0753d24a3e678b15e3f67e163
      https://github.com/llvm/llvm-project/commit/ba334a1ba83977a0753d24a3e678b15e3f67e163
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-02-12 (Mon, 12 Feb 2024)

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

  Log Message:
  -----------
  [AArch64] Adopt x8+ allocation order for GPR64noip.

73078ecd381 added GPR64noip for hwasan pseudos.
Give it an allocation order that prefers allocating from x8 and up,
to match GPR64: this allows for easier regalloc, as x0-x7 are
likely to be used for parameter passing.


  Commit: c9fea9a4c9e52b1e2375c74fadea8750f82d0870
      https://github.com/llvm/llvm-project/commit/c9fea9a4c9e52b1e2375c74fadea8750f82d0870
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-02-12 (Mon, 12 Feb 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
    M llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
    M llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
    M llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.h
    M llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
    M llvm/lib/Target/AArch64/AArch64InstrInfo.td
    M llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
    M llvm/lib/Target/AArch64/GISel/AArch64GlobalISelUtils.cpp
    A llvm/test/CodeGen/AArch64/GlobalISel/ptrauth-invoke.ll
    M llvm/test/CodeGen/AArch64/branch-target-enforcement-indirect-calls.ll
    A llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll
    A llvm/test/CodeGen/AArch64/ptrauth-call-rv-marker.ll
    A llvm/test/CodeGen/AArch64/ptrauth-call.ll
    A llvm/test/CodeGen/AArch64/ptrauth-invoke.ll

  Log Message:
  -----------
  [AArch64][PAC] Lower authenticated calls with ptrauth bundles.


Compare: https://github.com/llvm/llvm-project/compare/de38592522c2%5E...c9fea9a4c9e5


More information about the All-commits mailing list