PING.
soe...@soeren-tempel.net wrote: > From: Sören Tempel <soe...@soeren-tempel.net> > > On glibc-based systems, off_t is a 32-bit type on 32-bit systems and a > 64-bit type on 64-bit systems by default. However, on systems using musl > libc off_t is unconditionally a 64-bit type. As such, it is insufficient > to use a uintptr type for the mmap offset parameter. > > Presently, the (incorrect) mmap declaration causes a libgo run-time > failure on 32-bit musl systems (fatal error: runtime: cannot allocate > memory). This commit fixes this run-time error. > > Signed-off-by: Sören Tempel <soe...@soeren-tempel.net> > --- > This implements what has been proposed by Ian in a GitHub comment > https://github.com/golang/go/issues/51280#issuecomment-1046322011 > > I don't have access to a 32-bit glibc system to test this on but > this does seem to work fine on 32-bit and 64-bit musl systems. > > libgo/go/runtime/mem_gccgo.go | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libgo/go/runtime/mem_gccgo.go b/libgo/go/runtime/mem_gccgo.go > index fa3389d8..07bf325a 100644 > --- a/libgo/go/runtime/mem_gccgo.go > +++ b/libgo/go/runtime/mem_gccgo.go > @@ -15,7 +15,7 @@ import ( > //go:linkname sysFree > > //extern mmap > -func sysMmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off > uintptr) unsafe.Pointer > +func sysMmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off > _off_t) 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, off) > + p := sysMmap(addr, n, prot, flags, fd, _off_t(off)) > if uintptr(p) == _MAP_FAILED { > return nil, errno() > }