mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
[dev.cc] cmd/ld: finalize linkmode before determining whether to import runtime/cgo
Frankly, I don't understand how the current code could possibly work except when every android program is using cgo. Discovered this while working on the iOS port. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://golang.org/cl/177470043
This commit is contained in:
parent
6f755f2f8f
commit
274976f45c
1 changed files with 12 additions and 12 deletions
|
@ -202,7 +202,18 @@ loadlib(void)
|
|||
iscgo |= strcmp(ctxt->library[i].pkg, "runtime/cgo") == 0;
|
||||
objfile(ctxt->library[i].file, ctxt->library[i].pkg);
|
||||
}
|
||||
|
||||
|
||||
if(linkmode == LinkAuto) {
|
||||
if(iscgo && externalobj)
|
||||
linkmode = LinkExternal;
|
||||
else
|
||||
linkmode = LinkInternal;
|
||||
|
||||
// Force external linking for android.
|
||||
if(strcmp(goos, "android") == 0)
|
||||
linkmode = LinkExternal;
|
||||
}
|
||||
|
||||
if(linkmode == LinkExternal && !iscgo) {
|
||||
// This indicates a user requested -linkmode=external.
|
||||
// The startup code uses an import of runtime/cgo to decide
|
||||
|
@ -229,17 +240,6 @@ loadlib(void)
|
|||
}
|
||||
}
|
||||
|
||||
if(linkmode == LinkAuto) {
|
||||
if(iscgo && externalobj)
|
||||
linkmode = LinkExternal;
|
||||
else
|
||||
linkmode = LinkInternal;
|
||||
|
||||
// Force external linking for android.
|
||||
if(strcmp(goos, "android") == 0)
|
||||
linkmode = LinkExternal;
|
||||
}
|
||||
|
||||
if(linkmode == LinkInternal) {
|
||||
// Drop all the cgo_import_static declarations.
|
||||
// Turns out we won't be needing them.
|
||||
|
|
Loading…
Reference in a new issue