mirror of
https://github.com/golang/go
synced 2024-11-19 15:54:46 -07:00
f425f54957
For cgo programs on linux-amd64 we call the C function mmap. This supports programs such as the C memory sanitizer that need to intercept all calls to mmap. It turns out that there are programs that intercept both mmap and munmap, or that at least expect that if they intercept mmap, they also intercept munmap. So, if we permit mmap to be intercepted, also permit munmap to be intercepted. No test, as it requires two odd things: a C program that intercepts mmap and munmap, and a Go program that calls munmap. Change-Id: Iec33f47d59f70dbb7463fd12d30728c24cd4face Reviewed-on: https://go-review.googlesource.com/45016 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Austin Clements <austin@google.com>
23 lines
725 B
Go
23 lines
725 B
Go
// 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.
|
|
|
|
// +build !plan9
|
|
// +build !solaris
|
|
// +build !windows
|
|
// +build !nacl
|
|
// +build !linux !amd64
|
|
|
|
package runtime
|
|
|
|
import "unsafe"
|
|
|
|
// mmap calls the mmap system call. It is implemented in assembly.
|
|
// We only pass the lower 32 bits of file offset to the
|
|
// assembly routine; the higher bits (if required), should be provided
|
|
// by the assembly routine as 0.
|
|
func mmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off uint32) unsafe.Pointer
|
|
|
|
// munmap calls the munmap system call. It is implemented in assembly.
|
|
func munmap(addr unsafe.Pointer, n uintptr)
|