github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/third_party/gofrontend/libgo/runtime/go-main.c (about)

     1  /* go-main.c -- the main function for a Go program.
     2  
     3     Copyright 2009 The Go Authors. All rights reserved.
     4     Use of this source code is governed by a BSD-style
     5     license that can be found in the LICENSE file.  */
     6  
     7  #include "config.h"
     8  
     9  #include <stdlib.h>
    10  #include <time.h>
    11  #include <unistd.h>
    12  
    13  #ifdef HAVE_FPU_CONTROL_H
    14  #include <fpu_control.h>
    15  #endif
    16  
    17  #include "runtime.h"
    18  #include "go-alloc.h"
    19  #include "array.h"
    20  #include "arch.h"
    21  #include "malloc.h"
    22  
    23  #undef int
    24  #undef char
    25  #undef unsigned
    26  
    27  /* The main function for a Go program.  This records the command line
    28     parameters, calls the real main function, and returns a zero status
    29     if the real main function returns.  */
    30  
    31  extern char **environ;
    32  
    33  /* The main function.  */
    34  
    35  int
    36  main (int argc, char **argv)
    37  {
    38    runtime_isarchive = false;
    39  
    40    if (runtime_isstarted)
    41      return 0;
    42    runtime_isstarted = true;
    43  
    44    runtime_check ();
    45    runtime_args (argc, (byte **) argv);
    46    runtime_osinit ();
    47    runtime_schedinit ();
    48    __go_go (runtime_main, NULL);
    49    runtime_mstart (runtime_m ());
    50    abort ();
    51  }