gcc/libgo
Ian Lance Taylor 9490b8da72 re PR go/60931 (libgo has issues when page size is not 4k)
PR go/60931

runtime: Fix garbage collector issue with non 4kB system page size

The go garbage collector tracks memory in terms of 4kB pages.
Most of the code checks getpagesize() at runtime and does the
right thing.

On a 64kB ppc64 box I see SEGVs in long running processes
which has been diagnosed as a bug in scavengelist.
scavengelist does a madvise(MADV_DONTNEED) without rounding
the arguments to the system page size.  A strace of one of the
failures shows the problem:

madvise(0xc211030000, 4096, MADV_DONTNEED) = 0

The kernel rounds the length up to 64kB and we mark 60kB of
valid data as no longer needed.

Round start up to a system page and end down before calling
madvise.

From-SVN: r209777
2014-04-25 04:29:07 +00:00
..
config ltmain.sh: Patch for Solaris. 2014-02-03 17:39:44 +00:00
go gofrontend: deduplicate C syscall function declarations 2014-04-17 23:39:23 +00:00
runtime re PR go/60931 (libgo has issues when page size is not 4k) 2014-04-25 04:29:07 +00:00
testsuite gotest: Recognize PPC ELF v2 function pointers in text section. 2013-11-19 02:14:40 +00:00
LICENSE LICENSE: separate, change PATENTS text. 2010-12-06 22:27:47 +00:00
MERGE libgo: Update to Go 1.2.1 release. 2014-03-03 20:14:52 +00:00
Makefile.am re PR go/59430 (os/user FAILs on Solaris) 2014-01-08 01:08:29 +00:00
Makefile.in re PR go/59430 (os/user FAILs on Solaris) 2014-01-08 01:08:29 +00:00
PATENTS LICENSE: separate, change PATENTS text. 2010-12-06 22:27:47 +00:00
README It's a contributor license agreement, not a copyright LA. 2010-12-03 20:41:15 +00:00
README.gcc libgo/README.gcc: Mention GCCGO_RUN_ALL_TESTS. 2011-03-09 19:17:56 +00:00
aclocal.m4
config.h.in libgo: Remove Solaris 8 & 9 support. 2014-04-16 20:33:57 +00:00
configure libgo: Remove Solaris 8 & 9 support. 2014-04-16 20:33:57 +00:00
configure.ac libgo: Remove Solaris 8 & 9 support. 2014-04-16 20:33:57 +00:00
godeps.sh libgo: Generate dependencies automatically. 2011-12-03 00:16:12 +00:00
merge.sh libgo: Update to Go 1.1.1. 2013-07-16 06:54:42 +00:00
mksysinfo.sh mksysinfo, net: Always define F_DUPFD_CLOEXEC. 2013-11-11 21:21:50 +00:00

README

See ../README.

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

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

The library has only been tested on x86/x86_64 systems.  It should not
be difficult to port to other architectures.

Directories:

go
  A copy of the Go library from http://golang.org/, with a few
  changes for gccgo.  Notably, the reflection interface is different.

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

syscalls
  System call support.

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.