ctxt.Imports = append(ctxt.Imports, pkg)
}
-func linkgetlineFromPos(ctxt *Link, xpos src.XPos) (f *LSym, l int32) {
+func linkgetlineFromPos(ctxt *Link, xpos src.XPos) (f string, l int32) {
pos := ctxt.PosTable.Pos(xpos)
if !pos.IsKnown() {
pos = src.Pos{}
}
// TODO(gri) Should this use relative or absolute line number?
- return Linklookup(ctxt, pos.SymFilename(), 0), int32(pos.RelLine())
+ return pos.SymFilename(), int32(pos.RelLine())
}
for _, test := range tests {
f, l := linkgetlineFromPos(ctxt, ctxt.PosTable.XPos(test.pos))
- got := fmt.Sprintf("%s:%d", f.Name, l)
+ got := fmt.Sprintf("%s:%d", f, l)
if got != src.FileSymPrefix+test.want {
t.Errorf("linkgetline(%v) = %q, want %q", test.pos, got, test.want)
}
Pcdata []Pcdata
Funcdata []*LSym
Funcdataoff []int64
- File []*LSym
- Lastfile *LSym
+ File []string
+ Lastfile string
Lastindex int
InlTree InlTree // per-function inlining tree extracted from the global tree
}
w.writeRef(d, false)
}
for _, f := range pc.File {
- w.writeRef(f, true)
+ fsym := Linklookup(w.ctxt, f, 0)
+ w.writeRef(fsym, true)
}
for _, call := range pc.InlTree.nodes {
w.writeRef(call.Func, false)
f, _ := linkgetlineFromPos(w.ctxt, call.Pos)
- w.writeRef(f, true)
+ fsym := Linklookup(w.ctxt, f, 0)
+ w.writeRef(fsym, true)
}
}
}
}
w.writeInt(int64(len(pc.File)))
for _, f := range pc.File {
- w.writeRefIndex(f)
+ fsym := Linklookup(ctxt, f, 0)
+ w.writeRefIndex(fsym)
}
w.writeInt(int64(len(pc.InlTree.nodes)))
for _, call := range pc.InlTree.nodes {
w.writeInt(int64(call.Parent))
f, l := linkgetlineFromPos(w.ctxt, call.Pos)
- w.writeRefIndex(f)
+ fsym := Linklookup(ctxt, f, 0)
+ w.writeRefIndex(fsym)
w.writeInt(int64(l))
w.writeRefIndex(call.Func)
}
return oldval
}
f, l := linkgetlineFromPos(ctxt, p.Pos)
- if f == nil {
- // print("getline failed for %s %v\n", ctxt->cursym->name, p);
- return oldval
- }
-
if arg == nil {
return l
}