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
9package obj
10
11const (
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