1
0
mirror of https://github.com/golang/go synced 2024-10-02 08:18:32 -06:00

runtime: add isarchive, set by the linker

According to Go execution modes, a Go program compiled with
-buildmode=c-archive has a main function, but it is ignored on run.
This gives the runtime the information it needs not to run the main.

I have this working with pending linker changes on darwin/amd64.

Change-Id: I49bd7d65aa619ec847c464a872afa5deea7d4d30
Reviewed-on: https://go-review.googlesource.com/8701
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
David Crawshaw 2015-04-09 15:09:52 -04:00
parent d340b10366
commit d1b1eee280
2 changed files with 10 additions and 2 deletions

View File

@ -99,6 +99,11 @@ func main() {
needUnlock = false
unlockOSThread()
if isarchive {
// A program compiled with -buildmode=c-archive has a main,
// but it is not executed.
return
}
main_main()
if raceenabled {
racefini()

View File

@ -621,9 +621,12 @@ var (
cpuid_ecx uint32
cpuid_edx uint32
lfenceBeforeRdtsc bool
)
// Set by the linker when linking with -shared.
islibrary bool
// Set by the linker so the runtime can determine the buildmode.
var (
islibrary bool // -buildmode=c-shared
isarchive bool // -buildmode=c-archive
)
/*