...

Source file src/cmd/internal/objabi/stack.go

     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 = 880*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 stackGuardMultiplierDefault
    33	}
    34	

View as plain text