On 04/17/2015 01:29 PM, Ian Lance Taylor wrote:
The libbacktrace library returns a PC that was (usually) decremented
to be part of the call instruction.  The Go code that uses
runtime.Callers does not expect this, and Go code that adjusts the PC
value, such as libgo/go/runtime/pprof/pprof.go, can get fooled by it.
This leads to GCC PRs 64999 and 65180.

There are a couple of bugs in libsanitizer with symptoms similar to
those noted in 65180: 65749 and the related 65479. I've been looking
into these but don't have a patch yet. What I've found is that using
the decremented PC leads to the wrong line numbers on some targets
(e.g, powerpc) while using the correct PC causes the same problem on
others (such as x86_64) as a result of differences in the DWARF line
programs emitted on these targets.

Martin


This patch from Lynn Boger adjusts the PC value so that the Go code
makes the correct adjustments.

Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline and GCC 5 branch.

Ian


Reply via email to