/* go-main.c -- the main function for a Go program. Copyright 2009 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. */ #include "config.h" #include #include #include #ifdef HAVE_FPU_CONTROL_H #include #endif #include "runtime.h" #include "array.h" #include "arch.h" #undef int #undef char #undef unsigned /* The main function for a Go program. This records the command line parameters, calls the real main function, and returns a zero status if the real main function returns. */ extern char **environ; /* A copy of _end that a shared library can reasonably refer to. */ uintptr __go_end; extern byte _end[]; /* The main function. */ int main (int argc, char **argv) { runtime_isarchive = false; if (runtime_isstarted) return 0; runtime_isstarted = true; if (runtime_iscgo) setIsCgo (); __go_end = (uintptr)_end; runtime_ginit (); runtime_cpuinit (); runtime_check (); runtime_args (argc, (byte **) argv); runtime_osinit (); runtime_schedinit (); __go_go ((uintptr)(runtime_main), NULL); runtime_mstart (runtime_m ()); abort (); }