mirror of
https://github.com/SagerNet/sing.git
synced 2025-04-04 20:37:40 +03:00
34 lines
590 B
Go
34 lines
590 B
Go
//go:build !disable_unsafe && !go1.21
|
|
|
|
package buf
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"github.com/sagernet/sing/common"
|
|
)
|
|
|
|
type dbgVar struct {
|
|
name string
|
|
value *int32
|
|
}
|
|
|
|
//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() {
|
|
if !common.UnsafeBuffer {
|
|
return
|
|
}
|
|
debugVars := *(*[]dbgVar)(unsafe.Pointer(&dbgvars))
|
|
for _, v := range debugVars {
|
|
if v.name == "invalidptr" {
|
|
*v.value = 0
|
|
return
|
|
}
|
|
}
|
|
panic("can't disable invalidptr")
|
|
}
|