[llvm-branch-commits] [clang] [clang] Define ptrauth_sign_constant builtin. (PR #93904)

Eli Friedman via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Jun 3 15:38:25 PDT 2024


================
@@ -354,6 +354,23 @@ Given that ``signedPointer`` matches the layout for signed pointers signed with
 the given key, extract the raw pointer from it.  This operation does not trap
 and cannot fail, even if the pointer is not validly signed.
 
+``ptrauth_sign_constant``
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: c
+
+  ptrauth_sign_constant(pointer, key, discriminator)
+
+Return a signed pointer for a constant address in a manner which guarantees
+a non-attackable sequence.
+
+``pointer`` must be a constant expression of pointer type which evaluates to
+a non-null pointer.  The result will have the same type as ``discriminator``.
+
+Calls to this are constant expressions if the discriminator is a null-pointer
+constant expression or an integer constant expression. Implementations may
+allow other pointer expressions as well.
----------------
efriedma-quic wrote:

This seems to imply that if you don't need a constant expression, the discriminator can be a variable.  This doesn't seem to match the implementation, though: it requires a constant discriminator in a specific form.

https://github.com/llvm/llvm-project/pull/93904


More information about the llvm-branch-commits mailing list