1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4 5 package objabi
6 7 // For the linkers. Must match Go definitions.
8 9 const (
10 STACKSYSTEM = 0
11 StackSystem = STACKSYSTEM
12 StackBig = 4096
13 StackSmall = 128
14 )
15 16 const (
17 StackPreempt = -1314 // 0xfff...fade
18 )
19 20 // Initialize StackGuard and StackLimit according to target system.
21 var StackGuard = 928*stackGuardMultiplier() + StackSystem
22 var StackLimit = StackGuard - StackSystem - StackSmall
23 24 // stackGuardMultiplier returns a multiplier to apply to the default
25 // stack guard size. Larger multipliers are used for non-optimized
26 // builds that have larger stack frames or for specific targets.
27 func stackGuardMultiplier() int {
28 // On AIX, a larger stack is needed for syscalls.
29 if GOOS == "aix" {
30 return 2
31 }
32 return 1
33 }
34