1 // Copyright 2013 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 // This file defines flags attached to various functions 6 // and data objects. The compilers, assemblers, and linker must 7 // all agree on these values. 8 9 package obj 10 11 const ( 12 // Don't profile the marked routine. 13 // 14 // Deprecated: Not implemented, do not use. 15 NOPROF = 1 16 17 // It is ok for the linker to get multiple of these symbols. It will 18 // pick one of the duplicates to use. 19 DUPOK = 2 20 21 // Don't insert stack check preamble. 22 NOSPLIT = 4 23 24 // Put this data in a read-only section. 25 RODATA = 8 26 27 // This data contains no pointers. 28 NOPTR = 16 29 30 // This is a wrapper function and should not count as 31 // disabling 'recover' or appear in tracebacks by default. 32 WRAPPER = 32 33 34 // This function uses its incoming context register. 35 NEEDCTXT = 64 36 37 // When passed to objw.Global, causes Local to be set to true on the LSym it creates. 38 LOCAL = 128 39 40 // Allocate a word of thread local storage and store the offset from the 41 // thread local base to the thread local storage in this variable. 42 TLSBSS = 256 43 44 // Do not insert instructions to allocate a stack frame for this function. 45 // Only valid on functions that declare a frame size of 0. 46 // TODO(mwhudson): only implemented for ppc64x at present. 47 NOFRAME = 512 48 49 // Function can call reflect.Type.Method or reflect.Type.MethodByName. 50 REFLECTMETHOD = 1024 51 52 // Function is the outermost frame of the call stack. Call stack unwinders 53 // should stop at this function. 54 TOPFRAME = 2048 55 56 // Function is an ABI wrapper. 57 ABIWRAPPER = 4096 58 59 // Function is a compiler-generated package init function. 60 PKGINIT = 8192 61 ) 62