runtime: fix TestPhysPageSize on AIX
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 26 Apr 2019 17:20:55 +0000 (17:20 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 26 Apr 2019 17:20:55 +0000 (17:20 +0000)
    AIX doesn't allow to mmap an address range which is already mmap.
    Therefore, once the region has been allocated, it must munmap before
    being able to play with it.
    The corresponding Go Toolchain patch is CL 174059.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/174138

From-SVN: r270615

gcc/go/gofrontend/MERGE
libgo/go/runtime/runtime_mmap_test.go

index fd53ada097c1860c775626c824191e53f8a781bf..8af11d906a4f5e3f2adfa24723a09c0756e44409 100644 (file)
@@ -1,4 +1,4 @@
-cb6fb7285bac72389bdce7ecfe87f9366022571a
+b117b468264665cfe6ec2cf3affb48330a704fa7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index c0040414d46f6cb76ca960db74bd57f667e2590b..188fd5d0f0c18abcda5186bab45706dd5741c1b0 100644 (file)
@@ -32,6 +32,11 @@ func TestPhysPageSize(t *testing.T) {
                t.Fatalf("Mmap: %v", err)
        }
 
+       if runtime.GOOS == "aix" {
+               // AIX does not allow mapping a range that is already mapped.
+               runtime.Munmap(unsafe.Pointer(uintptr(b)), 2*ps)
+       }
+
        // Mmap should fail at a half page into the buffer.
        _, err = runtime.Mmap(unsafe.Pointer(uintptr(b)+ps/2), ps, 0, runtime.MAP_ANON|runtime.MAP_PRIVATE|runtime.MAP_FIXED, -1, 0)
        if err == 0 {