go/test/fixedbugs/bug273.go
Clément Chigot 041526c6ef runtime: handle 64bits addresses for AIX
This commit allows the runtime to handle 64bits addresses returned by
mmap syscall on AIX.

Mmap syscall returns addresses on 59bits on AIX. But the Arena
implementation only allows addresses with less than 48 bits.
This commit increases the arena size up to 1<<60 for aix/ppc64.

Update: #25893

Change-Id: Iea72e8a944d10d4f00be915785e33ae82dd6329e
Reviewed-on: https://go-review.googlesource.com/c/138736
Reviewed-by: Austin Clements <austin@google.com>
2018-11-26 14:06:28 +00:00

80 lines
1.3 KiB
Go

// run
// Copyright 2010 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.
// https://golang.org/issue/589
package main
import "unsafe"
var bug = false
var minus1 = -1
var five = 5
var big int64 = 10 | 1<<46
type block [1 << 19]byte
var g1 []block
func shouldfail(f func(), desc string) {
defer func() { recover() }()
f()
if !bug {
println("BUG")
bug = true
}
println("didn't crash: ", desc)
}
func badlen() {
g1 = make([]block, minus1)
}
func biglen() {
g1 = make([]block, big)
}
func badcap() {
g1 = make([]block, 10, minus1)
}
func badcap1() {
g1 = make([]block, 10, five)
}
func bigcap() {
g1 = make([]block, 10, big)
}
type cblock [1<<16 - 1]byte
var g4 chan cblock
func badchancap() {
g4 = make(chan cblock, minus1)
}
func bigchancap() {
g4 = make(chan cblock, big)
}
func overflowchan() {
const ptrSize = unsafe.Sizeof(uintptr(0))
g4 = make(chan cblock, 1<<(30*(ptrSize/4)))
}
func main() {
shouldfail(badlen, "badlen")
shouldfail(biglen, "biglen")
shouldfail(badcap, "badcap")
shouldfail(badcap1, "badcap1")
shouldfail(bigcap, "bigcap")
shouldfail(badchancap, "badchancap")
shouldfail(bigchancap, "bigchancap")
shouldfail(overflowchan, "overflowchan")
}