aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/objabi/funcid.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2021-04-13 08:44:56 -0400
committerAustin Clements <austin@google.com>2021-04-13 21:13:12 +0000
commitc19759aa487f7d6f479daa00e7462425f4efc481 (patch)
treea580e1b01eeb2ecdb81d383e922ad8bb155095b5 /src/cmd/internal/objabi/funcid.go
parente69f02265c74529a368a2ff27fdce4aeb3483e8b (diff)
downloadgo-c19759aa487f7d6f479daa00e7462425f4efc481.tar.xz
runtime: eliminate externalthreadhandler
This function is no longer used. Eliminating this actually fixes several problems: - It made assumptions about what registers memclrNoHeapPointers would preserve. Besides being an abstraction violation and lurking maintenance issue, this actively became a problem for regabi because the call to memclrNoHeapPointers now happens through an ABI wrapper, which is generated by the compiler and hence we can't easily control what registers it clobbers. - The amd64 implementation (at least), does not interact with the host ABI correctly. Notably, it doesn't save many of the registers that are callee-save in the host ABI but caller-save in the Go ABI. - It interacts strangely with the NOSPLIT checker because it allocates an entire M and G on its stack. It worked around this on arm64, and happened to do things the NOSPLIT checker couldn't track on 386 and amd64, and happened to be *4 bytes* below the limit on arm (so any addition to the m or g structs would cause a NOSPLIT failure). See CL 309031 for a more complete explanation. Fixes #45530. Updates #40724. Change-Id: Ic70d4d7e1c17f1d796575b3377b8529449e93576 Reviewed-on: https://go-review.googlesource.com/c/go/+/309634 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
Diffstat (limited to 'src/cmd/internal/objabi/funcid.go')
-rw-r--r--src/cmd/internal/objabi/funcid.go44
1 files changed, 21 insertions, 23 deletions
diff --git a/src/cmd/internal/objabi/funcid.go b/src/cmd/internal/objabi/funcid.go
index 4229ae2c02..2634106cdf 100644
--- a/src/cmd/internal/objabi/funcid.go
+++ b/src/cmd/internal/objabi/funcid.go
@@ -29,7 +29,6 @@ const (
FuncID_asyncPreempt
FuncID_cgocallback
FuncID_debugCallV1
- FuncID_externalthreadhandler
FuncID_gcBgMarkWorker
FuncID_goexit
FuncID_gogo
@@ -50,28 +49,27 @@ const (
)
var funcIDs = map[string]FuncID{
- "abort": FuncID_abort,
- "asmcgocall": FuncID_asmcgocall,
- "asyncPreempt": FuncID_asyncPreempt,
- "cgocallback": FuncID_cgocallback,
- "debugCallV1": FuncID_debugCallV1,
- "externalthreadhandler": FuncID_externalthreadhandler,
- "gcBgMarkWorker": FuncID_gcBgMarkWorker,
- "go": FuncID_rt0_go,
- "goexit": FuncID_goexit,
- "gogo": FuncID_gogo,
- "gopanic": FuncID_gopanic,
- "handleAsyncEvent": FuncID_handleAsyncEvent,
- "jmpdefer": FuncID_jmpdefer,
- "main": FuncID_runtime_main,
- "mcall": FuncID_mcall,
- "morestack": FuncID_morestack,
- "mstart": FuncID_mstart,
- "panicwrap": FuncID_panicwrap,
- "runfinq": FuncID_runfinq,
- "sigpanic": FuncID_sigpanic,
- "switch": FuncID_systemstack_switch,
- "systemstack": FuncID_systemstack,
+ "abort": FuncID_abort,
+ "asmcgocall": FuncID_asmcgocall,
+ "asyncPreempt": FuncID_asyncPreempt,
+ "cgocallback": FuncID_cgocallback,
+ "debugCallV1": FuncID_debugCallV1,
+ "gcBgMarkWorker": FuncID_gcBgMarkWorker,
+ "go": FuncID_rt0_go,
+ "goexit": FuncID_goexit,
+ "gogo": FuncID_gogo,
+ "gopanic": FuncID_gopanic,
+ "handleAsyncEvent": FuncID_handleAsyncEvent,
+ "jmpdefer": FuncID_jmpdefer,
+ "main": FuncID_runtime_main,
+ "mcall": FuncID_mcall,
+ "morestack": FuncID_morestack,
+ "mstart": FuncID_mstart,
+ "panicwrap": FuncID_panicwrap,
+ "runfinq": FuncID_runfinq,
+ "sigpanic": FuncID_sigpanic,
+ "switch": FuncID_systemstack_switch,
+ "systemstack": FuncID_systemstack,
// Don't show in call stack but otherwise not special.
"deferreturn": FuncID_wrapper,