diff mbox series

libgo patch committed: Fix sigprof frame counting

Message ID CAOyqgcWDn4Zgu8ku1e-GDaGAyapVqmExPrhKdh7i23SfKh7Ypg@mail.gmail.com
State New
Headers show
Series libgo patch committed: Fix sigprof frame counting | expand

Commit Message

Ian Lance Taylor Jan. 29, 2019, 3:31 p.m. UTC
This libgo patch by Cherry Zhang fixes sigprof frame counting.  If
sigtramp and sigtrampgo are both on stack, n -= framesToDiscard is
executed twice, which should actually run only once.  Bootstrapped and
ran Go testsuite on x86_64-pc-linux-gnu.  Committed to mainline.

Ian
diff mbox series

Patch

Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE	(revision 268358)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -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.
Index: libgo/go/runtime/proc.go
===================================================================
--- libgo/go/runtime/proc.go	(revision 268158)
+++ libgo/go/runtime/proc.go	(working copy)
@@ -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
 		}