[clang] [llvm] [AArch64][PAC] Sign block addresses used in indirectbr. (PR #97647)
Daniil Kovalev via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 8 03:50:26 PDT 2024
================
@@ -412,6 +412,15 @@ class AArch64Subtarget final : public AArch64GenSubtargetInfo {
/// Choose a method of checking LR before performing a tail call.
AArch64PAuth::AuthCheckMethod getAuthenticatedLRCheckMethod() const;
+ /// Compute the integer discriminator for a given BlockAddress constant, if
+ /// blockaddress signing is enabled (using function attribute
+ /// "ptrauth-indirect-gotos").
----------------
kovdan01 wrote:
Nit: it might be worth explicitly saying that `std::nullopt` return value stands for disabled indirect gotos signing: someone might mistakenly think that `std::nullopt` might indicate absent discriminator (say, zero discr by default) with signing enabled.
Alternatively, you might consider adding a separate function for determining presence of "ptrauth-indirect-gotos" attribute and use just `uint16_t` as a return value for `getPtrAuthBlockAddressDiscriminator` (with an assertion inserted against presence of "ptrauth-indirect-gotos"). A drawback of such approach is that we might occasionally forget to check if indirect gotos are signed before calling get discr function, but a benefit is that function names will be more expressive IMHO - `getPtrAuthBlockAddressDiscriminator` will only get the discriminator and it'll not have a responsibility to check if the signing is enabled.
Feel free to ignore.
https://github.com/llvm/llvm-project/pull/97647
More information about the cfe-commits
mailing list