Sorry about the breakage. Thanks for the patch.
On Fri, Dec 7, 2018 at 9:23 AM Ian Lance Taylor <i...@golang.org> wrote: > On Fri, Dec 7, 2018 at 2:07 AM Rainer Orth <r...@cebitec.uni-bielefeld.de> > wrote: > > > > > This libgo patch by Cherry Zhang adds support for precise stack > > > scanning to the Go runtime. This uses per-function stack maps stored > > > in the exception tables in the language-specific data area. The > > > compiler needs to generate these stack maps; currently this is only > > > done by a version of LLVM, not by GCC. Each safepoint in a function > > > 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. > > > > > > 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 GNU/Linux. > > > > > > Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed > > > to mainline. > > > > this broke Solaris (and other non-Linux) bootstrap: > > > > /vol/gcc/src/hg/trunk/local/libgo/go/runtime/stubs_nonlinux.go:20:1: > error: missing return at end of function > > 20 | } > > | ^ > > > > Fixed by returning 0 for now, the return value is ignored in > > go/runtime/proc <https://goto.google.com/runtime/proc>.go (scang) > anyway. > > Thanks. Committed to mainline. > > Ian > > -- > You received this message because you are subscribed to the Google Groups > "gofrontend-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to gofrontend-dev+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. >