diff --git a/common/buf/ptr.go b/common/buf/ptr.go index 92058be27..b025cad70 100644 --- a/common/buf/ptr.go +++ b/common/buf/ptr.go @@ -3,23 +3,28 @@ package buf import ( - "os" + "unsafe" _ "unsafe" ) -//go:linkname parsedebugvars runtime.parsedebugvars -func parsedebugvars() - -func init() { - disableInvalidPtrCheck() +type dbgVar struct { + name string + value *int32 } -func disableInvalidPtrCheck() { - debug := os.Getenv("GODEBUG") - if debug == "" { - os.Setenv("GODEBUG", "invalidptr=0") - } else { - os.Setenv("GODEBUG", debug+",invalidptr=0") +//go:linkname dbgvars runtime.dbgvars +var dbgvars any + +// go.info.runtime.dbgvars: relocation target go.info.[]github.com/sagernet/sing/common/buf.dbgVar not defined +//var dbgvars []dbgVar + +func init() { + debugVars := *(*[]dbgVar)(unsafe.Pointer(&dbgvars)) + for _, v := range debugVars { + if v.name == "invalidptr" { + *v.value = 0 + return + } } - parsedebugvars() + panic("can't disable invalidptr") } diff --git a/common/buf/stub.s b/common/buf/stub.s deleted file mode 100644 index e69de29bb..000000000