RFR: 8277204: Implement PAC-RET branch protection on Linux/AArch64 [v18]

Andrew Haley aph at openjdk.java.net
Mon Feb 7 15:15:17 UTC 2022


On Mon, 7 Feb 2022 13:43:55 GMT, Alan Hayward <duke at openjdk.java.net> wrote:

>> Tell you what, first put a comment here that says when it should (and therefore, should not) be used. Once it's clear exactly what this is for, thinking of a name maight be easier.
>
> How about extending the existing enter() function: 
> 
> // Enter a new stack frame for the current method.
> // nested:     Indicates a frame has already been entered (and not left) for the current method. 
> void MacroAssembler::enter(bool nested=false) {
>    if (nested) strip()
>    protect()
>    stp()
>    mov()
> }
> 
> This would add an additional bool check for every call of enter() - that's at code generation time, so probably not an issue.

So, `nested` is true iff we are, say, pushing an extra frame for a runtime call in the middle of generated code, but for some mysterious reason the logic is inline instead of being implemented in the obvious way as a stub.

Please do this as:

` MacroAssembler::enter(bool strip_return_address=false)`

and I'll be happy. Please make sure that all calls are commented, as in

`__ enter(/*strip_return_address*/true);`

and I'll be happy.

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

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



More information about the build-dev mailing list