fix(verify): arm64 stack save, adaptive canary and host gating
Assisted-by: GLM 5.3
This commit is contained in:
+5
-3
@@ -36,7 +36,8 @@ DATA ·leaveCheckedPtr(SB)/8, $·leaveJITCheckedRaw(SB)
|
||||
TEXT ·enterJITChecked(SB), NOSPLIT, $0-16
|
||||
MOVD fn+0(FP), R0 // target (before SP switch)
|
||||
MOVD R30, savedLR(SB) // save link register
|
||||
MOVD R3, savedSP(SB) // save Go stack pointer
|
||||
MOVD RSP, R3 // save Go stack pointer: R3 relays the value, the
|
||||
MOVD R3, savedSP(SB) // arm64 assembler cannot store RSP to memory
|
||||
MOVD R29, savedFP(SB) // save frame pointer (vet requires save before clobber)
|
||||
MOVD g, savedG(SB) // save g
|
||||
MOVD $SENTINEL_FP, R29 // sentinel in the frame pointer
|
||||
@@ -85,8 +86,9 @@ restore:
|
||||
|
||||
// Package-level storage for the saved frame pointer. Like savedSP and
|
||||
// savedLR in trampoline_arm64.s, this is assembly-side state: the amd64
|
||||
// checked trampoline saves the caller's frame pointer for vet's sake and
|
||||
// never restores it, and this file mirrors that.
|
||||
// checked trampoline saves and restores the caller's frame pointer too
|
||||
// (leaveJITCheckedRaw restores BP before returning), and this file mirrors
|
||||
// that.
|
||||
GLOBL savedFP(SB), NOPTR, $8
|
||||
|
||||
GLOBL savedG(SB), NOPTR, $8
|
||||
|
||||
Reference in New Issue
Block a user