mirror of
https://github.com/golang/go
synced 2024-11-18 09:04:49 -07:00
[dev.link] cmd/link: fix mmapping OutBuf on windows
We got the permissions wrong on the mmapped region. Change-Id: Ica6372fd9d9a787ab20a763e5785fb9fb34ff623 Reviewed-on: https://go-review.googlesource.com/c/go/+/226366 Run-TryBot: Jeremy Faller <jeremy@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
1cb582fe02
commit
4ec5e7c50f
30
src/cmd/link/internal/ld/outbuf_test.go
Normal file
30
src/cmd/link/internal/ld/outbuf_test.go
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright 2020 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.
|
||||
|
||||
package ld
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestMMap ensures that we can actually mmap on every supported platform.
|
||||
func TestMMap(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
default:
|
||||
t.Skip("unsupported OS")
|
||||
case "darwin", "dragonfly", "freebsd", "linux", "openbsd", "windows":
|
||||
}
|
||||
filename := "foo.out"
|
||||
ob := NewOutBuf(nil)
|
||||
if err := ob.Open(filename); err != nil {
|
||||
t.Errorf("error opening file: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(filename)
|
||||
defer ob.Close()
|
||||
if err := ob.Mmap(1 << 20); err != nil {
|
||||
t.Errorf("error mmapping file %v", err)
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@ func (out *OutBuf) Mmap(filesize uint64) error {
|
||||
}
|
||||
|
||||
low, high := uint32(filesize), uint32(filesize>>32)
|
||||
fmap, err := syscall.CreateFileMapping(syscall.Handle(out.f.Fd()), nil, syscall.PAGE_READONLY, high, low, nil)
|
||||
fmap, err := syscall.CreateFileMapping(syscall.Handle(out.f.Fd()), nil, syscall.PAGE_READWRITE, high, low, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user