[all-commits] [llvm/llvm-project] c703f8: [IR] Define "ptrauth" operand bundle.

Ahmed Bougacha via All-commits all-commits at lists.llvm.org
Mon Feb 14 11:27:49 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c703f852c9dc7ec92b061889f86b531253f86d70
      https://github.com/llvm/llvm-project/commit/c703f852c9dc7ec92b061889f86b531253f86d70
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2022-02-14 (Mon, 14 Feb 2022)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/docs/PointerAuth.md
    M llvm/include/llvm/IR/InstrTypes.h
    M llvm/include/llvm/IR/LLVMContext.h
    M llvm/lib/IR/Instructions.cpp
    M llvm/lib/IR/LLVMContext.cpp
    M llvm/lib/IR/Verifier.cpp
    M llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
    M llvm/test/Bitcode/operand-bundles-bc-analyzer.ll
    A llvm/test/Transforms/TailCallElim/ptrauth-bundle.ll
    A llvm/test/Verifier/ptrauth-operand-bundles.ll

  Log Message:
  -----------
  [IR] Define "ptrauth" operand bundle.

This introduces a new "ptrauth" operand bundle to be used in
call/invoke. At the IR level, it's semantically equivalent to an
@llvm.ptrauth.auth followed by an indirect call, but it additionally
provides additional hardening, by preventing the intermediate raw
pointer from being exposed.

This mostly adds the IR definition, verifier checks, and support in
a couple of general helper functions. Clang IRGen and backend support
will come separately.

Note that we'll eventually want to support this bundle in indirectbr as
well, for similar reasons.  indirectbr currently doesn't support bundles
at all, and the IR data structures need to be updated to allow that.

Differential Revision: https://reviews.llvm.org/D113685




More information about the All-commits mailing list