D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
3206095
/
root
/
opt
/
golang
/
1.22.0
/
src
/
runtime
/
Filename :
msan.go
back
Copy
// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build msan package runtime import ( "unsafe" ) // Public memory sanitizer API. func MSanRead(addr unsafe.Pointer, len int) { msanread(addr, uintptr(len)) } func MSanWrite(addr unsafe.Pointer, len int) { msanwrite(addr, uintptr(len)) } // Private interface for the runtime. const msanenabled = true // If we are running on the system stack, the C program may have // marked part of that stack as uninitialized. We don't instrument // the runtime, but operations like a slice copy can call msanread // anyhow for values on the stack. Just ignore msanread when running // on the system stack. The other msan functions are fine. // //go:nosplit func msanread(addr unsafe.Pointer, sz uintptr) { gp := getg() if gp == nil || gp.m == nil || gp == gp.m.g0 || gp == gp.m.gsignal { return } domsanread(addr, sz) } //go:noescape func domsanread(addr unsafe.Pointer, sz uintptr) //go:noescape func msanwrite(addr unsafe.Pointer, sz uintptr) //go:noescape func msanmalloc(addr unsafe.Pointer, sz uintptr) //go:noescape func msanfree(addr unsafe.Pointer, sz uintptr) //go:noescape func msanmove(dst, src unsafe.Pointer, sz uintptr) // These are called from msan_GOARCH.s // //go:cgo_import_static __msan_read_go //go:cgo_import_static __msan_write_go //go:cgo_import_static __msan_malloc_go //go:cgo_import_static __msan_free_go //go:cgo_import_static __msan_memmove