From 5cf4e442a5dc1f4a1d6f3fd04b1083bc192e648e Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Fri, 25 Jan 2019 18:56:22 +1100 Subject: runtime: fix syscall.NewCallback to return all bits for uintptr values syscall.NewCallback mistakenly used MOVL even for windows/amd64, which only returned the lower 32 bits regardless of the architecture. This was due to a copy and paste after porting from windows/386. The code now uses MOVQ, which will return all the available bits. Also adjust TestReturnAfterStackGrowInCallback to ensure we never regress. Fixes #29331 Change-Id: I4f5c8021c33f234c2bb7baa9ef7a6b4870172509 Reviewed-on: https://go-review.googlesource.com/c/159579 Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Keith Randall --- src/runtime/sys_windows_amd64.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/runtime/sys_windows_amd64.s') diff --git a/src/runtime/sys_windows_amd64.s b/src/runtime/sys_windows_amd64.s index 612f0a474d..43a26497ad 100644 --- a/src/runtime/sys_windows_amd64.s +++ b/src/runtime/sys_windows_amd64.s @@ -351,7 +351,7 @@ TEXT runtime·callbackasm1(SB),NOSPLIT,$0 ADDQ $64, SP POPFQ - MOVL -8(CX)(DX*1), AX // return value + MOVQ -8(CX)(DX*1), AX // return value POPQ -8(CX)(DX*1) // restore bytes just after the args RET -- cgit v1.3-5-g9baa