funcid.go (2830B)
1 // Copyright 2018 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 // A FuncID identifies particular functions that need to be treated 8 // specially by the runtime. 9 // Note that in some situations involving plugins, there may be multiple 10 // copies of a particular special runtime function. 11 // Note: this list must match the list in runtime/symtab.go. 12 type FuncID uint8 13 14 const ( 15 FuncID_normal FuncID = iota // not a special function 16 FuncID_runtime_main 17 FuncID_goexit 18 FuncID_jmpdefer 19 FuncID_mcall 20 FuncID_morestack 21 FuncID_mstart 22 FuncID_rt0_go 23 FuncID_asmcgocall 24 FuncID_sigpanic 25 FuncID_runfinq 26 FuncID_gcBgMarkWorker 27 FuncID_systemstack_switch 28 FuncID_systemstack 29 FuncID_cgocallback_gofunc 30 FuncID_gogo 31 FuncID_externalthreadhandler 32 FuncID_debugCallV1 33 FuncID_gopanic 34 FuncID_panicwrap 35 FuncID_handleAsyncEvent 36 FuncID_asyncPreempt 37 FuncID_wrapper // any autogenerated code (hash/eq algorithms, method wrappers, etc.) 38 ) 39 40 // Get the function ID for the named function in the named file. 41 // The function should be package-qualified. 42 func GetFuncID(name string, isWrapper bool) FuncID { 43 if isWrapper { 44 return FuncID_wrapper 45 } 46 switch name { 47 case "runtime.main": 48 return FuncID_runtime_main 49 case "runtime.goexit": 50 return FuncID_goexit 51 case "runtime.jmpdefer": 52 return FuncID_jmpdefer 53 case "runtime.mcall": 54 return FuncID_mcall 55 case "runtime.morestack": 56 return FuncID_morestack 57 case "runtime.mstart": 58 return FuncID_mstart 59 case "runtime.rt0_go": 60 return FuncID_rt0_go 61 case "runtime.asmcgocall": 62 return FuncID_asmcgocall 63 case "runtime.sigpanic": 64 return FuncID_sigpanic 65 case "runtime.runfinq": 66 return FuncID_runfinq 67 case "runtime.gcBgMarkWorker": 68 return FuncID_gcBgMarkWorker 69 case "runtime.systemstack_switch": 70 return FuncID_systemstack_switch 71 case "runtime.systemstack": 72 return FuncID_systemstack 73 case "runtime.cgocallback_gofunc": 74 return FuncID_cgocallback_gofunc 75 case "runtime.gogo": 76 return FuncID_gogo 77 case "runtime.externalthreadhandler": 78 return FuncID_externalthreadhandler 79 case "runtime.debugCallV1": 80 return FuncID_debugCallV1 81 case "runtime.gopanic": 82 return FuncID_gopanic 83 case "runtime.panicwrap": 84 return FuncID_panicwrap 85 case "runtime.handleAsyncEvent": 86 return FuncID_handleAsyncEvent 87 case "runtime.asyncPreempt": 88 return FuncID_asyncPreempt 89 case "runtime.deferreturn": 90 // Don't show in the call stack (used when invoking defer functions) 91 return FuncID_wrapper 92 case "runtime.runOpenDeferFrame": 93 // Don't show in the call stack (used when invoking defer functions) 94 return FuncID_wrapper 95 case "runtime.reflectcallSave": 96 // Don't show in the call stack (used when invoking defer functions) 97 return FuncID_wrapper 98 } 99 return FuncID_normal 100 }