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

Ahmed Bougacha via All-commits all-commits at lists.llvm.org
Mon Mar 18 23:04:21 PDT 2024


  Branch: refs/heads/users/ahmedbougacha/ptrauth-constant
  Home:   https://github.com/llvm/llvm-project
  Commit: aea98844234ea0dadca0bb089afa4d07f8f399b9
      https://github.com/llvm/llvm-project/commit/aea98844234ea0dadca0bb089afa4d07f8f399b9
  Author: Ahmed Bougacha <ahmed at bougacha.org>
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/include/llvm-c/Core.h
    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/BitcodeReader.cpp
    M llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
    M llvm/lib/IR/AsmWriter.cpp
    M llvm/lib/IR/ConstantFold.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/invalid-ptrauth-const6.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.

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