func ldpkg(ctxt *Link, f *bio.Reader, lib *sym.Library, length int64, filename string) { … } func loadcgo(ctxt *Link, file string, pkg string, p string) { … } // Set symbol attributes or flags based on cgo directives. // Any newly discovered HOSTOBJ syms are added to 'hostObjSyms'. func setCgoAttr(ctxt *Link, file string, pkg string, directives [][]string, hostObjSyms map[loader.Sym]struct{ … } // openbsdTrimLibVersion indicates whether a shared library is // versioned and if it is, returns the unversioned name. The // OpenBSD library naming scheme is lib<name>.so.<major>.<minor> func openbsdTrimLibVersion(lib string) (string, bool) { … } // dedupLibrariesOpenBSD dedups a list of shared libraries, treating versioned // and unversioned libraries as equivalents. Versioned libraries are preferred // and retained over unversioned libraries. This avoids the situation where // the use of cgo results in a DT_NEEDED for a versioned library (for example, // libc.so.96.1), while a dynamic import specifies an unversioned library (for // example, libc.so) - this would otherwise result in two DT_NEEDED entries // for the same library, resulting in a failure when ld.so attempts to load // the Go binary. func dedupLibrariesOpenBSD(ctxt *Link, libs []string) []string { … } func dedupLibraries(ctxt *Link, libs []string) []string { … } var seenlib … func adddynlib(ctxt *Link, lib string) { … } func Adddynsym(ldr *loader.Loader, target *Target, syms *ArchSyms, s loader.Sym) { … } func fieldtrack(arch *sys.Arch, l *loader.Loader) { … } func (ctxt *Link) addexport() { … }