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

     1  /* go-traceback.c -- stack backtrace for Go.
     2  
     3     Copyright 2012 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 "runtime.h"
    10  
    11  /* Print a stack trace for the current goroutine.  */
    12  
    13  void
    14  runtime_traceback ()
    15  {
    16    Location locbuf[100];
    17    int32 c;
    18  
    19    c = runtime_callers (1, locbuf, nelem (locbuf), false);
    20    runtime_printtrace (locbuf, c, true);
    21  }
    22  
    23  void
    24  runtime_printtrace (Location *locbuf, int32 c, bool current)
    25  {
    26    int32 i;
    27  
    28    for (i = 0; i < c; ++i)
    29      {
    30        if (runtime_showframe (locbuf[i].function, current))
    31  	{
    32  	  runtime_printf ("%S\n", locbuf[i].function);
    33  	  runtime_printf ("\t%S:%D\n", locbuf[i].filename,
    34  			  (int64) locbuf[i].lineno);
    35  	}
    36      }
    37  }