gcc/libgo/go
Ian Lance Taylor c43137e800 runtime: add precise stack scan support
This CL adds support of precise stack scan using stack maps to
    the runtime. The stack maps are generated by the compiler (if
    supported). Each safepoint is associated with a (real or dummy)
    landing pad, and its "type info" in the exception table is a
    pointer to the stack map. When a stack is scanned, the stack map
    is found by the stack unwinding code by inspecting the exception
    table (LSDA).
    
    For precise stack scan we need to unwind the stack. There are
    three cases:
    
    - If a goroutine is scanning its own stack, it can unwind the
      stack and scan the frames.
    
    - If a goroutine is scanning another, stopped, goroutine, it
      cannot directly unwind the target stack. We handle this by
      switching (runtime.gogo) to the target g, letting it unwind
      and scan the stack, and switch back.
    
    - If we are scanning a goroutine that is blocked in a syscall,
      we send a signal to the target goroutine's thread, and let the
      signal handler unwind and scan the stack. Extra care is needed
      as this races with enter/exit syscall.
    
    Currently this is only implemented on linux.
    
    Reviewed-on: https://go-review.googlesource.com/c/140518

From-SVN: r266832
2018-12-05 23:09:51 +00:00
..
archive libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
bufio libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
builtin libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
bytes libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
cmd cmd/vet: use default compiler when determining type sizes 2018-12-04 14:29:11 +00:00
compress libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
container libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
context libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
crypto libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
database/sql libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
debug libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
encoding libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
errors
expvar libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
flag libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
fmt libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
go compiler: add '$' to names in expression export data 2018-11-27 21:25:58 +00:00
golang_org/x libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
hash libgo: support x32 as GOARCH=amd64p32 GOOS=linux 2018-10-01 20:17:11 +00:00
html libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
image libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
index/suffixarray libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
internal compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
io libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
log libgo: fix improperly mangled linker symbol directive 2018-10-26 16:53:24 +00:00
math libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
mime libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
net libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
os runtime, os: fix the build on Solaris 2018-09-26 03:29:07 +00:00
path libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
plugin libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
reflect libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
regexp libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
runtime runtime: add precise stack scan support 2018-12-05 23:09:51 +00:00
sort libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
strconv libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
strings libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
sync compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
syscall syscall: remove Flock for aix/ppc64 2018-12-05 01:11:02 +00:00
testing libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
text libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
time libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
unicode libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00