mirror of
https://github.com/golang/go.git
synced 2025-05-15 12:24:37 +00:00
[dev.link] cmd/link: convert buildinfo pass to new style
Change-Id: I2e1a6d2f1ef7402277c981282556c276ec0585ec Reviewed-on: https://go-review.googlesource.com/c/go/+/227771 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
a35b322709
commit
9669c3f361
@ -2148,10 +2148,11 @@ func (ctxt *Link) buildinfo() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
s := ctxt.Syms.Lookup(".go.buildinfo", 0)
|
ldr := ctxt.loader
|
||||||
s.Attr |= sym.AttrReachable
|
s := ldr.CreateSymForUpdate(".go.buildinfo", 0)
|
||||||
s.Type = sym.SBUILDINFO
|
s.SetReachable(true)
|
||||||
s.Align = 16
|
s.SetType(sym.SBUILDINFO)
|
||||||
|
s.SetAlign(16)
|
||||||
// The \xff is invalid UTF-8, meant to make it less likely
|
// The \xff is invalid UTF-8, meant to make it less likely
|
||||||
// to find one of these accidentally.
|
// to find one of these accidentally.
|
||||||
const prefix = "\xff Go buildinf:" // 14 bytes, plus 2 data bytes filled in below
|
const prefix = "\xff Go buildinf:" // 14 bytes, plus 2 data bytes filled in below
|
||||||
@ -2162,14 +2163,16 @@ func (ctxt *Link) buildinfo() {
|
|||||||
if ctxt.Arch.ByteOrder == binary.BigEndian {
|
if ctxt.Arch.ByteOrder == binary.BigEndian {
|
||||||
data[len(prefix)+1] = 1
|
data[len(prefix)+1] = 1
|
||||||
}
|
}
|
||||||
s.P = data
|
s.SetData(data)
|
||||||
s.Size = int64(len(s.P))
|
s.SetSize(int64(len(data)))
|
||||||
s1 := ctxt.Syms.Lookup("runtime.buildVersion", 0)
|
r, _ := s.AddRel(objabi.R_ADDR)
|
||||||
s2 := ctxt.Syms.Lookup("runtime.modinfo", 0)
|
r.SetOff(16)
|
||||||
s.R = []sym.Reloc{
|
r.SetSiz(uint8(ctxt.Arch.PtrSize))
|
||||||
{Off: 16, Siz: uint8(ctxt.Arch.PtrSize), Type: objabi.R_ADDR, Sym: s1},
|
r.SetSym(ldr.LookupOrCreateSym("runtime.buildVersion", 0))
|
||||||
{Off: 16 + int32(ctxt.Arch.PtrSize), Siz: uint8(ctxt.Arch.PtrSize), Type: objabi.R_ADDR, Sym: s2},
|
r, _ = s.AddRel(objabi.R_ADDR)
|
||||||
}
|
r.SetOff(16 + int32(ctxt.Arch.PtrSize))
|
||||||
|
r.SetSiz(uint8(ctxt.Arch.PtrSize))
|
||||||
|
r.SetSym(ldr.LookupOrCreateSym("runtime.modinfo", 0))
|
||||||
}
|
}
|
||||||
|
|
||||||
// assign addresses to text
|
// assign addresses to text
|
||||||
|
@ -292,6 +292,8 @@ func Main(arch *sys.Arch, theArch Arch) {
|
|||||||
ctxt.textaddress()
|
ctxt.textaddress()
|
||||||
bench.Start("typelink")
|
bench.Start("typelink")
|
||||||
ctxt.typelink()
|
ctxt.typelink()
|
||||||
|
bench.Start("buildinfo")
|
||||||
|
ctxt.buildinfo()
|
||||||
bench.Start("loadlibfull")
|
bench.Start("loadlibfull")
|
||||||
ctxt.loadlibfull() // XXX do it here for now
|
ctxt.loadlibfull() // XXX do it here for now
|
||||||
bench.Start("pclntab")
|
bench.Start("pclntab")
|
||||||
@ -300,8 +302,6 @@ func Main(arch *sys.Arch, theArch Arch) {
|
|||||||
ctxt.findfunctab()
|
ctxt.findfunctab()
|
||||||
bench.Start("symtab")
|
bench.Start("symtab")
|
||||||
ctxt.symtab()
|
ctxt.symtab()
|
||||||
bench.Start("buildinfo")
|
|
||||||
ctxt.buildinfo()
|
|
||||||
bench.Start("dodata")
|
bench.Start("dodata")
|
||||||
ctxt.dodata()
|
ctxt.dodata()
|
||||||
bench.Start("address")
|
bench.Start("address")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user