funcdata.go raw

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