blob: d9b47f1ec916e9eb93973f845073d7e892ec1c5d [file] [log] [blame]
// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package objabi
import (
"internal/abi"
"strings"
)
var funcIDs = map[string]abi.FuncID{
"abort": abi.FuncID_abort,
"asmcgocall": abi.FuncID_asmcgocall,
"asyncPreempt": abi.FuncID_asyncPreempt,
"cgocallback": abi.FuncID_cgocallback,
"corostart": abi.FuncID_corostart,
"debugCallV2": abi.FuncID_debugCallV2,
"gcBgMarkWorker": abi.FuncID_gcBgMarkWorker,
"rt0_go": abi.FuncID_rt0_go,
"goexit": abi.FuncID_goexit,
"gogo": abi.FuncID_gogo,
"gopanic": abi.FuncID_gopanic,
"handleAsyncEvent": abi.FuncID_handleAsyncEvent,
"main": abi.FuncID_runtime_main,
"mcall": abi.FuncID_mcall,
"morestack": abi.FuncID_morestack,
"mstart": abi.FuncID_mstart,
"panicwrap": abi.FuncID_panicwrap,
"runfinq": abi.FuncID_runfinq,
"sigpanic": abi.FuncID_sigpanic,
"systemstack_switch": abi.FuncID_systemstack_switch,
"systemstack": abi.FuncID_systemstack,
// Don't show in call stack but otherwise not special.
"deferreturn": abi.FuncIDWrapper,
}
// Get the function ID for the named function in the named file.
// The function should be package-qualified.
func GetFuncID(name string, isWrapper bool) abi.FuncID {
if isWrapper {
return abi.FuncIDWrapper
}
if strings.HasPrefix(name, "runtime.") {
if id, ok := funcIDs[name[len("runtime."):]]; ok {
return id
}
}
return abi.FuncIDNormal
}