mirror of
https://github.com/golang/go.git
synced 2025-05-30 19:52:53 +00:00
The old Go object file format used linker symbols like "gofile..foo" to record references to the filename "foo". But the current object file format has a dedicated section for file names, so we don't need these useless prefixes anymore. Also, change DWARF generation to pass around the src.Pos directly, rather than the old file symbols, which it just turned back into a file index before writing out anyway. Finally, directly record the FileIndex into src.PosBase, so that we can skip the map lookups. Change-Id: Ia4a5ebfa95da271f2522e45befdb9f137c16d373 Reviewed-on: https://go-review.googlesource.com/c/go/+/523378 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com>
28 lines
892 B
Go
28 lines
892 B
Go
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package obj
|
|
|
|
import (
|
|
"cmd/internal/goobj"
|
|
"cmd/internal/src"
|
|
)
|
|
|
|
// AddImport adds a package to the list of imported packages.
|
|
func (ctxt *Link) AddImport(pkg string, fingerprint goobj.FingerprintType) {
|
|
ctxt.Imports = append(ctxt.Imports, goobj.ImportedPkg{Pkg: pkg, Fingerprint: fingerprint})
|
|
}
|
|
|
|
// getFileIndexAndLine returns the relative file index (local to the CU), and
|
|
// the relative line number for a position (i.e., as adjusted by a //line
|
|
// directive). This is the file/line visible in the final binary (pcfile, pcln,
|
|
// etc).
|
|
func (ctxt *Link) getFileIndexAndLine(xpos src.XPos) (int, int32) {
|
|
pos := ctxt.InnermostPos(xpos)
|
|
if !pos.IsKnown() {
|
|
pos = src.Pos{}
|
|
}
|
|
return pos.FileIndex(), int32(pos.RelLine())
|
|
}
|