fix(vpsdk): so_call1 的 arg1 改为 rawptr(裸地址用通配指针,避免级数不符误报)

dynlib.so_call1 的 arg1 只是原样交给系统调用的裸地址;原先声明为 t.CPtr(具体类型的
一级指针),调用方传字符串字面量(二级指针)会命中 CastError:
  implicit pointer-to-pointer conversion is forbidden: pointer level differs
  (source level 2 -> target level 1)
改用 rawptr(未定/通配指针,符合既有规则“任一侧 void*/未定(rawptr)允许”)。
This commit is contained in:
TermiNexus committed 2026-10-14 15:57:38 +08:00
1 parent 30f47ca4f4
commit b5f51415ca
1 file changed
+4 -1
+4 -1
View File
@@ -4,5 +4,8 @@ from . import syscall as syscall
def load_so(path: const str) -> uint64:
return syscall._syscall1(uint64(syscall.LOAD_SO), uint64(path))
def so_call1(sym_name: const str, arg1: t.CPtr) -> int:
def so_call1(sym_name: const str, arg1: rawptr) -> int:
# arg1 只是原样交给系统调用的裸地址,故用 rawptr(未定/通配指针)而非 t.CPtr:
# 后者是具体类型的一级指针,调用方传字符串字面量(二级指针)会被判成级数不符
# (CastError: pointer level differs, source level 2 -> target level 1)。
return int(syscall._syscall2(uint64(syscall.SO_CALL1), uint64(sym_name), uint64(arg1)))