https://github.com/pcc updated https://github.com/llvm/llvm-project/pull/133537

>From e728f3444624a5f47f0af84c21fb3a584f3e05b7 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <p...@google.com>
Date: Fri, 1 Aug 2025 17:27:41 -0700
Subject: [PATCH 1/4] Add verifier check

Created using spr 1.3.6-beta.1
---
 llvm/lib/IR/Verifier.cpp               | 5 +++++
 llvm/test/Verifier/ptrauth-constant.ll | 6 ++++++
 2 files changed, 11 insertions(+)
 create mode 100644 llvm/test/Verifier/ptrauth-constant.ll

diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 3ff9895e161c4..3478c2c450ae7 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -2627,6 +2627,11 @@ void Verifier::visitConstantPtrAuth(const 
ConstantPtrAuth *CPA) {
 
   Check(CPA->getDiscriminator()->getBitWidth() == 64,
         "signed ptrauth constant discriminator must be i64 constant integer");
+
+  Check(isa<GlobalValue>(CPA->getDeactivationSymbol()) ||
+            CPA->getDeactivationSymbol()->isNullValue(),
+        "signed ptrauth constant deactivation symbol must be a global value "
+        "or null");
 }
 
 bool Verifier::verifyAttributeCount(AttributeList Attrs, unsigned Params) {
diff --git a/llvm/test/Verifier/ptrauth-constant.ll 
b/llvm/test/Verifier/ptrauth-constant.ll
new file mode 100644
index 0000000000000..fdd6352cf8469
--- /dev/null
+++ b/llvm/test/Verifier/ptrauth-constant.ll
@@ -0,0 +1,6 @@
+; RUN: not opt -passes=verify < %s 2>&1 | FileCheck %s
+
+@g = external global i8
+
+; CHECK: signed ptrauth constant deactivation symbol must be a global variable 
or null
+@ptr = global ptr ptrauth (ptr @g, i32 0, i64 65535, ptr null, ptr inttoptr 
(i64 16 to ptr))

>From 60e836e71bf9aabe9dade2bda1ca38107f76b599 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <p...@google.com>
Date: Mon, 8 Sep 2025 17:34:59 -0700
Subject: [PATCH 2/4] Address review comment

Created using spr 1.3.6-beta.1
---
 llvm/lib/IR/Constants.cpp                     | 1 +
 llvm/test/Assembler/invalid-ptrauth-const6.ll | 6 ++++++
 2 files changed, 7 insertions(+)
 create mode 100644 llvm/test/Assembler/invalid-ptrauth-const6.ll

diff --git a/llvm/lib/IR/Constants.cpp b/llvm/lib/IR/Constants.cpp
index 5eacc7af1269b..53b292f90c03d 100644
--- a/llvm/lib/IR/Constants.cpp
+++ b/llvm/lib/IR/Constants.cpp
@@ -2082,6 +2082,7 @@ ConstantPtrAuth::ConstantPtrAuth(Constant *Ptr, 
ConstantInt *Key,
   assert(Key->getBitWidth() == 32);
   assert(Disc->getBitWidth() == 64);
   assert(AddrDisc->getType()->isPointerTy());
+  assert(DeactivationSymbol->getType()->isPointerTy());
   setOperand(0, Ptr);
   setOperand(1, Key);
   setOperand(2, Disc);
diff --git a/llvm/test/Assembler/invalid-ptrauth-const6.ll 
b/llvm/test/Assembler/invalid-ptrauth-const6.ll
new file mode 100644
index 0000000000000..6e8e1d386acc8
--- /dev/null
+++ b/llvm/test/Assembler/invalid-ptrauth-const6.ll
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s 2>&1 | FileCheck %s
+
+@var = global i32 0
+
+; CHECK: error: constant ptrauth deactivation symbol must be a pointer
+@ptr = global ptr ptrauth (ptr @var, i32 0, i64 65535, ptr null, i64 0)

>From a780d181fa69236d5909759a24a1134b50313980 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <p...@google.com>
Date: Tue, 9 Sep 2025 17:18:49 -0700
Subject: [PATCH 3/4] Address review comment

Created using spr 1.3.6-beta.1
---
 llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 3 +++
 llvm/lib/IR/Verifier.cpp                  | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp 
b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 045ed204620fb..04fe4c57af6ed 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1613,6 +1613,9 @@ Expected<Value *> 
BitcodeReader::materializeValue(unsigned StartValID,
               ConstOps.size() > 4 ? ConstOps[4]
                                   : ConstantPointerNull::get(cast<PointerType>(
                                         ConstOps[3]->getType()));
+          if (DeactivationSymbol->getType()->isPointerTy())
+            return error(
+                "ptrauth deactivation symbol operand must be a pointer");
 
           C = ConstantPtrAuth::get(ConstOps[0], Key, Disc, ConstOps[3],
                                    DeactivationSymbol);
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 9e44dfb387615..a53ba17e26011 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -2632,6 +2632,9 @@ void Verifier::visitConstantPtrAuth(const ConstantPtrAuth 
*CPA) {
   Check(CPA->getDiscriminator()->getBitWidth() == 64,
         "signed ptrauth constant discriminator must be i64 constant integer");
 
+  Check(CPA->getDeactivationSymbol()->getType()->isPointerTy(),
+        "signed ptrauth constant deactivation symbol must be a pointer");
+
   Check(isa<GlobalValue>(CPA->getDeactivationSymbol()) ||
             CPA->getDeactivationSymbol()->isNullValue(),
         "signed ptrauth constant deactivation symbol must be a global value "

>From 51c353bbde24f940e3dfd7488aec0682dbef260b Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <p...@google.com>
Date: Tue, 9 Sep 2025 17:21:45 -0700
Subject: [PATCH 4/4] Fix

Created using spr 1.3.6-beta.1
---
 llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp 
b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 04fe4c57af6ed..a7fce4f2d504c 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1613,7 +1613,7 @@ Expected<Value *> 
BitcodeReader::materializeValue(unsigned StartValID,
               ConstOps.size() > 4 ? ConstOps[4]
                                   : ConstantPointerNull::get(cast<PointerType>(
                                         ConstOps[3]->getType()));
-          if (DeactivationSymbol->getType()->isPointerTy())
+          if (!DeactivationSymbol->getType()->isPointerTy())
             return error(
                 "ptrauth deactivation symbol operand must be a pointer");
 

_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to