mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
reflect,runtime: use internal ABI for selected ASM routines, attempt 2
[This is a roll-forward of CL 262319, with a fix for some Darwin test failures]. Change the definitions of selected runtime assembly routines from ABI0 (the default) to ABIInternal. The ABIInternal def is intended to indicate that these functions don't follow the existing Go runtime ABI. In addition, convert the assembly reference to runtime.main (from runtime.mainPC) to ABIInternal. Finally, for functions such as "runtime.duffzero" that are called directly from generated code, make sure that the compiler looks up the correct ABI version. This is intended to support the register abi work, however these changes should not have any issues even when GOEXPERIMENT=regabi is not in effect. Updates #27539, #40724. Change-Id: Idf507f1c06176073563845239e1a54dad51a9ea9 Reviewed-on: https://go-review.googlesource.com/c/go/+/266638 Trust: Than McIntosh <thanm@google.com> Run-TryBot: Than McIntosh <thanm@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
1af388f1c0
commit
a313eec386
20 changed files with 156 additions and 114 deletions
|
|
@ -324,9 +324,9 @@ func rewriteToUseGot(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) {
|
|||
// flags and duffzero on 386 does not otherwise do so).
|
||||
var sym *obj.LSym
|
||||
if p.As == obj.ADUFFZERO {
|
||||
sym = ctxt.Lookup("runtime.duffzero")
|
||||
sym = ctxt.LookupABI("runtime.duffzero", obj.ABIInternal)
|
||||
} else {
|
||||
sym = ctxt.Lookup("runtime.duffcopy")
|
||||
sym = ctxt.LookupABI("runtime.duffcopy", obj.ABIInternal)
|
||||
}
|
||||
offset := p.To.Offset
|
||||
p.As = mov
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue