]> Cypherpunks.ru repositories - gostls13.git/commitdiff
runtime: unconditionally load AddVectoredContinueHandler on Windows
authorqmuntal <quimmuntal@gmail.com>
Thu, 5 Oct 2023 10:28:42 +0000 (12:28 +0200)
committerQuim Muntal <quimmuntal@gmail.com>
Tue, 17 Oct 2023 20:32:29 +0000 (20:32 +0000)
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 <alex.brainman@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/runtime/os_windows.go
src/runtime/signal_windows.go

index 9d494d1baa1bfe8b567890a4f3452e27d36e15e2..734c94b79406e911c0c396bdadd3a7df3e10278a 100644 (file)
@@ -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 {
index 828625b9af7477bfffe8e2ea94f236374c7a0066..4b7960c1f01130fa6c5f349fb0859c11de443f76 100644 (file)
@@ -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 {