From: Bryan C. Mills Date: Wed, 11 Jan 2017 22:39:41 +0000 (-0500) Subject: runtime: avoid clobbering C callee-save register in cgoSigtramp X-Git-Tag: go1.8rc2~1^2~29 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fdde7ba2a2d35839d26c09ca79f1d8f3398f6e02;p=gostls13.git runtime: avoid clobbering C callee-save register in cgoSigtramp Use R11 (a caller-saved temp register) instead of RBX (a callee-saved register). I believe this only affects linux/amd64, since it is the only platform with a non-trivial cgoSigtramp implementation. Updates #18328. Change-Id: I3d35c4512624184d5a8ece653fa09ddf50e079a2 Reviewed-on: https://go-review.googlesource.com/35068 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s index 839df16406..6ddcb30ae2 100644 --- a/src/runtime/sys_linux_amd64.s +++ b/src/runtime/sys_linux_amd64.s @@ -330,9 +330,9 @@ sigtrampnog: // Lock sigprofCallersUse. MOVL $0, AX MOVL $1, CX - MOVQ $runtime·sigprofCallersUse(SB), BX + MOVQ $runtime·sigprofCallersUse(SB), R11 LOCK - CMPXCHGL CX, 0(BX) + CMPXCHGL CX, 0(R11) JNZ sigtramp // Skip stack trace if already locked. // Jump to the traceback function in runtime/cgo.