sealevel: more log syscalls
This commit is contained in:
parent
5d11c3c465
commit
713f6eeec3
|
@ -32,6 +32,6 @@
|
|||
"ProgramID": "11111111111111111111111111111111"
|
||||
},
|
||||
"Logs": [
|
||||
"Instruction: InitializeMint"
|
||||
"Program log: Instruction: InitializeMint"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ func Syscalls() sbf.SyscallRegistry {
|
|||
reg.Register("abort", SyscallAbort)
|
||||
reg.Register("sol_log_", SyscallLog)
|
||||
reg.Register("sol_log_64_", SyscallLog64)
|
||||
reg.Register("sol_log_compute_uits_", SyscallLogCUs)
|
||||
reg.Register("sol_log_pubkey", SyscallLogPubkey)
|
||||
return reg
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
|
||||
"github.com/certusone/radiance/pkg/sbf"
|
||||
"github.com/certusone/radiance/pkg/sbf/cu"
|
||||
"github.com/gagliardetto/solana-go"
|
||||
)
|
||||
|
||||
func SyscallLogImpl(vm sbf.VM, ptr, strlen uint64, cuIn int) (r0 uint64, cuOut int, err error) {
|
||||
|
@ -21,7 +22,7 @@ func SyscallLogImpl(vm sbf.VM, ptr, strlen uint64, cuIn int) (r0 uint64, cuOut i
|
|||
if err = vm.Read(ptr, buf); err != nil {
|
||||
return
|
||||
}
|
||||
syscallCtx(vm).Log.Log(string(buf))
|
||||
syscallCtx(vm).Log.Log("Program log: " + string(buf))
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -33,9 +34,40 @@ func SyscallLog64Impl(vm sbf.VM, r1, r2, r3, r4, r5 uint64, cuIn int) (r0 uint64
|
|||
return
|
||||
}
|
||||
|
||||
msg := fmt.Sprintf("%#x, %#x, %#x, %#x, %#x\n", r1, r2, r3, r4, r5)
|
||||
msg := fmt.Sprintf("Program log: %#x, %#x, %#x, %#x, %#x\n", r1, r2, r3, r4, r5)
|
||||
syscallCtx(vm).Log.Log(msg)
|
||||
return
|
||||
}
|
||||
|
||||
var SyscallLog64 = sbf.SyscallFunc5(SyscallLog64Impl)
|
||||
|
||||
func SyscallLogCUsImpl(vm sbf.VM, cuIn int) (r0 uint64, cuOut int, err error) {
|
||||
cuOut = cuIn - CUSyscallBaseCost
|
||||
if cuOut < 0 {
|
||||
return
|
||||
}
|
||||
|
||||
msg := fmt.Sprintf("Program consumption: %d units remaining", cuIn)
|
||||
syscallCtx(vm).Log.Log(msg)
|
||||
return
|
||||
}
|
||||
|
||||
var SyscallLogCUs = sbf.SyscallFunc0(SyscallLogCUsImpl)
|
||||
|
||||
func SyscallLogPubkeyImpl(vm sbf.VM, pubkeyAddr uint64, cuIn int) (r0 uint64, cuOut int, err error) {
|
||||
cuOut = cuIn - CUSyscallBaseCost
|
||||
if cuOut < 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// TODO alignment check
|
||||
var pubkey solana.PublicKey
|
||||
if err = vm.Read(pubkeyAddr, pubkey[:]); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
syscallCtx(vm).Log.Log("Program log: " + pubkey.String())
|
||||
return
|
||||
}
|
||||
|
||||
var SyscallLogPubkey = sbf.SyscallFunc1(SyscallLogPubkeyImpl)
|
||||
|
|
Loading…
Reference in New Issue