RFR: 8266749: AArch64: Backtracing broken on PAC enabled systems [v6]

Andrew Haley aph at openjdk.java.net
Wed Jun 2 15:55:37 UTC 2021


On Wed, 2 Jun 2021 14:46:26 GMT, Alan Hayward <github.com+4146708+a74nh at openjdk.org> wrote:

>> Ah, yes, because the name pauth_ptr_is_raw() now clashes with sender_pc_raw().
>> 
>> I'll fix up, one way or the other. Don't really want to call it pauth_ptr_is_unsigned() or pauth_ptr_is_authenticated(), because they seem to imply different things at first glance.
>
> raw is generally accepted as the correct name for a pointer that has not been signed (or has been authenticated/stripped). 
> For example see: https://github.com/apple/llvm-project/blob/a63a81bd9911f87a0b5dcd5bdd7ccdda7124af87/clang/docs/PointerAuthentication.rst#basic-concepts
> 
> So, pauth_ptr_is_raw() is the correct name.
> 
> But, now what to rename sender_pc_raw() to ?  :)
> The PAC coder would say:
>    inline address  frame::sender_pc()       const { return *sender_pc_addr(); }
>    inline address  frame::sender_pc_authenticated()           const { return pauth_strip_pointer(sender_pc()); }
> But that's not right here for a common interface.
> 
> How about:
>    inline address  frame::stored_sender_pc()       const { return *sender_pc_addr(); }
>    inline address  frame::sender_pc()           const { return pauth_strip_pointer(stored_sender_pc()); }

Off the top of my head, I would have thought that it makes the most sense to use Arm's terminology, which is "signed pointer". So, that'd be `frame::signed_sender_pc()` or `frame::maybe_signed_sender_pc()`.

-------------

PR: https://git.openjdk.java.net/jdk/pull/4029


More information about the hotspot-dev mailing list