mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.link] cmd/internal/obj, cmd/link: add InlTree in new object files
Add InlTree to the FuncInfo aux symbol in new object files. In the linker, change InlinedCall.Func from a Symbol to a string, as we only use its Name. (There was a use of Func.File, but that use is not correct anyway.) So we don't need to create a Symbol if not necessary. Change-Id: I38ce568ae0934cd9cb6d0b30599f1c8d75444fc9 Reviewed-on: https://go-review.googlesource.com/c/go/+/200098 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
dab05a0484
commit
6ba3ae9ca5
8 changed files with 91 additions and 9 deletions
|
|
@ -699,6 +699,7 @@ func loadObjFull(l *Loader, r *oReader) {
|
|||
pc.Pcdata = make([]sym.Pcdata, len(info.Pcdata)-1) // -1 as we appended one above
|
||||
pc.Funcdataoff = make([]int64, len(info.Funcdataoff))
|
||||
pc.File = make([]*sym.Symbol, len(info.File))
|
||||
pc.InlTree = make([]sym.InlinedCall, len(info.InlTree))
|
||||
pc.Pcsp.P = r.BytesAt(pcdataBase+info.Pcsp, int(info.Pcfile-info.Pcsp))
|
||||
pc.Pcfile.P = r.BytesAt(pcdataBase+info.Pcfile, int(info.Pcline-info.Pcfile))
|
||||
pc.Pcline.P = r.BytesAt(pcdataBase+info.Pcline, int(info.Pcinline-info.Pcline))
|
||||
|
|
@ -712,6 +713,16 @@ func loadObjFull(l *Loader, r *oReader) {
|
|||
for k := range pc.File {
|
||||
pc.File[k] = resolveSymRef(info.File[k])
|
||||
}
|
||||
for k := range pc.InlTree {
|
||||
inl := &info.InlTree[k]
|
||||
pc.InlTree[k] = sym.InlinedCall{
|
||||
Parent: inl.Parent,
|
||||
File: resolveSymRef(inl.File),
|
||||
Line: inl.Line,
|
||||
Func: l.SymName(l.Resolve(r, inl.Func)),
|
||||
ParentPC: inl.ParentPC,
|
||||
}
|
||||
}
|
||||
|
||||
if !dupok {
|
||||
if s.Attr.OnList() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue