diff options
author | Russ Cox <rsc@golang.org> | 2021-01-28 16:22:52 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2021-02-19 00:02:49 +0000 |
commit | 54da3ab385686dec5554164ba9558214445deec9 (patch) | |
tree | 93bad7fe11b54fde70f0580d0c0e1766b68e730b /src/runtime/traceback.go | |
parent | fbe74dbf4263841819368a2a3c90e599392e0808 (diff) | |
download | go-54da3ab385686dec5554164ba9558214445deec9.tar.gz go-54da3ab385686dec5554164ba9558214445deec9.zip |
runtime: use TOPFRAME to identify top-of-frame functions
No change to actual runtime, but helps reduce the laundry list
of functions.
mcall, morestack, and asmcgocall are not actually top-of-frame,
so those need more attention in follow-up CLs.
mstart moved to assembly so that it can be marked TOPFRAME.
Since TOPFRAME also tells DWARF consumers not to unwind
this way, this change should also improve debuggers a
marginal amount.
This CL is part of a stack adding windows/arm64
support (#36439), intended to land in the Go 1.17 cycle.
This CL is, however, not windows/arm64-specific.
It is cleanup meant to make the port (and future ports) easier.
Change-Id: If1e0d46ca973de5e46b62948d076f675f285b5d9
Reviewed-on: https://go-review.googlesource.com/c/go/+/288802
Trust: Russ Cox <rsc@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/runtime/traceback.go')
-rw-r--r-- | src/runtime/traceback.go | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go index 18d8a42854a..e2bd9689192 100644 --- a/src/runtime/traceback.go +++ b/src/runtime/traceback.go @@ -1002,12 +1002,9 @@ func tracebackHexdump(stk stack, frame *stkframe, bad uintptr) { // Does f mark the top of a goroutine stack? func topofstack(f funcInfo, g0 bool) bool { - return f.funcID == funcID_goexit || - f.funcID == funcID_mstart || + return f.flag&funcFlag_TOPFRAME != 0 || f.funcID == funcID_mcall || f.funcID == funcID_morestack || - f.funcID == funcID_rt0_go || - f.funcID == funcID_externalthreadhandler || // asmcgocall is TOS on the system stack because it // switches to the system stack, but in this case we // can come back to the regular stack and still want |