[all-commits] [llvm/llvm-project] c7779d: [IR][AArch64] Add "ptrauth(...)" Constant to repre...

Ahmed Bougacha via All-commits all-commits at lists.llvm.org
Tue May 28 14:54:59 PDT 2024


  Branch: refs/heads/users/ahmedbougacha/ptrauth-constant
  Home:   https://github.com/llvm/llvm-project
  Commit: c7779d04d14fb4756679d5d539a627a5e388e04f
      https://github.com/llvm/llvm-project/commit/c7779d04d14fb4756679d5d539a627a5e388e04f
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-05-28 (Tue, 28 May 2024)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/docs/PointerAuth.md
    M llvm/include/llvm/AsmParser/LLToken.h
    M llvm/include/llvm/Bitcode/LLVMBitCodes.h
    M llvm/include/llvm/IR/Constants.h
    M llvm/include/llvm/IR/Value.def
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/lib/AsmParser/LLLexer.cpp
    M llvm/lib/AsmParser/LLParser.cpp
    M llvm/lib/Bitcode/Reader/BitcodeAnalyzer.cpp
    M llvm/lib/Bitcode/Reader/BitcodeReader.cpp
    M llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
    M llvm/lib/IR/AsmWriter.cpp
    M llvm/lib/IR/Constants.cpp
    M llvm/lib/IR/ConstantsContext.h
    M llvm/lib/IR/LLVMContextImpl.h
    M llvm/lib/IR/Verifier.cpp
    A llvm/test/Assembler/invalid-ptrauth-const1.ll
    A llvm/test/Assembler/invalid-ptrauth-const2.ll
    A llvm/test/Assembler/invalid-ptrauth-const3.ll
    A llvm/test/Assembler/invalid-ptrauth-const4.ll
    A llvm/test/Assembler/invalid-ptrauth-const5.ll
    A llvm/test/Assembler/ptrauth-const.ll
    M llvm/test/Bitcode/compatibility.ll
    M llvm/utils/vim/syntax/llvm.vim

  Log Message:
  -----------
  [IR][AArch64] Add "ptrauth(...)" Constant to represent signed pointers.

This defines a new kind of IR Constant that represents a ptrauth signed
pointer, as used in AArch64 PAuth.

It allows representing most kinds of signed pointer constants used thus
far in the llvm ptrauth implementations, notably those used in the
Darwin and ELF ABIs being implemented for c/c++.  These signed pointer
constants are then lowered to ELF/MachO relocations.

These can be simply thought of as a constant `llvm.ptrauth.sign`, with
the interesting addition of discriminator computation: the `ptrauth`
constant can also represent a combined blend, when both address and
integer discriminator operands are used.  Both operands are otherwise
optional, with default values 0/null.

Co-Authored-by: Tim Northover <tnorthover at apple.com>



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