aboutsummaryrefslogtreecommitdiff
path: root/libgo/go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2023-06-19 14:57:54 -0700
committerIan Lance Taylor <iant@golang.org>2023-06-20 09:55:58 -0700
commitefecb298d880cda20f8d7bea2d7b500a9752ce56 (patch)
treecb5ff167247485a62c29a27164ea4787bf94d001 /libgo/go
parent0be3a051c03965c5c0385b783837154902bc08fa (diff)
downloadgcc-efecb298d880cda20f8d7bea2d7b500a9752ce56.zip
gcc-efecb298d880cda20f8d7bea2d7b500a9752ce56.tar.gz
gcc-efecb298d880cda20f8d7bea2d7b500a9752ce56.tar.bz2
runtime: use a C function to call mmap
The final argument to mmap, of type off_t, varies. In CL 445375 we changed it to always use the C off_t type, but that broke 32-bit big-endian Linux systems. On those systems, using the C off_t type requires calling the mmap64 function. In C this is automatically handled by the <sys/mman.h> file. In Go, we would have to change the magic //extern comment to call mmap64 when appropriate. Rather than try to get that right, we instead go through a C function that uses C implicit type conversions to pick the right type. Fixes PR go/110297 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/504415
Diffstat (limited to 'libgo/go')
-rw-r--r--libgo/go/runtime/mem_gccgo.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/libgo/go/runtime/mem_gccgo.go b/libgo/go/runtime/mem_gccgo.go
index 1e84f4f..e7b51ff 100644
--- a/libgo/go/runtime/mem_gccgo.go
+++ b/libgo/go/runtime/mem_gccgo.go
@@ -14,8 +14,8 @@ import (
//go:linkname sysAlloc
//go:linkname sysFree
-//extern mmap
-func sysMmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off _libgo_off_t_type) unsafe.Pointer
+//extern __go_mmap
+func sysMmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off uintptr) unsafe.Pointer
//extern munmap
func munmap(addr unsafe.Pointer, length uintptr) int32
@@ -38,7 +38,7 @@ func init() {
}
func mmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off uintptr) (unsafe.Pointer, int) {
- p := sysMmap(addr, n, prot, flags, fd, _libgo_off_t_type(off))
+ p := sysMmap(addr, n, prot, flags, fd, off)
if uintptr(p) == _MAP_FAILED {
return nil, errno()
}