hack: reserve stack on JIT call

This commit is contained in:
DataHoarder 2024-04-17 09:37:28 +02:00
parent 1ce9bff7d3
commit b35751462b
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

View file

@ -4,6 +4,7 @@ package randomx
import (
"golang.org/x/sys/unix"
"runtime"
"unsafe"
)
@ -11,10 +12,20 @@ func (f ProgramFunc) Execute(rl *RegisterLine) {
if f == nil {
panic("program is nil")
}
var reservedStackHack [8 * 8]byte
for i := range reservedStackHack {
reservedStackHack[i] = uint8(i)
}
memoryPtr := &f
fun := *(*func(rl *RegisterLine))(unsafe.Pointer(&memoryPtr))
fun(rl)
for i := range reservedStackHack {
reservedStackHack[i] = uint8(-i)
}
runtime.KeepAlive(reservedStackHack)
}
func (f ProgramFunc) Close() error {