]> Cypherpunks repositories - gostls13.git/commit
runtime: store incremented PC in result of runtime.Callers
authorKeith Randall <khr@google.com>
Mon, 7 Jan 2019 20:24:01 +0000 (12:24 -0800)
committerKeith Randall <khr@golang.org>
Tue, 8 Jan 2019 18:24:50 +0000 (18:24 +0000)
commit232c9793092115870a430ef3c9ef9ae04f9e25c9
tree31a4c66eb18b2909705b3cbdebe2e30dab1ddf3c
parenta1d5e8adfa4d2f1043f4617fe20994ddbb7cc25c
runtime: store incremented PC in result of runtime.Callers

In 1.11 we stored "return addresses" in the result of runtime.Callers.
I changed that behavior in CL 152537 to store an address in the call
instruction itself. This CL reverts that part of 152537.

The change in 152537 was made because we now store pcs of inline marks
in the result of runtime.Callers as well. This CL will now store the
address of the inline mark + 1 in the results of runtime.Callers, so
that the subsequent -1 done in CallersFrames will pick out the correct
inline mark instruction.

This CL means that the results of runtime.Callers can be passed to
runtime.FuncForPC as they were before. There are a bunch of packages
in the wild that take the results of runtime.Callers, subtract 1, and
then call FuncForPC. This CL keeps that pattern working as it did in
1.11.

The changes to runtime/pprof in this CL are exactly a revert of the
changes to that package in 152537 (except the locForPC comment).

Update #29582

Change-Id: I04d232000fb482f0f0ff6277f8d7b9c72e97eb48
Reviewed-on: https://go-review.googlesource.com/c/156657
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/runtime/pprof/proto.go
src/runtime/pprof/proto_test.go
src/runtime/pprof/protomem_test.go
src/runtime/symtab.go
src/runtime/traceback.go