This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Go patches committed: merge recent changes to gofrontend


On Wed, May 10, 2017 at 5:37 PM, Andrew Pinski <apinski@cavium.com> wrote:
> On Wed, May 10, 2017 at 10:26 AM, Ian Lance Taylor <iant@golang.org> wrote:
>> I have committed a large patch to update the Go frontend and libgo to
>> the recent changes in the gofrontend repository.  I had postponed
>> merging changes during the GCC 7 release process.  I am now merging
>> all the changes that were pending during that period.  Although this
>> is a merged patch, the changes can be seen individually in the
>> gofrontend repo (https://go.googlesource.com/gofrontend).  They are
>> also listed below.
>>
>> This is a fairly significant patch that brings in the concurrent
>> garbage collector used in the Go 1.8 runtime.  This significantly
>> reduces pauses due to garbage collection while running a Go program.
>>
>> This patch also brings in experimental support for AIX for gccgo,
>> contributed by Matthieu Sarter and others at Atos Infogérance.
>>
>> The actual patch is too large for this e-mail patch, but I have
>> attached all the changes to the gcc/go directory.
>>
>> Ian
>
>
> This causes a build failure on aarch64-linux-gnu:
> ../../../gcc/libgo/runtime/proc.c: In function ‘runtime_malg’:
> ../../../gcc/libgo/runtime/proc.c:729:43: warning: implicit
> declaration of function ‘mstats’; did you mean ‘mstart1’?
> [-Wimplicit-function-declaration]
>     void *p = runtime_sysAlloc(stacksize, &mstats()->other_sys);
>                                            ^~~~~~
>                                            mstart1
> ../../../gcc/libgo/runtime/proc.c:729:51: error: invalid type argument
> of ‘->’ (have ‘int’)
>     void *p = runtime_sysAlloc(stacksize, &mstats()->other_sys);
>                                                    ^~
>

Just FYI the reason why it fails on aarch64-linux-gnu and not
x86_64-linux-gnu is because this code is only enabled for targets
which don't not support split stacks.

Thanks,
andrew Pinski

>
> Thanks,
> Andrew
>
>
>
>>
>>
>> 2017-05-10  Than McIntosh  <thanm@google.com>
>>
>> * go-backend.c: Include "go-c.h".
>> * go-gcc.cc (Gcc_backend::write_export_data): New method.
>>
>> 2017-05-10  Ian Lance Taylor  <iant@google.com>
>>
>> * go-gcc.cc (Gcc_backend::Gcc_backend): Declare
>> __builtin_prefetch.
>> * Make-lang.in (GO_OBJS): Add go/wb.o.
>>
>> commit 884c9f2cafb3fc1decaca70f1817ae269e4c6889
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Mon Jan 23 15:07:07 2017 -0500
>>
>>     compiler: insert additional conversion for type desc ptr expr
>>
>>     Change the method Type::type_descriptor_pointer to apply an additional
>>     type conversion to its result Bexpression, to avoid type clashes in
>>     the back end. The backend expression for a given type descriptor var
>>     is given a type of "_type", however the virtual calls that create the
>>     variable use types derived from _type, hence the need to force a
>>     conversion.
>>
>>     Reviewed-on: https://go-review.googlesource.com/35506
>>
>>
>> commit 5f0647c71e3b29eddcd0eecc44e7ba44ae7fc8dd
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Mon Jan 23 15:22:26 2017 -0500
>>
>>     compiler: insure tree integrity in Call_expression::set_result
>>
>>     Depending on the back end, it can be problematic to reuse Bexpressions
>>     (passing the same Bexpression to more than one Backend call to create
>>     additional Bexpressions or Bstatements). The Call_expression::set_result
>>     method was reusing its Bexpression input in more than one tree
>>     context; the fix is to pass in an Expression instead and generate
>>     multiple Bexpression references to it within the method.
>>
>>     Reviewed-on: https://go-review.googlesource.com/35505
>>
>>
>> commit 7a8e49870885af898c3c790275e513d1764a2828
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Tue Jan 24 21:19:06 2017 -0800
>>
>>     runtime: copy more of the scheduler from the Go 1.8 runtime
>>
>>     Copies mstart, newm, m0, g0, and friends.
>>
>>     Reviewed-on: https://go-review.googlesource.com/35645
>>
>>
>> commit 3546e2f002d0277d805ec59c5403bc1d4eda4ed9
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Jan 26 19:47:37 2017 -0800
>>
>>     runtime: remove a few C functions that are no longer used
>>
>>     Reviewed-on: https://go-review.googlesource.com/35849
>>
>>
>> commit a71b835254f6d3164a0e6beaf54f2b175d1a6a92
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Jan 26 16:51:16 2017 -0800
>>
>>     runtime: copy over more of the Go 1.8 scheduler
>>
>>     In particular __go_go (aka newproc) and goexit[01].
>>
>>     Reviewed-on: https://go-review.googlesource.com/35847
>>
>>
>> commit c3ffff725adbe54d8283c373b6aa7dc95d6fc27f
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Jan 27 16:58:20 2017 -0800
>>
>>     runtime: copy syscall handling from Go 1.8 runtime
>>
>>     Entering a syscall still has to start in C, to save the registers.
>>     Fix entersyscallblock to save them more reliably.
>>
>>     This copies over the tracing code for syscalls, which we previously
>>     weren't doing, and lets us turn on runtime/trace/check.
>>
>>     Reviewed-on: https://go-review.googlesource.com/35912
>>
>>
>> commit d5b921de4a28b04000fc4c8dac7f529a4a624dfc
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Jan 27 18:34:11 2017 -0800
>>
>>     runtime: copy SIGPROF handling from Go 1.8 runtime
>>
>>     Also copy over Breakpoint.
>>
>>     Fix Func.Name and Func.Entry to not crash on a nil Func.
>>
>>     Reviewed-on: https://go-review.googlesource.com/35913
>>
>>
>> commit cc60235e55aef14b15c3d2114030245beb3adfef
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Mon Feb 6 11:12:12 2017 -0500
>>
>>     compiler: convert go_write_export_data to Backend method.
>>
>>     Convert the helper function 'go_write_export_data' into a Backend
>>     class method, to allow for an implementation of this function that
>>     needs to access backend state.
>>
>>     Reviewed-on: https://go-review.googlesource.com/36357
>>
>>
>> commit e387439bfd24d5e142874b8e68e7039f74c744d7
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Wed Feb 8 11:13:46 2017 -0500
>>
>>     compiler: insert backend conversion in temporary statement init
>>
>>     Insert an additional type conversion in Temporary_statement::do_get_backend
>>     when assigning a Bexpression initializer to the temporary variable, to
>>     avoid potential clashes in the back end. This can come up when assigning
>>     something of concrete pointer-to-function type to a variable of generic
>>     pointer-to-function type.
>>
>>     Reviewed-on: https://go-review.googlesource.com/36591
>>
>>
>> commit c5acf0ce09e61ff623847a35a99da465b8571609
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 1 17:57:53 2017 +0100
>>
>>     libgo: build tags for aix
>>
>>     Build tags for the libgo source files required to build
>>     libgo on AIX.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37633
>>
>>
>> commit 67ed19616898ea18a101ec9325b82d028cd395d9
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 2 15:41:31 2017 +0100
>>
>>     libgo: handle AIX tag in match.sh and gotest
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37638
>>
>>
>> commit 83ea2d694c10b2dd83fc8620c43da13d20db754e
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 1 17:48:16 2017 +0100
>>
>>     libgo: add AIX support in configure and Makefile
>>
>>     - support for GOOS=aix
>>     - CFLAGS/GOCFLAGS/LDFLAGS for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37632
>>
>>
>> commit 35d577fe22ffa16a3ccaadf5dae9f6f425c8ec8c
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Mon Mar 6 15:00:15 2017 +0100
>>
>>     runtime: adapt memory management to AIX mmap
>>
>>     On AIX:
>>     * mmap does not allow to map an already mapped range,
>>     * mmap range start at 0x30000000 for 32 bits processes,
>>     * mmap range start at 0x70000000_00000000 for 64 bits processes
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37845
>>
>>
>> commit 4e49e56a5fd4072b4ca7fcefe4158d6885d9ee62
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Mon Mar 6 13:42:26 2017 +0100
>>
>>     runtime: add getproccount implementation for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37844
>>
>>
>> commit ff626470294237ac664127894826614edc46a3d0
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Mon Mar 6 17:31:21 2017 +0100
>>
>>     runtime: handle ERESTART errno with AIX's wait4
>>
>>     On AIX, wait4 may return with errno set to ERESTART, which causes
>> unexepected
>>     behavior (for instance, go build may exit with the message "wait: restart
>>     system call" after running a command, even if it was successfull).
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37846
>>
>>
>> commit 37daabbfc83d533b826ef9ab10e2dee7406e7198
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Mon Mar 6 11:02:58 2017 +0100
>>
>>     runtime: support for AIX's procfs tree
>>
>>     On AIX, the process executable file is available under
>> /proc/<pid>/object/a.out
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37842
>>
>>
>> commit a0275c039d56acf4bf48151978c1a4ec5758cc2c
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Mar 8 07:00:05 2017 -0800
>>
>>     libgo/Makefile.am: don't use nonportable \n or \t in sed expression
>>
>>     The resulting zstdpktlist.go is less pretty, but it works.
>>
>>     Reviewed-on: https://go-review.googlesource.com/37940
>>
>>
>> commit 29b190f76105aafa2b50b48249afdafecc97a4be
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 9 16:02:34 2017 +0100
>>
>>     runtime: netpoll and semaphores for AIX
>>
>>     semaphore implementation based on Solaris implementation in
>>     libgo/go/runtime/os_solaris.go
>>
>>     netpoll is just a stub to avoid build failure on AIX.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37966
>>
>>
>> commit 55ca6d3f3cddf0ff9ccb074b2694da9fc54de7ec
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 9 15:38:30 2017 +0100
>>
>>     libmain: ensure initfn is called when loading a go library
>>
>>     AIX does not support .init_array.
>>     The alterative is to export the __go_init function and tell the linker
>>     it is an init function with the -Wl,-binitfini:__go_init option.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37965
>>
>>
>> commit 349a30d17d880ac8bc1a35e1a2ffee6d6e870ae9
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Mar 10 11:15:08 2017 +0100
>>
>>     libgo: use an import list for missing symbols
>>
>>     libgo depends on symbols provided by Go programs at runtime. On AIX,
>>     this requires either to build libgo with -Wl,-berok linker option and
>>     the programs with -Wl,-brtl, or to provide a list of imported symbols
>>     when building libgo. The second options seems preferable, to avoid
>>     requiring an additional option for every Go program.
>>
>>     There are also some symbols that are specific to GNU ld and do not
>>     exist when linking with AIX ld (__data_start, __edata, __etext and
>>     __bss_start).
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37969
>>
>>
>> commit 91db0ea1ff068ca1d97b9c99612100ea5b96ddb2
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 8 15:34:45 2017 +0100
>>
>>     crypto/x509: add certificate files locations for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/37952
>>
>>
>> commit 92e521c854e91709b949548c47e267377850f26a
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Mar 10 14:10:11 2017 -0800
>>
>>     compiler: fix check for pointer in Temporary_reference_expression
>>
>>     The check for an unrepresentable pointer in
>>     Temporary_reference_expression::do_get_backend was incorrectly
>>     translated from C to Go in https://golang.org/cl/14346043.  Fix the
>>     check to use points_to rather than has_pointer and deref.  This should
>>     not make any difference in practice as either way the condition will
>>     only be true for a pointer to void, but points_to is correct and more
>>     efficient.
>>
>>     Reviewed-on: https://go-review.googlesource.com/38009
>>
>>
>> commit 9a0b676e59e7171a630c48fdc3d4de6712bad0ca
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 16 16:51:53 2017 +0100
>>
>>     libgo: add missing _arpcom struct to *sysinfo.go
>>
>>     This struct is filtered due to having a field of type _in6_addr,
>>     but other types exported to *sysinfo.go are depending on it.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38251
>>
>>
>> commit 61262a757bdd3d9a595ab6a90f68c0c4ebed7bc1
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 16 18:27:46 2017 +0100
>>
>>     syscall: raw_ptrace stub for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38253
>>
>>
>> commit 8029632b50880fd9b5e39299c738b38e3386595f
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 15 16:58:37 2017 +0100
>>
>>     libgo: adapt runtime.inc to AIX
>>
>>     * Two AIX types are wrongfully exported to runtime.inc as their names
>>       make them look like a Go type.
>>     * The sigset go type conflicts with a system sigset type.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38192
>>
>>
>> commit 25f3a90d14bc268479369ecc0eada72791612f86
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 15 16:58:37 2017 +0100
>>
>>     libgo: update Makefile.in, accidentally omitted from last change
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38310
>>
>>
>> commit d52b4895616b66f93b460366527e74336829aaa5
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 16 18:39:26 2017 +0100
>>
>>     syscall: TIOCSCTTY does not exist on AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38254
>>
>>
>> commit ff1ec3847a4472008e5d53a98b6694b1e54ca322
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 16 18:07:34 2017 +0100
>>
>>     syscall: syscall does not exist on AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38252
>>
>>
>> commit c1ee60dabf0b243a0b0286215481a5d326c34596
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Mar 17 17:18:18 2017 +0100
>>
>>     net: EAI_OVERFLOW does not exist on AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38266
>>
>>
>> commit ad4ad29aed9f70b14b39b488bfeb9ee745382ec4
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Mar 17 17:23:56 2017 +0100
>>
>>     net: sockopt/sockoptip stubs for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38267
>>
>>
>> commit 5d7db2d7542fe7082f426d42f8c2ce14aad6df55
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Mar 17 16:35:05 2017 +0100
>>
>>     os/user: add listgroups stub for AIX
>>
>>     This is required to build os/user.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38263
>>
>>
>> commit 4e57a7973e9fa4cb5ab977c6d792e62a8f7c5795
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 22 11:11:30 2017 +0100
>>
>>     os: fix readdirnames for AIX
>>
>>     Largefile implementation should be used on AIX.
>>
>>     readdir64_r function returns 9 and sets result to NULL when
>>     reaching end of directory, so this return code should not
>>     always be considered as an error.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38359
>>
>>
>> commit b34036967d1ec57b25e3debe077439b4210a1d4a
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Mar 17 17:39:31 2017 +0100
>>
>>     libgo: adapt sigtab.go to AIX
>>
>>     On AIX, _NSIG is not directly defined to its integer value in
>>     gen-sysinfo.go.
>>     The real value is _SIGMAX32+1 or _SIGMAX64+1, depending if we are
>>     building a 32bit ligbo or a 64bit libgo, so we need to read one of
>>     those constants to set nsig value in mksigtab.sh
>>
>>     This change also ensures that all signal numbers from 0 to nsig-1
>>     are referenced in sigtable.
>>
>>     Reviewed-on: https://go-review.googlesource.com/38268
>>
>>
>> commit 20991c32671a183ec859b4f285df37fdd4634247
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 23 17:28:09 2017 +0100
>>
>>     syscall: missing import in socket_bsd.go
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38369
>>
>>
>> commit c34754bd9adf5496c4c26257eaa50793553c11e8
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 22 17:57:01 2017 +0100
>>
>>     sycall: WCOREDUMP macro is not defined on AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38363
>>
>>
>> commit 4f38813482227b12ea0ac6ac1b981ff9ef9853ef
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 23 17:44:43 2017 +0100
>>
>>     libgo: additional build tags for AIX
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38510
>>
>>
>> commit d117ede6ff5a7083e9c40eba28a0f94f3535d773
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 23 17:48:46 2017 +0100
>>
>>     go/build: add AIX to "go build" command known OS
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38511
>>
>>
>> commit 7b0ddaa6a6a71f9eb1c374122d29775b13c2cac5
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Mar 23 09:57:01 2017 -0700
>>
>>     compiler: don't crash if imported package imports this one
>>
>>     When building a test it's OK if test code imports a package that
>>     imports this one. The go tool is supposed to catch cases where this
>>     creates an impossible initialization order. The compiler already has
>>     code to permit this in Gogo::add_import_init_fn. This CL avoids a
>>     compiler crash on a similar case when writing out the export data.
>>
>>     I have no test case for this. Basically it pushes a compiler crash
>>     into an error reported elsewhere.
>>
>>     Problem was reported by Tony Reix.
>>
>>     Reviewed-on: https://go-review.googlesource.com/38462
>>
>>
>> commit 925636975d075e3e3353823b09db3f933f23cb03
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Mar 29 14:14:18 2017 -0700
>>
>>     runtime: copy finalizer support from Go 1.8 runtime
>>
>>     Reviewed-on: https://go-review.googlesource.com/38794
>>
>>
>> commit 1ccb22b96cb3b1011db0e427877d9ddecb577fa9
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Mar 30 15:21:06 2017 +0200
>>
>>     runtime: initcontext and setcontext stubs for AIX
>>
>>     Further investigations are required to understand the clobbering
>>     issue and implement a proper fix. Until then, those stubs are
>>     required to allow the build to complete.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38930
>>
>>
>> commit 27db481f369b54256063c72b911d22390c59199c
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 29 18:07:25 2017 +0200
>>
>>     os: fix Readlink failure on AIX
>>
>>     AIX readlink routine returns an error if the link is longer
>>     than the buffer, instead of truncating the link.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38700
>>
>>
>> commit c93babbf48eddd0bc34d4179ffb302dc60087299
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 29 17:26:35 2017 +0200
>>
>>     compiler: implement support for reading AIX big archives
>>
>>     This is required to read go export from a Go library.
>>
>>     Code courtesy of Damien Bergamini from Atos Infogérance.
>>
>>     Issue golang/go#19200
>>     Reviewed-on: https://go-review.googlesource.com/38698
>>
>>
>> commit 930dd53482bdee3a9074850d168d0b9d7819c135
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 6 18:50:11 2017 -0700
>>
>>     compiler: fix whether conversions are static initializers
>>
>>     The compiler was incorrectly treating type conversions from string to
>>     int or vice-versa as static initializers.  That doesn't work, as those
>>     conversions are implemented via a function call.
>>
>>     This case may never actually arise but it seems like the right thing to do.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39872
>>
>>
>> commit f02691e4195728dbf06f4dde0853c6bccc922183
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 6 17:24:08 2017 -0700
>>
>>     compiler, runtime: don't let slices point past end of memory block
>>
>>     When Go code uses a slice expression like [:len(str)] or [:cap(slice)],
>>     it's natural for the resulting pointer to point just past the end of
>>     the memory block.  If the next memory block is not live, we now have a
>>     live pointer to a dead block, which will unnecessarily keep the block
>>     alive.  That wastes space, and with the new Go 1.8 GC (not yet
>>     committed) will trigger an error when using GODEBUG=gccheckmark=1.
>>
>>     This changes the implementation of slice expressions to not move the
>>     pointer if the resulting string length or slice capacity is 0.  When
>>     the length/capacity is zero, the pointer is never used anyhow.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39870
>>
>>
>> commit 17527c35b027e1afcc318faf5563909e1e9d44a6
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 6 15:30:11 2017 -0700
>>
>>     compiler: emit write barriers
>>
>>     The Go 1.8 concurrent GC requires optional write barriers for all
>>     assignments that may change pointer values in the heap or in a global
>>     variable.  For details see https://blog.golang.org/go15gc.
>>
>>     This changes the gofrontend code to emit write barriers as needed.
>>     This is in preparation for future changes.  At the moment the write
>>     barriers will do nothing.  They test runtime.writeBarrier.enabled,
>>     which will never be non-zero.  They call simple functions which just
>>     do a move without doing any of the other operations required by the
>>     write barrier.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39852
>>
>>
>> commit c0b00f072bf34b2c288e1271ec8118b88c4f6f6f
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Tue Apr 11 17:47:29 2017 +0200
>>
>>     libgo: allow building gox files from PIC objects
>>
>>     libtool builds non-PIC objects in the same directory as .lo files
>>     and PIC objects in a .libs subdirectory.
>>     BUILDGOX rule uses the non-PIC objects to build the gox files,
>>     but on AIX only the PIC objects are built.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/40355
>>
>>
>> commit ea0f3da174c5503a209043f14ddda34871cfec52
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 6 19:06:14 2017 -0700
>>
>>     compiler: add code to generate a ptrmask for a type
>>
>>     The Go 1.8 garbage collector uses a ptrmask for all types below a
>>     certain size.  A ptrmask is simply a bit vector with a single bit for
>>     each pointer-sized word in the value.  The bit is 1 if the type has a
>>     pointer in that position, 0 if it does not.
>>
>>     This change adds code to the compiler to generate a ptrmask.  The code
>>     is not used by anything yet, it is just compiled.  It will be used
>>     when we switch over to the Go 1.8 garbage collector.
>>
>>     The new Array_type::int_length method, and the new memory_size
>>     methods, will also be used by other patches coming later.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39873
>>
>>
>> commit 3029e1df3be3614d196a03c15e50e68ff850aa4c
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 7 10:31:39 2017 -0700
>>
>>     compiler: add code to generate a gcprog for a type
>>
>>     The Go 1.8 garbage collector uses a gcprog for all types above a
>>     certain size.  A gcprog describes where the pointers are in the type,
>>     using a simple bytecode machine that supports repeating bits.  The
>>     effect is to permit using much less space to describe arrays.  The
>>     format is described in runtime/mbitmap.go in the docs for runGCProg.
>>     This is not yet added to the gofrontend, but can be seen in the gc sources.
>>
>>     This change adds code to the compiler to generate a gcprog.  The code
>>     is not used by anything yet, it is just compiled.  It will be used
>>     when we switch over to the Go 1.8 garbage collector.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39923
>>
>>
>> commit 8b01ef1e9176d20f4c9e667972fe031069a4d057
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 13 07:00:35 2017 -0700
>>
>>     compiler: add ptrdata computations and expressions
>>
>>     For the upcoming Go 1.8 GC we need to compute the "ptrdata" of a type:
>>     the number of bytes in the type that can contain pointers.  For types
>>     that do not contain pointers this number is zero.  For many types it
>>     is a number larger than zero but smaller than the total size of the
>>     type.  The Go 1.8 GC uses this number to make loops looking for
>>     pointers run faster by not scanning the suffix of a value that can not
>>     contain a pointer.
>>
>>     Unfortunately there are two subtly different definitions of ptrdata,
>>     and we need both.  The first is the simple one: the prefix that can
>>     contain pointers.  The second is the number of bytes described by the
>>     gcprog for the type.  Recall that we describe the exact position of
>>     pointers in a type using either a ptrmask or a gcprog.  The ptrmask is
>>     simpler, the gcprog uses less space.  We use the gcprog for large
>>     types, currently defined as types that are more than 2048 bytes.  When
>>     the Go 1.8 runtime expands a gcprog, it verifies that the gcprog
>>     describes exactly the same number of bytes as the ptrdata field in the
>>     type descriptor.  If the last pointer-containing portion of a type is
>>     an array, and if the elements of the array have a ptrdata that is less
>>     than the size of the element type, then the simple definition of the
>>     ptrdata will not include the final non-pointer-containing bytes of the
>>     last element of the array.  However, the gcprog will define the array
>>     using a repeat count, and will therefore include the full size of the
>>     last element of the array.  So for a type that needs a gcprog, the
>>     ptrdata field in the type descriptor must be the size of the data
>>     described by the gcprog, and that is not necessarily the same as the
>>     simple ptrdata.
>>
>>     It might seem that we can always use the gcprog version of the ptrdata
>>     calculation, since that is what will appear in a type descriptor, but
>>     it turns out that for global variables we always use a ptrmask, not a
>>     gcprog, even if the global variable is large.  This is because gcprogs
>>     are handled by expanding them into a ptrmask at runtime, and for a
>>     global variable there is no natural place to put the ptrmask.  Simpler
>>     to always use the ptrmask.  That means that we need to describe the
>>     size of the ptrmask, and that means that we need an expression for the
>>     simple form of the ptrdata.
>>
>>     This CL implements the ptrdata calculation.  This code is not actually
>>     used yet.  It will be used later when the Go 1.8 GC is committed.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40573
>>
>>
>> commit 7a37331303b572412179a08141f1dd35339d40c8
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 06:55:48 2017 -0700
>>
>>     compiler: zero length arrays never contain pointers
>>
>>     Reviewed-on: https://go-review.googlesource.com/40696
>>
>>
>> commit c242f0508a64d3d74a28d498cbaeda785ff76258
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 07:26:54 2017 -0700
>>
>>     bytes: disable allocations test on gccgo
>>
>>     It turns out that testing.AllocsPerRun has not been producing correct
>>     results with the current gccgo memory allocator.  When we update to
>>     the Go 1.8 memory allocator, testing.AllocsPerRun will work again, and
>>     this test will fail due to lack of escape analysis.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40700
>>
>>
>> commit 0dc369f1d63376a36bfb0999a1b0377fd444bfab
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Tue Apr 11 16:22:38 2017 +0200
>>
>>     os: alternative way to find executable path, using Args[0]
>>
>>     AIX does not provide a proper way to find the original
>>     executable path from procfs, which contains just an
>>     hardlink.
>>     Executable path can be found using Args[0], Getcwd and
>>     $PATH.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/40353
>>
>>
>> commit f9bad1342569b338e3b2ea9f12ffc6d3d3fa3028
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 08:01:19 2017 -0700
>>
>>     compiler: don't write struct with multiple sink fields to C header file
>>
>>     When writing a struct to the C header file used by the C runtime code,
>>     a single sink field is fine: it will be called "_", which is valid C.
>>     There are structs with single sink fields that we want to write out,
>>     such as finblock.  As it happens, though, the Go 1.8 runtime has a
>>     struct with two sink fields, gcControllerState, which will produce a C
>>     definition with two fields named "_", which will fail.  Since we don't
>>     need to know that struct in C, rather than fix the general case, just
>>     punt if the struct has multiple sink fields.
>>
>>     After the conversion to the Go 1.8 GC, we may be able to get rid of
>>     the C header file anyhow.  I'm not sure yet.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40701
>>
>>
>> commit cfc28901a572aeb15b2f10a38f79eec04c64dfb2
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 10:07:23 2017 -0700
>>
>>     runtime: disable allocations test on gccgo
>>
>>     It turns out that testing.AllocsPerRun has not been producing correct
>>     results with the current gccgo memory allocator.  When we update to
>>     the Go 1.8 memory allocator, testing.AllocsPerRun will work again, and
>>     these tests will fail due to lack of escape analysis.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40703
>>
>>
>> commit 36fedd76edaa48b9ec09709a70d9e4abaddf0caf
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 10:47:06 2017 -0700
>>
>>     runtime: remove unused size argument from hash/equal fns
>>
>>     The size argument was removed from hash and equal functions in CL
>>     34983.  Somehow I missed removing them from three of the predefined
>>     functions.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40770
>>
>>
>> commit 90f6accb48d2e78cad8955b9292933f6ce3fe4c8
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 13:23:05 2017 -0700
>>
>>     runtime: remove unused stack.go
>>
>>     We're never going to use stack.go for gccgo.  Although a build tag
>>     keeps it from being built, even having it around can be confusing.
>>     Remove it.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40774
>>
>>
>> commit befa71603fc66a214e01ac219f2bba36e19f136f
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 13:18:34 2017 -0700
>>
>>     runtime: build fastlog
>>
>>     Take out the build tags which were preventing fastlog2 from being
>>     built.  It's used by the upcoming Go 1.8 GC.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40773
>>
>>
>> commit b7e19e9be4ab4c3cd8f4c9506d79a8cd56bace40
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Fri Apr 14 10:04:23 2017 -0700
>>
>>     runtime: add tests from Go 1.8
>>
>>     Some runtime package tests never made it into the gofrontend repo for
>>     some reason.  Add them now.
>>     Reviewed-on: https://go-review.googlesource.com/40869
>>
>>
>> commit 1feef185aebd71bc2a09b9a04287461806096610
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Mon Apr 17 16:26:11 2017 -0700
>>
>>     runtime: change mcall to take a Go function value
>>
>>     For future work in bringing in the Go 1.8 GC, change the mcall
>>     function to take a Go function value, which means that mcall can take
>>     a closure rather than just a straight C function pointer.
>>
>>     As part of this change move kickoff from C to Go, which we want to do
>>     anyhow so that we run the write barriers that it generates.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40935
>>
>>
>> commit c3db34f4efc2d610f74a01dd2ad7775f48889b29
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Tue Apr 11 16:11:26 2017 +0200
>>
>>     runtime: netpoll implementation for AIX
>>
>>     Code courtesy of Damien Bergamini from Atos Infogérance.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/40352
>>
>>
>> commit f5634dff40e53ad9ce61afd67fd07334e3af9d1f
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Tue Apr 18 22:06:07 2017 -0700
>>
>>     runtime: move mstart from Go to C
>>
>>     The assignments done in mstart must be done without write barriers, as
>>     mstart is running without an m or p.  In the gc toolchain the
>>     equivalent code to intialize g and g->m is written in assembler;
>>     on GNU/Linux, it's in the clone function.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40989
>>
>>
>> commit 671d7c74592f4b6fe3665af279482ba0ea47ca2d
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Tue Apr 18 17:47:28 2017 -0700
>>
>>     compiler: varargs slices do not escape in runtime
>>
>>     Also, don't try to allocate an empty slice on the stack, as it will
>>     confuse the GCC backend.
>>
>>     Also add a few trivial style, code formatting, and debug output fixes.
>>
>>     Updates golang/go#17431
>>
>>     Reviewed-on: https://go-review.googlesource.com/40983
>>
>>
>> commit 94699d25f31353bf03419eda56b15993a39f3275
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Tue Apr 18 17:30:09 2017 -0700
>>
>>     compiler: add Ptrmask_symbol_expression
>>
>>     Add an expression to evaluate to the ptrmask for a type.  This will be
>>     used for global variables, which always use a ptrmask no matter how
>>     large they are.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40981
>>
>>
>> commit bfff1654eac5b9288fa6c431e66cba8c9da6a660
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Mon Apr 17 10:51:16 2017 -0700
>>
>>     runtime: change g's in systemstack
>>
>>     The systemstack function in the gc toolchain changes to a different g.
>>     This is often used to get more stack space; the gofrontend uses a
>>     different stack growth mechanism that does not require changing g's,
>>     so we've been running with a version of systemstack that keeps the
>>     same g.  However, the garbage collector has various tests to verify
>>     that it is running on g0 rather than on a normal g.  For simplicity,
>>     change the gofrontend version of systemstack to change to a different
>>     g just as the gc toolchain does.
>>
>>     This permits us to uncomment some sanity checks in notetsleep.
>>     Doing that requires us to fix up a couple of places where C code calls
>>     {start,stop}TheWorldWithSema while not on g0.
>>
>>     Note that this does slow down some code in the runtime package
>> unnecessarily.
>>     It may be useful to find some places where the runtime calls
>>     systemstack only to get more stack space and change it to use some
>>     other function.  That other function would act like systemstack in the
>>     gc toolchain but simply call the argument in the gofrontend.
>>
>>     Reviewed-on: https://go-review.googlesource.com/40973
>>
>>
>> commit b2ccc7601ce71a7c5732154cf9b2eeea64681469
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 10:36:12 2017 -0700
>>
>>     compiler, runtime: include ptrmask in GC roots
>>
>>     Change the list of registered GC roots to include a ptrmask,
>>     and change the data structures to be easily used from Go code.
>>     The new ptrmask will be used by the Go 1.8 GC to only scan pointers.
>>     Tweak the current GC to use the new structures, but ignore the new
>>     ptrmask information for now.
>>
>>     The new GC root data includes the size of the variable.  The size is
>>     not currently used, but will be used later by the cgo checking code.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41075
>>
>>
>> commit 9e065149970bc180e4ca83bb99c74d9c4f43b47b
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 12:23:16 2017 -0700
>>
>>     compiler, runtime: don't pass size to __go_new
>>
>>     There is no reason to pass the size to __go_new, as the type
>>     descriptor includes the size anyhow.  This makes the function
>>     correspond to the Go 1.8 function runtime.newobject, which is what we
>>     will use when we update to the Go 1.8 memory allocator.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41080
>>
>>
>> commit c321de7b738c4a3387c1842919c9305acfa04c57
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 13:13:56 2017 -0700
>>
>>     compiler, runtime, reflect: make type descriptors more like Go 1.8
>>
>>     Change the type descriptor structure to be more like the one in the Go
>>     1.8 runtime.  Specifically we add the ptrdata field, rename the gc
>>     field to gcdata and change the type to *byte, and rearrange a few of
>>     the fields.  The structure is still not identical to the Go 1.8
>>     structure--we don't use any of the tricks to reduce overall executable
>>     size--but it is more similar.
>>
>>     For now we don't use the new ptrdata field, and the gcdata field is
>>     still the old format rather than the new Go 1.8 ptrmask/gcprog format.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41081
>>
>>
>> commit 7b70c52cddeebea9ebeac003f8c6aad59497e5f0
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 14:54:29 2017 -0700
>>
>>     reflect: make sure to clear unusable hash/equal function
>>
>>     Otherwise we wind up copying the one from the prototype, which is wrong.
>>
>>     Also rewrite the hash/equal functions to look like the ones in Go 1.8,
>>     mainly a matter of changing names and using arrayAt.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41133
>>
>>
>> commit 84d26f467f7de8bdbb0d230458135fe1b6b2a99d
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 14:59:13 2017 -0700
>>
>>     runtime: remove duplicate declarations of SetFinalizer/KeepAlive
>>
>>     These should have been removed in CL 38794.  It's a bug that the
>>     compiler even permits these duplicate declarations.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41134
>>
>>
>> commit f85ff7e64c24031f6d0bd7c9c426b6176cb95160
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 15:56:32 2017 -0700
>>
>>     runtime: don't crash if panicstring called with no m
>>
>>     It's possible for runtime_panicstring to be called with no m if a
>>     signal handler, or scheduler innards, do something wrong.  If that
>>     happens carry on with the panic rather than crashing.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41137
>>
>>
>> commit 5b362b04f642afb8b20715930416fc3b7d91bb12
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Fri Mar 31 14:35:48 2017 -0400
>>
>>     compiler: fix for expr sharing introduced by Order_eval::statement.
>>
>>     When processing an expression statement with a top-level call
>>     that returns multiple results, Order_eval::statement can wind up
>>     creating a tree that has multiple references to the same call,
>>     which results in a confusing AST dump. Change the implementation
>>     to avoid introducing this unwanted sharing.
>>
>>     Reviewed-on: https://go-review.googlesource.com/39210
>>
>>
>> commit b05b4260a68695bf9c9cc29e14ae86ca2699458a
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 16:00:28 2017 -0700
>>
>>     runtime: restore correct m in gtraceback
>>
>>     If gtraceback is used to get a stack trace of a g running in the same m,
>>     as can happen if we collect a stack trace from a g0, then restore the
>>     old m value, don't clear it.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41138
>>
>>
>> commit ca8bbf4dfac19b3f4f7ce21a688b96a418c75031
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 16:03:24 2017 -0700
>>
>>     runtime: set startpc field when starting a new goroutine
>>
>>     This puts the right value in a trace--previously it was always zero.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41139
>>
>>
>> commit ca8bbf4dfac19b3f4f7ce21a688b96a418c75031
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 16:03:24 2017 -0700
>>
>>     runtime: set startpc field when starting a new goroutine
>>
>>     This puts the right value in a trace--previously it was always zero.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41139
>>
>>
>> commit 887690dce42d7bf8f711f8ea082e4928fb70f2a5
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 17:06:11 2017 -0700
>>
>>     runtime: add prefetch functions
>>
>>     The Go 1.8 GC uses prefetch functions.  Add versions for gccgo that
>>     call __builtin_prefetch.  Uncomment the test for them in testAtomic64.
>>     Don't force the check function to return early, as now taking the
>>     address of a local variable in the runtime package does not force it
>>     onto the heap.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41144
>>
>>
>> commit 4269db69f9184e5a45c54aaee7352425a1f88bff
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 17:55:21 2017 -0700
>>
>>     runtime: split up ticks to get correct alignment
>>
>>     On 32-bit x86 a uint64 variable by itself is aligned to an 8-byte boundary.
>>     A uint64 field in a struct is aligned to a 4-byte boundary.
>>     The runtime.ticks variable has a uint64 field that must be aligned
>>     to an 8-byte boundary.  Rather than rely on luck, split up the struct
>>     into separate vars so that the required alignment happens reliably.
>>
>>     It would be much nicer if issue golang/go#19057 were fixed somehow,
>>     but that is for another day.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41143
>>
>>
>> commit 66926cabdbdbf3431b4f172f7756e195c1c6c513
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Apr 20 17:15:38 2017 +0200
>>
>>     libgo: fix bad value for O_CLOEXEC on AIX 7.1
>>
>>     On AIX 7.1, O_CLOEXEC is defined as 0x0000001000000000, which
>>     creates an integer constant overflow error when building libgo.
>>
>>     This affects only 7.1, O_CLOEXEC is not defined on 6.1 (and
>>     defaults to O in sysinfo.go) and is defined as 0x00800000 on
>>     AIX 7.2.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/41214
>>
>>
>> commit af288ff10aeafc47651f5def327ed56425d5be19
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 20 17:15:02 2017 -0700
>>
>>     runtime: preserve stack context in tracebackothers
>>
>>     The tracebackothers function works by saving the current stack context
>>     in the goroutine's context field and then calling gogo to switch to a
>>     new goroutine.  The new goroutine will collect its own stack trace and
>>     then call gogo to switch back to the original goroutine.  This works
>>     fine, but if the original goroutine was called by mcall then the
>>     contents of its context field are needed to return from the mcall.
>>     Fix this by saving the stack context across the calls to the other
>>     goroutines.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41293
>>
>>
>> commit 43101e5956e793f1b4de05c15d7738c785e927df
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Apr 21 10:58:52 2017 +0200
>>
>>     os/user: use _posix_* libc functions
>>
>>     libc getpwnam_r function has a different signature, we must use
>>     _posix_getpwnam_r instead (by default, the pwd.h system include
>>      file defines getpwnam_r as a static function calling
>>     _posix_getpwnam_r, so a C program calling getpwnam_r will indeed
>>     reference the _posix_getpwnam_r symbol).
>>
>>     Idem for getpwuid_r, getgrnam_r and getgrgid_r.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/41334
>>
>>
>> commit 71e1fec4d2a536591ea6657a06916a17b5127071
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Apr 19 21:24:48 2017 -0700
>>
>>     runtime: don't use pointers in g_ucontext_t or stackcontext
>>
>>     The g_ucontext_t type holds registers saved for a goroutine.  We have
>>     to scan it for pointers, but since registers don't necessarily hold
>>     pointers we have to scan it conservatively.  That means that it should
>>     not have a pointer type, since the GC will always scan pointers.
>>     Instead it needs special treatment to be scanned conservatively.
>>     The current GC doesn't care when a pointer type holds a non-pointer,
>>     but the Go 1.8 GC does.
>>
>>     For the current GC this means we have to explicitly scan the
>>     g_ucontext_t values in a G.
>>
>>     While we're at it change stackcontext to be uintptr too.  The entries
>>     in stackcontext never hold pointers that the Go GC cares about.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41270
>>
>>
>> commit eab2960aee91d3e3a6baa5b1bce01262d24c714f
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Thu Apr 20 17:08:19 2017 -0700
>>
>>     runtime/internal/sys: define Goexperiment
>>
>>     The gc toolchain defines Goexperiment based on the environment
>>     variable GOEXPERIMENT when the toolchain is built.  We just always set
>>     Goexperiment to the empty string.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41292
>>
>>
>> commit be4a751943265c0637da859d15a4faf162f5c478
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Thu Apr 20 14:04:35 2017 +0200
>>
>>     net: sockopt implementation for AIX
>>
>>     This is a copy of the Linux implementation, it allows to
>>     run some simple client/server applications on AIX, while
>>     the current sockopt stubs don't.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/41213
>>
>>
>> commit 46a669c4ca5b80fd6f6a0a42095804d9f704611d
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Mar 29 17:55:06 2017 +0200
>>
>>     math: fix sign for atan/expm1/log1p(-0)
>>
>>     AIX libc returns +0 for atan(-0), expm1(-0) and log1p(-0),
>>     while matching Go functions must return -0.
>>
>>     Code courtesy of Tony Reix.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/38699
>>
>>
>> commit 53b0e809130038a46f0a3d2870e3905f44ab888d
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Apr 26 17:29:22 2017 +0200
>>
>>     runtime: fix context clobbering on AIX
>>
>>     On AIX 64-bits, r13 is a pointer to thread data.
>>     setcontext() overwrites r13 with the value saved by getcontext().
>>     So, when a goroutine is scheduled on a new thread, r13 will point
>>     to the old thread data after calling setcontext().
>>
>>     Code courtesy of Damien Bergamini.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/41854
>>
>>
>> commit f8d5ebd71c71e6e777200530d8204b92619157f8
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Wed Apr 26 18:01:19 2017 +0200
>>
>>     runtime: fix wrong time calculation in semasleep
>>
>>     tv_nsec is added twice when calculating the sleep end time.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/41855
>>
>>
>> commit ef56097f4ea848d48fbf61eba1c757fe7fce99d3
>> Author: Matthieu Sarter <matthieu.sarter.external@atos.net>
>> Date:   Fri Apr 28 10:27:32 2017 +0200
>>
>>     libgo: pass $(NM) value when running benchmarks
>>
>>     On AIX, we need to use "nm -B" instead of "nm", to have the
>>     epxected output format, so the configured $(NM) value from
>>     the Makefile should be exported before running gotest, which
>>     defaults to "nm" if $NM is not set.
>>
>>     Issue golang/go#19200
>>
>>     Reviewed-on: https://go-review.googlesource.com/42051
>>
>>
>> commit 0fb550083ae474fb964435927b899ec8e4b62771
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Wed Nov 16 21:12:53 2016 -0800
>>
>>     runtime: copy garbage collector from Go 1.8 runtime
>>
>>     This giant patch replaces the old Go 1.4 memory allocator and garbage
>>     collector with the new Go 1.8 code.  The memory allocator is fairly
>>     similar, though now written in Go rather than C.  The garbage
>>     collector is completely different.  It now uses ptrmask and gcprog
>>     information, which requires changes in the compiler and the reflect
>>     package as well as the runtime.  And, of course, the garbage collector
>>     now runs concurrently with program execution.
>>
>>     In the gc toolchain the garbage collector is strict and precise at all
>>     levels.  In the gofrontend we do not have stack maps, so stacks, and
>>     register values, are collected conservatively.  That means that an
>>     old, no longer used, pointer on a stack or in a register can cause a
>>     memory object to live longer than it should.  That in turns means that
>>     we must disable some checks for invalid pointers in the garbage
>>     collection code.  Not only can we get an invalid pointer on the stack;
>>     the concurrent nature of the collector means that we can in effect
>>     resurrect a block that was already unmarked but that the collector had
>>     not yet gotten around to freeing, and that block can in turn point to
>>     other blocks that the collector had managed to already free.  So we
>>     must disable pointer checks in general.  In effect we are relying on
>>     the fact that the strict pointer checks in the gc toolchain ensure
>>     that the garbage collector is correct, and we just assume that it is
>>     correct for the gofrontend since we are using the same code.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41307
>>
>>
>> commit a95078d501175240d095500a8c5fbfb21bec65cb
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Mon Apr 24 16:33:47 2017 -0700
>>
>>     libgo/Makefile: clean more files
>>
>>     Fix up the mostlyclean, clean, and distclean targets to better follow
>>     https://www.gnu.org/prep/standards/html_node/Standard-Targets.html.
>>
>>     Reviewed-on: https://go-review.googlesource.com/41625
>>
>>
>> commit 5956bf1055451cf4239cdfeca259c23b1ded54d8
>> Author: Ian Lance Taylor <iant@golang.org>
>> Date:   Mon May 8 13:35:11 2017 -0700
>>
>>     libgo: delete goc2c
>>
>>     The last .goc file has been removed, so remove goc2c.
>>
>>     The goc2c program was my first contribution to the gc repository that
>>     was more than 100 lines:
>>     https://github.com/golang/go/commit/2b57a1124e87b0dc8bc1ff6899297b4d7d6e74f2
>>     The program was used in gc for a few years under various guises but
>>     was finally removed in https://golang.org/cl/132680043.  Now we can
>>     remove it from gofrontend as well.
>>
>>     Reviewed-on: https://go-review.googlesource.com/42911
>>
>>
>> commit a222e35d041de0cd42506b61c93b8209e07702b9
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Tue May 9 10:33:10 2017 -0400
>>
>>     compiler: set "need_init_fn" when adding gc root
>>
>>     Variables that back slice initializers in certain cases have to be
>>     added to the gc roots list, since they can be modified at runtime. The
>>     code that was doing this addition did not update the flag that tracks
>>     whether the package being compiled needs an initializer function,
>>     which resulted in the call in question being left out of the final
>>     generated code in certain cases. Fix is to change Gogo::add_gc_root()
>>     to update the "needs init" flag.
>>
>>     Reviewed-on: https://go-review.googlesource.com/43030
>>
>>
>> commit 822ab419bf7d1c705cdce1c12133e7a11f56be2e
>> Author: Than McIntosh <thanm@google.com>
>> Date:   Tue May 9 11:36:51 2017 -0400
>>
>>     compiler: fix variable context nit in write barrier generation
>>
>>     Update the write barrier generation code to insure that the "lvalue
>>     context" tag on the space var expression is set only in the case where
>>     the expr feeds directly into an assignment. This is somewhat
>>     counter-intuitive, but needed in the case where the backend looks at
>>     context tags.
>>
>>     Reviewed-on: https://go-review.googlesource.com/43031


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]