gcc/libgo/go
Ian Lance Taylor b2264b0964 runtime: allocate _panic struct on heap
The gc library allocates a _panic struct on the stack. This does not
    work for gccgo, because when a deferred function recovers the panic we
    unwind the stack up to that point so that returning from the function
    will work correctly.
    
    Allocating on the stack fine if the panic is not recovered, and it
    works fine if the panic is recovered by a function that
    returns. However, it fails if the panic is recovered by a function
    that itself panics, and if that second panic is then recovered by a
    function higher up on the stack. When we unwind the stack to that
    second panic, the g will wind up pointing at a panic farther down on
    the stack. Even then everything will often work fine, except when the
    deferred function catching the second panic makes a bunch of calls
    that use stack space before returning. In that case the code can
    overwrite the panic struct, which will then cause disaster when we
    remove the struct from the linked list, as the link field will be
    garbage. This case is rare enough that all the x86 tests were passing,
    but there was a failure on ppc64le.
    
    Before https://golang.org/cl/33414 we allocated the panic struct on
    the heap, so go back to doing that again.
    
    Fixes golang/go#18228.
    
    Reviewed-on: https://go-review.googlesource.com/34027

From-SVN: r243444
2016-12-08 15:54:30 +00:00
..
archive Update libgo/configure to restore it to the master version. 2016-11-18 04:05:10 +00:00
bufio
builtin
bytes
cmd re PR go/77910 (go: open zversion.go: no such file or directory) 2016-11-22 21:04:27 +00:00
compress Update libgo/configure to restore it to the master version. 2016-11-18 04:05:10 +00:00
container
context runtime: copy channel code from Go 1.7 runtime 2016-10-10 16:52:09 +00:00
crypto libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
database/sql
debug debug/elf: add sparc64 relocations 2016-10-14 17:16:55 +00:00
encoding Update libgo/configure to restore it to the master version. 2016-11-18 04:05:10 +00:00
errors
exp Correct gcc/go/gofrontend/lex.cc and libgo/aclocal.m4 to the versions in the gofrontend repo... 2016-11-18 04:15:46 +00:00
expvar
flag
fmt
go
golang_org/x/net
hash libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
html
image
index/suffixarray
internal syscall, internal/syscall/unix: Fix getrandom, clone on sparc64 2016-10-12 14:28:05 +00:00
io libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
log
math
mime
net libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
os libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
path libgo: update to Go 1.7.1 release 2016-09-10 13:14:00 +00:00
reflect runtime: rewrite panic/defer code from C to Go 2016-11-22 17:58:04 +00:00
regexp
runtime runtime: allocate _panic struct on heap 2016-12-08 15:54:30 +00:00
sort
strconv
strings
sync
syscall syscall: don't use pt_regs in clone_linux.c 2016-10-13 04:19:57 +00:00
testing
text text/template: reduce maxExecDepth for gccgo further 2016-08-08 22:55:29 +00:00
time re PR go/78144 (FAIL: time on systems with tzdata2016g installed) 2016-10-28 20:21:52 +00:00
unicode