mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime, syscall: add calls to asan functions
Add explicit address sanitizer instrumentation to the runtime and syscall packages. The compiler does not instrument the runtime package. It does instrument the syscall package, but we need to add a couple of cases that it can't see. Refer to the implementation of the asan malloc runtime library, this patch also allocates extra memory as the redzone, around the returned memory region, and marks the redzone as unaddressable to detect the overflows or underflows. Updates #44853. Change-Id: I2753d1cc1296935a66bf521e31ce91e35fcdf798 Reviewed-on: https://go-review.googlesource.com/c/go/+/298614 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: fannie zhang <Fannie.Zhang@arm.com>
This commit is contained in:
parent
6f1e9a9c21
commit
6f327f7b88
18 changed files with 200 additions and 3 deletions
|
|
@ -424,6 +424,9 @@ func stackalloc(n uint32) stack {
|
|||
if msanenabled {
|
||||
msanmalloc(v, uintptr(n))
|
||||
}
|
||||
if asanenabled {
|
||||
asanunpoison(v, uintptr(n))
|
||||
}
|
||||
if stackDebug >= 1 {
|
||||
print(" allocated ", v, "\n")
|
||||
}
|
||||
|
|
@ -461,6 +464,9 @@ func stackfree(stk stack) {
|
|||
if msanenabled {
|
||||
msanfree(v, n)
|
||||
}
|
||||
if asanenabled {
|
||||
asanpoison(v, n)
|
||||
}
|
||||
if n < _FixedStack<<_NumStackOrders && n < _StackCacheSize {
|
||||
order := uint8(0)
|
||||
n2 := n
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue