"cmd/link/internal/ld",
"cmd/link/internal/mips",
"cmd/link/internal/mips64",
+ "cmd/link/internal/objfile",
"cmd/link/internal/ppc64",
"cmd/link/internal/s390x",
"cmd/link/internal/sym",
"cmd/internal/bio"
"cmd/internal/objabi"
"cmd/internal/sys"
+ "cmd/link/internal/objfile"
"cmd/link/internal/sym"
"crypto/sha1"
"debug/elf"
if ctxt.Debugvlog > 1 {
ctxt.Logf("%5.2f autolib: %s (from %s)\n", Cputime(), lib.File, lib.Objref)
}
- objfile(ctxt, lib)
+ loadobjfile(ctxt, lib)
}
}
if Buildmode == BuildmodeShared || *FlagLinkshared {
Exitf("cannot implicitly include runtime/cgo in a shared library")
}
- objfile(ctxt, lib)
+ loadobjfile(ctxt, lib)
}
}
}
lib.Hash = hex.EncodeToString(h.Sum(nil))
}
-func objfile(ctxt *Link, lib *sym.Library) {
+func loadobjfile(ctxt *Link, lib *sym.Library) {
pkg := objabi.PathToPrefix(lib.Pkg)
if ctxt.Debugvlog > 1 {
ldpkg(ctxt, f, pkg, import1-import0-2, pn, whence) // -2 for !\n
f.Seek(import1, 0)
- LoadObjFile(ctxt.Arch, ctxt.Syms, f, lib, eof-f.Offset(), pn)
+ objfile.Load(ctxt.Arch, ctxt.Syms, f, lib, eof-f.Offset(), pn)
addImports(ctxt, lib, pn)
return nil
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package ld
-
-// Reading of Go object files.
+// Package objfile reads Go object files for the Go linker, cmd/link.
+//
+// This package is similar to cmd/internal/objfile which also reads
+// Go object files.
+package objfile
import (
"bufio"
file []*sym.Symbol
}
-func LoadObjFile(arch *sys.Arch, syms *sym.Symbols, f *bio.Reader, lib *sym.Library, length int64, pn string) {
+// Load loads an object file f into library lib.
+// The symbols loaded are added to syms.
+func Load(arch *sys.Arch, syms *sym.Symbols, f *bio.Reader, lib *sym.Library, length int64, pn string) {
start := f.Offset()
r := &objReader{
rd: f.Reader,
r.lib.ImportStrings = append(r.lib.ImportStrings, lib)
}
- // sym.Symbol references
+ // Symbol references
r.refs = []*sym.Symbol{nil} // zeroth ref is nil
for {
c, err := r.rd.Peek(1)