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
5package objabi
6
7// This file defines the IDs for PCDATA and FUNCDATA instructions
8// in Go binaries.
9//
10// These must agree with ../../../runtime/funcdata.h and
11// ../../../runtime/symtab.go.
12
13const (
14	PCDATA_UnsafePoint   = 0
15	PCDATA_StackMapIndex = 1
16	PCDATA_InlTreeIndex  = 2
17
18	FUNCDATA_ArgsPointerMaps    = 0
19	FUNCDATA_LocalsPointerMaps  = 1
20	FUNCDATA_StackObjects       = 2
21	FUNCDATA_InlTree            = 3
22	FUNCDATA_OpenCodedDeferInfo = 4
23
24	// ArgsSizeUnknown is set in Func.argsize to mark all functions
25	// whose argument size is unknown (C vararg functions, and
26	// assembly code without an explicit specification).
27	// This value is generated by the compiler, assembler, or linker.
28	ArgsSizeUnknown = -0x80000000
29)
30
31// Special PCDATA values.
32const (
33	// PCDATA_UnsafePoint values.
34	PCDATA_UnsafePointSafe   = -1 // Safe for async preemption
35	PCDATA_UnsafePointUnsafe = -2 // Unsafe for async preemption
36
37	// PCDATA_Restart1(2) apply on a sequence of instructions, within
38	// which if an async preemption happens, we should back off the PC
39	// to the start of the sequence when resuming.
40	// We need two so we can distinguish the start/end of the sequence
41	// in case that two sequences are next to each other.
42	PCDATA_Restart1 = -3
43	PCDATA_Restart2 = -4
44
45	// Like PCDATA_Restart1, but back to function entry if async preempted.
46	PCDATA_RestartAtEntry = -5
47)
48