See ../README.

This is the runtime support library for the Go programming language.
This library is intended for use with the Go frontend.

This library should not be stripped when it is installed.  Go code
relies on being able to look up file/line information, which comes
from the debugging info using the libbacktrace library.

The library has only been tested on GNU/Linux using glibc, and on
Solaris.  It should not be difficult to port to other operating
systems.

Directories:

go
  A copy of the Go library from http://golang.org/, with several
  changes for gccgo.

runtime
  Runtime functions, written in C, which are called directly by the
  compiler or by the library.

Contributing
============

To contribute patches to the files in this directory, please see
http://golang.org/doc/gccgo_contribute.html .

The master copy of these files is hosted at
http://code.google.com/p/gofrontend .  Changes to these files require
signing a Google contributor license agreement.  If you are the
copyright holder, you will need to agree to the individual contributor
license agreement at
http://code.google.com/legal/individual-cla-v1.0.html.  This agreement
can be completed online.

If your organization is the copyright holder, the organization will
need to agree to the corporate contributor license agreement at
http://code.google.com/legal/corporate-cla-v1.0.html.

If the copyright holder for your code has already completed the
agreement in connection with another Google open source project, it
does not need to be completed again.

Debugging
=========

This describes how to test libgo when built as part of gccgo.

To test a specific package, cd to the libgo build directory
(TARGET/libgo) and run `make PKG/check`.  For example, `make
bytes/check`.

To see the exact commands that it runs, including how the compiler is
invoked, run `make GOTESTFLAGS=--trace bytes/check`.  This will
display the commands if the test fails.  If the test passes, the
commands and other output will be visible in a file named
check-testlog in a subdirectory with the name of the package being
checked.  In the case of bytes/check, this will create
bytes/check-testlog.

To leave the test program behind, run `make GOTESTFLAGS=--keep
bytes/check`.  That will leave a gotestNNNN/test directory in the
libgo build directory.  In that directory you can run
`LD_LIBRARY_PATH=../../.libs ./a.out -test.short` to run the tests.
You can run specific failing tests using a -test.run option.  You can
see the tests being run with the -test.v option.  You can run the
program under a debugger such as gdb.
