}
}
- if !needABIAlias && allABIs {
- // The compiler was asked to produce ABI
- // wrappers for everything.
- switch f.lsym.ABI() {
- case obj.ABI0:
- needABIAlias, aliasABI = true, obj.ABIInternal
- case obj.ABIInternal:
- needABIAlias, aliasABI = true, obj.ABI0
- }
- }
-
if needABIAlias {
// These LSyms have the same name as the
// native function, so we create them directly
flag.StringVar(&goversion, "goversion", "", "required version of the runtime")
var symabisPath string
flag.StringVar(&symabisPath, "symabis", "", "read symbol ABIs from `file`")
- flag.BoolVar(&allABIs, "allabis", false, "generate ABI wrappers for all symbols (for bootstrap)")
flag.StringVar(&traceprofile, "traceprofile", "", "write an execution trace to `file`")
flag.StringVar(&blockprofile, "blockprofile", "", "write block profile to `file`")
flag.StringVar(&mutexprofile, "mutexprofile", "", "write mutex profile to `file`")
// name, where the local package prefix is always `"".`
var symabiDefs, symabiRefs map[string]obj.ABI
-// allABIs indicates that all symbol definitions should have ABI
-// wrappers. This is used during toolchain bootstrapping to avoid
-// having to find cross-package references.
-var allABIs bool
-
// readSymABIs reads a symabis file that specifies definitions and
// references of text symbols by ABI.
//
if symabis != "" {
compile = append(compile, "-symabis", symabis)
}
- if dir == "runtime" || dir == "runtime/internal/atomic" {
- // These packages define symbols referenced by
- // assembly in other packages. In cmd/go, we work out
- // the exact details. For bootstrapping, just tell the
- // compiler to generate ABI wrappers for everything.
- compile = append(compile, "-allabis")
- }
if goos == "android" {
compile = append(compile, "-shared")
}