diff options
Diffstat (limited to 'src/cmd/internal/objabi/stack.go')
-rw-r--r-- | src/cmd/internal/objabi/stack.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/cmd/internal/objabi/stack.go b/src/cmd/internal/objabi/stack.go new file mode 100644 index 0000000..05a1d4a --- /dev/null +++ b/src/cmd/internal/objabi/stack.go @@ -0,0 +1,33 @@ +// Copyright 2011 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 objabi + +// For the linkers. Must match Go definitions. + +const ( + STACKSYSTEM = 0 + StackSystem = STACKSYSTEM + StackBig = 4096 + StackSmall = 128 +) + +const ( + StackPreempt = -1314 // 0xfff...fade +) + +// Initialize StackGuard and StackLimit according to target system. +var StackGuard = 928*stackGuardMultiplier() + StackSystem +var StackLimit = StackGuard - StackSystem - StackSmall + +// stackGuardMultiplier returns a multiplier to apply to the default +// stack guard size. Larger multipliers are used for non-optimized +// builds that have larger stack frames or for specific targets. +func stackGuardMultiplier() int { + // On AIX, a larger stack is needed for syscalls. + if GOOS == "aix" { + return 2 + } + return stackGuardMultiplierDefault +} |