From a30967f4ce319754e9c52967d0d72392e672c2c2 Mon Sep 17 00:00:00 2001 From: qmuntal Date: Thu, 5 Oct 2023 12:28:42 +0200 Subject: [PATCH] runtime: unconditionally load AddVectoredContinueHandler on Windows AddVectoredContinueHandler is available since Windows XP [1], there is no need to check if it is available. [1]: https://learn.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-addvectoredcontinuehandler Change-Id: I1ddc3d58b3294d9876620cd46159d9692694b475 Reviewed-on: https://go-review.googlesource.com/c/go/+/532817 Reviewed-by: Alex Brainman Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI Run-TryBot: Quim Muntal TryBot-Result: Gopher Robot Reviewed-by: Than McIntosh --- src/runtime/os_windows.go | 8 ++------ src/runtime/signal_windows.go | 5 ++--- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/runtime/os_windows.go b/src/runtime/os_windows.go index 9d494d1baa1..734c94b7940 100644 --- a/src/runtime/os_windows.go +++ b/src/runtime/os_windows.go @@ -16,6 +16,7 @@ const ( _NSIG = 65 ) +//go:cgo_import_dynamic runtime._AddVectoredContinueHandler AddVectoredContinueHandler%2 "kernel32.dll" //go:cgo_import_dynamic runtime._AddVectoredExceptionHandler AddVectoredExceptionHandler%2 "kernel32.dll" //go:cgo_import_dynamic runtime._CloseHandle CloseHandle%1 "kernel32.dll" //go:cgo_import_dynamic runtime._CreateEventA CreateEventA%4 "kernel32.dll" @@ -72,6 +73,7 @@ var ( // Following syscalls are available on every Windows PC. // All these variables are set by the Windows executable // loader before the Go program starts. + _AddVectoredContinueHandler, _AddVectoredExceptionHandler, _CloseHandle, _CreateEventA, @@ -124,11 +126,6 @@ var ( _WriteFile, _ stdFunction - // Following syscalls are only available on some Windows PCs. - // We will load syscalls, if available, before using them. - _AddVectoredContinueHandler, - _ stdFunction - // Use RtlGenRandom to generate cryptographically random data. // This approach has been recommended by Microsoft (see issue // 15589 for details). @@ -260,7 +257,6 @@ func loadOptionalSyscalls() { if k32 == 0 { throw("kernel32.dll not found") } - _AddVectoredContinueHandler = windowsFindfunc(k32, []byte("AddVectoredContinueHandler\000")) a32 := windowsLoadSystemLib(advapi32dll[:]) if a32 == 0 { diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go index 828625b9af7..4b7960c1f01 100644 --- a/src/runtime/signal_windows.go +++ b/src/runtime/signal_windows.go @@ -49,9 +49,8 @@ func sigresume() func initExceptionHandler() { stdcall2(_AddVectoredExceptionHandler, 1, abi.FuncPCABI0(exceptiontramp)) - if _AddVectoredContinueHandler == nil || GOARCH == "386" { - // use SetUnhandledExceptionFilter for windows-386 or - // if VectoredContinueHandler is unavailable. + if GOARCH == "386" { + // use SetUnhandledExceptionFilter for windows-386. // note: SetUnhandledExceptionFilter handler won't be called, if debugging. stdcall1(_SetUnhandledExceptionFilter, abi.FuncPCABI0(lastcontinuetramp)) } else {