diff options
Diffstat (limited to '')
-rw-r--r-- | go-patches/0001-runtime-allow-builtin-write-function-to-be-redirecte.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/go-patches/0001-runtime-allow-builtin-write-function-to-be-redirecte.patch b/go-patches/0001-runtime-allow-builtin-write-function-to-be-redirecte.patch deleted file mode 100644 index 3b44b363..00000000 --- a/go-patches/0001-runtime-allow-builtin-write-function-to-be-redirecte.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "Jason A. Donenfeld" <Jason@zx2c4.com> -Date: Thu, 3 Dec 2020 13:29:58 +0100 -Subject: [PATCH] runtime: allow builtin write function to be redirected with - function pointer - -The x/sys/windows package currently uses go:linkname for other facilities -inside of runtime that are not suitable to be exposed as a public API -due to their dangers but are still necessary for manipulating any -low-level plumbing that the runtime controls. - -Logging, via the built-in println and panic handler, is one such -low-level plumbing feature. In this case, x/sys/windows/svc needs to be -able to redirect panics to the Windows event log. Because the event log -is a complicated interface, this requires a bit more fiddling than the -simple solution used on Android (baking it into runtime itself), and -because Windows services are very diverse, the event log might not even -always be a desirable destination. - -This commit accomplishes this by exposing a function pointer called -"overrideWrite" that low-level runtime packages like x/sys/windows/svc -can use to redirect output logs toward the event log or otherwise. - -It is not safe or acceptable to use as a generic mechanism, and for that -reason, we wouldn't want to expose this as a real stable API, similar to -the other instances of go:linkname in x/sys/windows. But for packages -that must interoperate with low-level Go runtime fundamentals, this is a -safety hatch for packages that are developed in tandem with the runtime. -x/sys/windows is one such package. - -Updates #42888. - -Change-Id: I77a32ff7e1494324e8cc38e792e007f86d32672d ---- - src/runtime/time_nofake.go | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/runtime/time_nofake.go b/src/runtime/time_nofake.go -index 5a4ceaf43d..68c01805a5 100644 ---- a/src/runtime/time_nofake.go -+++ b/src/runtime/time_nofake.go -@@ -20,9 +20,14 @@ func nanotime() int64 { - return nanotime1() - } - -+var overrideWrite func(fd uintptr, p unsafe.Pointer, n int32) int32 -+ - // write must be nosplit on Windows (see write1) - // - //go:nosplit - func write(fd uintptr, p unsafe.Pointer, n int32) int32 { -+ if overrideWrite != nil { -+ return overrideWrite(fd, noescape(p), n) -+ } - return write1(fd, p, n) - } |