mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 22:41:28 +08:00
runtime: fix sigprof frame counting
If sigtramp and sigtrampgo are both on stack, n -= framesToDiscard is executed twice, which should actually run only once. Reviewed-on: https://go-review.googlesource.com/c/159238 From-SVN: r268366
This commit is contained in:
parent
fac31afe6a
commit
6065f1c588
@ -1,4 +1,4 @@
|
||||
c2cac0ba0a92e74d5675c3c9f4e53d2567dbc903
|
||||
5af8ee0693944c280b1f529450dbfd4ec1ee451d
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -3542,14 +3542,13 @@ func sigprof(pc uintptr, gp *g, mp *m) {
|
||||
for i := 0; i < n; i++ {
|
||||
if stklocs[i].function == "runtime.sigtrampgo" && i+2 < n {
|
||||
framesToDiscard = i + 2
|
||||
n -= framesToDiscard
|
||||
}
|
||||
if stklocs[i].function == "runtime.sigtramp" && i+2 < n {
|
||||
framesToDiscard = i + 2
|
||||
n -= framesToDiscard
|
||||
break
|
||||
}
|
||||
}
|
||||
n -= framesToDiscard
|
||||
for i := 0; i < n; i++ {
|
||||
stk[i] = stklocs[i+framesToDiscard].pc
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user