diff --git a/0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch b/0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch deleted file mode 100644 index 072440d..0000000 --- a/0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 817407fc2d6a861e65086388766f58082d38bc0b Mon Sep 17 00:00:00 2001 -From: Michael Munday -Date: Tue, 17 Jan 2017 11:33:38 -0500 -Subject: [PATCH 2/3] syscall: expose IfInfomsg.X__ifi_pad on s390x - -Exposing this field on s390x improves compatibility with the other -linux architectures, all of which already expose it. - -Fixes #18628 and updates #18632. - -Change-Id: I08e8e1eb705f898cd8822f8bee0d61ce11d514b5 ---- - src/syscall/ztypes_linux_s390x.go | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/syscall/ztypes_linux_s390x.go b/src/syscall/ztypes_linux_s390x.go -index 63c4a83b19..b5894255df 100644 ---- a/src/syscall/ztypes_linux_s390x.go -+++ b/src/syscall/ztypes_linux_s390x.go -@@ -449,12 +449,12 @@ type RtAttr struct { - } - - type IfInfomsg struct { -- Family uint8 -- _ uint8 -- Type uint16 -- Index int32 -- Flags uint32 -- Change uint32 -+ Family uint8 -+ X__ifi_pad uint8 -+ Type uint16 -+ Index int32 -+ Flags uint32 -+ Change uint32 - } - - type IfAddrmsg struct { --- -2.14.3 - diff --git a/0003-golang-delete-pem-files.patch b/0003-golang-delete-pem-files.patch deleted file mode 100644 index a4114a1..0000000 --- a/0003-golang-delete-pem-files.patch +++ /dev/null @@ -1,44 +0,0 @@ -From de4a8f2f1c0e7c30dc5f54d19212eb29d01871ed Mon Sep 17 00:00:00 2001 -From: jingrui -Date: Wed, 27 Nov 2019 10:46:52 +0800 -Subject: [PATCH 6/6] golang: delete pem files - -Signed-off-by: jingrui ---- - src/crypto/tls/testdata/example-cert.pem | 11 ----------- - src/crypto/tls/testdata/example-key.pem | 5 ----- - 2 files changed, 16 deletions(-) - delete mode 100644 src/crypto/tls/testdata/example-cert.pem - delete mode 100644 src/crypto/tls/testdata/example-key.pem - -diff --git a/src/crypto/tls/testdata/example-cert.pem b/src/crypto/tls/testdata/example-cert.pem -deleted file mode 100644 -index e0bf7db..0000000 ---- a/src/crypto/tls/testdata/example-cert.pem -+++ /dev/null -@@ -1,11 +0,0 @@ -------BEGIN CERTIFICATE----- --MIIBhTCCASugAwIBAgIQIRi6zePL6mKjOipn+dNuaTAKBggqhkjOPQQDAjASMRAw --DgYDVQQKEwdBY21lIENvMB4XDTE3MTAyMDE5NDMwNloXDTE4MTAyMDE5NDMwNlow --EjEQMA4GA1UEChMHQWNtZSBDbzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD0d --7VNhbWvZLWPuj/RtHFjvtJBEwOkhbN/BnnE8rnZR8+sbwnc/KhCk3FhnpHZnQz7B --5aETbbIgmuvewdjvSBSjYzBhMA4GA1UdDwEB/wQEAwICpDATBgNVHSUEDDAKBggr --BgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdEQQiMCCCDmxvY2FsaG9zdDo1 --NDUzgg4xMjcuMC4wLjE6NTQ1MzAKBggqhkjOPQQDAgNIADBFAiEA2zpJEPQyz6/l --Wf86aX6PepsntZv2GYlA5UpabfT2EZICICpJ5h/iI+i341gBmLiAFQOyTDT+/wQc --6MF9+Yw1Yy0t -------END CERTIFICATE----- -diff --git a/src/crypto/tls/testdata/example-key.pem b/src/crypto/tls/testdata/example-key.pem -deleted file mode 100644 -index 104fb09..0000000 ---- a/src/crypto/tls/testdata/example-key.pem -+++ /dev/null -@@ -1,5 +0,0 @@ -------BEGIN EC PRIVATE KEY----- --MHcCAQEEIIrYSSNQFaA2Hwf1duRSxKtLYX5CB04fSeQ6tF1aY/PuoAoGCCqGSM49 --AwEHoUQDQgAEPR3tU2Fta9ktY+6P9G0cWO+0kETA6SFs38GecTyudlHz6xvCdz8q --EKTcWGekdmdDPsHloRNtsiCa697B2O9IFA== -------END EC PRIVATE KEY----- --- -2.17.1 - diff --git a/0004-syscall-implement-rawVforkSyscall-for-linux-arm64.patch b/0004-syscall-implement-rawVforkSyscall-for-linux-arm64.patch deleted file mode 100644 index bb83fce..0000000 --- a/0004-syscall-implement-rawVforkSyscall-for-linux-arm64.patch +++ /dev/null @@ -1,101 +0,0 @@ -From fa95a1d8e7eda9ab90a7fd29785cad0ae7d816e2 Mon Sep 17 00:00:00 2001 -From: jingrui -Date: Wed, 27 Nov 2019 09:54:22 +0800 -Subject: [PATCH 1/6] syscall: implement rawVforkSyscall for linux/arm64 - -This allows the use of CLONE_VFORK and CLONE_VM for fork/exec, preventing -"fork/exec ...: cannot allocate memory" failures from occuring when attempting -to execute commands from a Go process that has a large memory footprint. -Additionally, this should reduce the latency of fork/exec on linux/arm64. - -With CLONE_VM the child process shares the same memory with the parent -process. On its own this would lead to conflicting use of the same -memory, so CLONE_VFORK is used to suspend the parent process until the -child releases the memory when switching to the new program binary -via the exec syscall. When the parent process continues to run, one -has to consider the changes to memory that the child process did, -namely the return address of the syscall function needs to be restored -from a register. - -exec.Command() callers can start in a faster manner, as child process who -do exec commands job can be cloned faster via vfork than via fork on arm64. - -The same problem was addressed on linux/amd64 via issue #5838. - -Updates #31936 -Contributed by Howard Zhang and Bin Lu - -Change-Id: Ia99d81d877f564ec60d19f17e596276836576eaf -Reviewed-on: https://go-review.googlesource.com/c/go/+/189418 -Run-TryBot: Tobias Klauser -TryBot-Result: Gobot Gobot -Reviewed-by: Tobias Klauser -Reviewed-by: Cherry Zhang ---- - src/syscall/asm_linux_arm64.s | 23 +++++++++++++++++++++++ - src/syscall/exec_linux.go | 2 +- - src/syscall/syscall_linux_arm64.go | 4 +--- - 3 files changed, 25 insertions(+), 4 deletions(-) - -diff --git a/src/syscall/asm_linux_arm64.s b/src/syscall/asm_linux_arm64.s -index 7edeafc..fb22f8d 100644 ---- a/src/syscall/asm_linux_arm64.s -+++ b/src/syscall/asm_linux_arm64.s -@@ -103,6 +103,29 @@ ok: - MOVD ZR, err+72(FP) // errno - RET - -+// func rawVforkSyscall(trap, a1 uintptr) (r1, err uintptr) -+TEXT ·rawVforkSyscall(SB),NOSPLIT,$0-32 -+ MOVD a1+8(FP), R0 -+ MOVD $0, R1 -+ MOVD $0, R2 -+ MOVD $0, R3 -+ MOVD $0, R4 -+ MOVD $0, R5 -+ MOVD trap+0(FP), R8 // syscall entry -+ SVC -+ CMN $4095, R0 -+ BCC ok -+ MOVD $-1, R4 -+ MOVD R4, r1+16(FP) // r1 -+ NEG R0, R0 -+ MOVD R0, err+24(FP) // errno -+ RET -+ok: -+ MOVD R0, r1+16(FP) // r1 -+ MOVD ZR, err+24(FP) // errno -+ RET -+ -+ - // func rawSyscallNoError(trap uintptr, a1, a2, a3 uintptr) (r1, r2 uintptr); - TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48 - MOVD a1+8(FP), R0 -diff --git a/src/syscall/exec_linux.go b/src/syscall/exec_linux.go -index a2242b2..3540d51 100644 ---- a/src/syscall/exec_linux.go -+++ b/src/syscall/exec_linux.go -@@ -196,7 +196,7 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att - } - } - -- hasRawVforkSyscall := runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "s390x" -+ hasRawVforkSyscall := runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "s390x" || runtime.GOARCH == "arm64" - - // About to call fork. - // No more allocation or calls of non-assembly functions. -diff --git a/src/syscall/syscall_linux_arm64.go b/src/syscall/syscall_linux_arm64.go -index 48ad0bb..89b2ab2 100644 ---- a/src/syscall/syscall_linux_arm64.go -+++ b/src/syscall/syscall_linux_arm64.go -@@ -154,6 +154,4 @@ const ( - SYS_EPOLL_WAIT = 1069 - ) - --func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno) { -- panic("not implemented") --} -+func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno) --- -2.17.1 - diff --git a/0005-runtime-fix-crash-during-VDSO-calls-on-arm.patch b/0005-runtime-fix-crash-during-VDSO-calls-on-arm.patch deleted file mode 100644 index 5106d5a..0000000 --- a/0005-runtime-fix-crash-during-VDSO-calls-on-arm.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 8a755c0f0389dca42ec8caef0efa9b6ebe9d1e3c Mon Sep 17 00:00:00 2001 -From: Yuichi Nishiwaki -Date: Wed, 11 Sep 2019 02:26:02 +0000 -Subject: [PATCH 2/6] runtime: fix crash during VDSO calls on arm - -As discussed in #32912, a crash occurs when go runtime calls a VDSO function (say -__vdso_clock_gettime) and a signal arrives to that thread. -Since VDSO functions temporarily destroy the G register (R10), -Go functions asynchronously executed in that thread (i.e. Go's signal -handler) can try to load data from the destroyed G, which causes -segmentation fault. - -To fix the issue a guard is inserted in front of sigtrampgo, so that the control escapes from -signal handlers without touching G in case the signal occurred in the VDSO context. -The test case included in the patch is take from discussion in a relevant thread on github: -https://github.com/golang/go/issues/32912#issuecomment-517874531. -This patch not only fixes the issue on AArch64 but also that on 32bit ARM. - -Fixes #32912 - -Change-Id: I657472e54b7aa3c617fabc5019ce63aa4105624a -GitHub-Last-Rev: 28ce42c4a02a060f08c1b0dd1c9a392123fd2ee9 -GitHub-Pull-Request: golang/go#34030 -Reviewed-on: https://go-review.googlesource.com/c/go/+/192937 -Run-TryBot: Ian Lance Taylor -TryBot-Result: Gobot Gobot -Reviewed-by: Ian Lance Taylor ---- - src/runtime/crash_test.go | 9 +++++ - src/runtime/signal_unix.go | 27 ++++++++++--- - src/runtime/testdata/testprog/vdso.go | 55 +++++++++++++++++++++++++++ - src/runtime/vdso_linux.go | 1 + - 4 files changed, 86 insertions(+), 6 deletions(-) - create mode 100644 src/runtime/testdata/testprog/vdso.go - -diff --git a/src/runtime/crash_test.go b/src/runtime/crash_test.go -index c54bb57..c2cab7c 100644 ---- a/src/runtime/crash_test.go -+++ b/src/runtime/crash_test.go -@@ -143,6 +143,15 @@ func buildTestProg(t *testing.T, binary string, flags ...string) (string, error) - return exe, nil - } - -+func TestVDSO(t *testing.T) { -+ t.Parallel() -+ output := runTestProg(t, "testprog", "SignalInVDSO") -+ want := "success\n" -+ if output != want { -+ t.Fatalf("output:\n%s\n\nwanted:\n%s", output, want); -+ } -+} -+ - var ( - staleRuntimeOnce sync.Once // guards init of staleRuntimeErr - staleRuntimeErr error -diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go -index ad51dc1..63fb07f 100644 ---- a/src/runtime/signal_unix.go -+++ b/src/runtime/signal_unix.go -@@ -274,6 +274,21 @@ func sigpipe() { - dieFromSignal(_SIGPIPE) - } - -+// sigFetchG fetches the value of G safely when running in a signal handler. -+// On some architectures, the g value may be clobbered when running in a VDSO. -+// See issue #32912. -+// -+//go:nosplit -+func sigFetchG(c *sigctxt) *g { -+ switch GOARCH { -+ case "arm", "arm64", "ppc64", "ppc64le": -+ if inVDSOPage(c.sigpc()) { -+ return nil -+ } -+ } -+ return getg() -+} -+ - // sigtrampgo is called from the signal handler function, sigtramp, - // written in assembly code. - // This is called by the signal handler, and the world may be stopped. -@@ -289,9 +304,9 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) { - if sigfwdgo(sig, info, ctx) { - return - } -- g := getg() -+ c := &sigctxt{info, ctx} -+ g := sigFetchG(c) - if g == nil { -- c := &sigctxt{info, ctx} - if sig == _SIGPROF { - sigprofNonGoPC(c.sigpc()) - return -@@ -347,7 +362,6 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) { - signalDuringFork(sig) - } - -- c := &sigctxt{info, ctx} - c.fixsigcode(sig) - sighandler(sig, info, ctx, g) - setg(g) -@@ -650,9 +664,10 @@ func sigfwdgo(sig uint32, info *siginfo, ctx unsafe.Pointer) bool { - return false - } - // Determine if the signal occurred inside Go code. We test that: -- // (1) we were in a goroutine (i.e., m.curg != nil), and -- // (2) we weren't in CGO. -- g := getg() -+ // (1) we weren't in VDSO page, -+ // (2) we were in a goroutine (i.e., m.curg != nil), and -+ // (3) we weren't in CGO. -+ g := sigFetchG(c) - if g != nil && g.m != nil && g.m.curg != nil && !g.m.incgo { - return false - } -diff --git a/src/runtime/testdata/testprog/vdso.go b/src/runtime/testdata/testprog/vdso.go -new file mode 100644 -index 0000000..6036f45 ---- /dev/null -+++ b/src/runtime/testdata/testprog/vdso.go -@@ -0,0 +1,55 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+// Invoke signal hander in the VDSO context (see issue 32912). -+ -+package main -+ -+import ( -+ "fmt" -+ "io/ioutil" -+ "os" -+ "runtime/pprof" -+ "time" -+) -+ -+func init() { -+ register("SignalInVDSO", signalInVDSO) -+} -+ -+func signalInVDSO() { -+ f, err := ioutil.TempFile("", "timeprofnow") -+ if err != nil { -+ fmt.Fprintln(os.Stderr, err) -+ os.Exit(2) -+ } -+ -+ if err := pprof.StartCPUProfile(f); err != nil { -+ fmt.Fprintln(os.Stderr, err) -+ os.Exit(2) -+ } -+ -+ t0 := time.Now() -+ t1 := t0 -+ // We should get a profiling signal 100 times a second, -+ // so running for 1 second should be sufficient. -+ for t1.Sub(t0) < time.Second { -+ t1 = time.Now() -+ } -+ -+ pprof.StopCPUProfile() -+ -+ name := f.Name() -+ if err := f.Close(); err != nil { -+ fmt.Fprintln(os.Stderr, err) -+ os.Exit(2) -+ } -+ -+ if err := os.Remove(name); err != nil { -+ fmt.Fprintln(os.Stderr, err) -+ os.Exit(2) -+ } -+ -+ fmt.Println("success"); -+} -diff --git a/src/runtime/vdso_linux.go b/src/runtime/vdso_linux.go -index 71ba4ce..8518276 100644 ---- a/src/runtime/vdso_linux.go -+++ b/src/runtime/vdso_linux.go -@@ -281,6 +281,7 @@ func vdsoauxv(tag, val uintptr) { - } - - // vdsoMarker reports whether PC is on the VDSO page. -+//go:nosplit - func inVDSOPage(pc uintptr) bool { - for _, k := range vdsoSymbolKeys { - if *k.ptr != 0 { --- -2.17.1 - diff --git a/0006-runtime-save-fetch-g-register-during-VDSO-on-ARM-and.patch b/0006-runtime-save-fetch-g-register-during-VDSO-on-ARM-and.patch deleted file mode 100644 index 717fcd9..0000000 --- a/0006-runtime-save-fetch-g-register-during-VDSO-on-ARM-and.patch +++ /dev/null @@ -1,253 +0,0 @@ -From 4717d9a1a21dfe051a14f033615218d833371d68 Mon Sep 17 00:00:00 2001 -From: jingrui -Date: Wed, 27 Nov 2019 10:19:13 +0800 -Subject: [PATCH 3/6] runtime: save/fetch g register during VDSO on ARM and - ARM64 - -On ARM and ARM64, during a VDSO call, the g register may be -temporarily clobbered by the VDSO code. If a signal is received -during the execution of VDSO code, we may not find a valid g -reading the g register. In CL 192937, we conservatively assume -g is nil. But this approach has a problem: we cannot handle -the signal in this case. Further, if the signal is not a -profiling signal, we'll call badsignal, which calls needm, which -wants to get an extra m, but we don't have one in a non-cgo -binary, which cuases the program to hang. - -This is even more of a problem with async preemption, where we -will receive more signals than before. I ran into this problem -while working on async preemption support on ARM64. - -In this CL, before making a VDSO call, we save the g on the -gsignal stack. When we receive a signal, we will be running on -the gsignal stack, so we can fetch the g from there and move on. - -We probably want to do the same for PPC64. Currently we rely on -that the VDSO code doesn't actually clobber the g register, but -this is not guaranteed and we don't have control with. - -Idea from discussion with Dan Cross and Austin. - -Should fix #34391. - -Change-Id: Idbefc5e4c2f4373192c2be797be0140ae08b26e3 -Reviewed-on: https://go-review.googlesource.com/c/go/+/202759 -Run-TryBot: Cherry Zhang -Reviewed-by: Austin Clements ---- - src/os/signal/signal_test.go | 49 +++++++++++++++++++++++++++++++++++ - src/runtime/proc.go | 3 +++ - src/runtime/signal_unix.go | 24 ++++++++++++----- - src/runtime/sys_linux_arm.s | 32 +++++++++++++++++++++++ - src/runtime/sys_linux_arm64.s | 28 ++++++++++++++++++++ - 5 files changed, 129 insertions(+), 7 deletions(-) - -diff --git a/src/os/signal/signal_test.go b/src/os/signal/signal_test.go -index 6ea59f4..c8274ea 100644 ---- a/src/os/signal/signal_test.go -+++ b/src/os/signal/signal_test.go -@@ -453,3 +453,52 @@ func atomicStopTestProgram() { - - os.Exit(0) - } -+ -+func TestTime(t *testing.T) { -+ // Test that signal works fine when we are in a call to get time, -+ // which on some platforms is using VDSO. See issue #34391. -+ dur := 3 * time.Second -+ if testing.Short() { -+ dur = 100 * time.Millisecond -+ } -+ defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4)) -+ done := make(chan bool) -+ finished := make(chan bool) -+ go func() { -+ sig := make(chan os.Signal, 1) -+ Notify(sig, syscall.SIGUSR1) -+ defer Stop(sig) -+ Loop: -+ for { -+ select { -+ case <-sig: -+ case <-done: -+ break Loop -+ } -+ } -+ finished <- true -+ }() -+ go func() { -+ Loop: -+ for { -+ select { -+ case <-done: -+ break Loop -+ default: -+ syscall.Kill(syscall.Getpid(), syscall.SIGUSR1) -+ runtime.Gosched() -+ } -+ } -+ finished <- true -+ }() -+ t0 := time.Now() -+ for t1 := t0; t1.Sub(t0) < dur; t1 = time.Now() { -+ } // hammering on getting time -+ close(done) -+ <-finished -+ <-finished -+ // When run with 'go test -cpu=1,2,4' SIGUSR1 from this test can slip -+ // into subsequent TestSignal() causing failure. -+ // Sleep for a while to reduce the possibility of the failure. -+ time.Sleep(10 * time.Millisecond) -+} -diff --git a/src/runtime/proc.go b/src/runtime/proc.go -index 93d329d..1487647 100644 ---- a/src/runtime/proc.go -+++ b/src/runtime/proc.go -@@ -3237,6 +3237,9 @@ func malg(stacksize int32) *g { - }) - newg.stackguard0 = newg.stack.lo + _StackGuard - newg.stackguard1 = ^uintptr(0) -+ // Clear the bottom word of the stack. We record g -+ // there on gsignal stack during VDSO on ARM and ARM64. -+ *(*uintptr)(unsafe.Pointer(newg.stack.lo)) = 0 - } - return newg - } -diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go -index 63fb07f..2cf1e3b 100644 ---- a/src/runtime/signal_unix.go -+++ b/src/runtime/signal_unix.go -@@ -280,13 +280,23 @@ func sigpipe() { - // - //go:nosplit - func sigFetchG(c *sigctxt) *g { -- switch GOARCH { -- case "arm", "arm64", "ppc64", "ppc64le": -- if inVDSOPage(c.sigpc()) { -- return nil -- } -- } -- return getg() -+ switch GOARCH { -+ case "arm", "arm64": -+ if inVDSOPage(c.sigpc()) { -+ // Before making a VDSO call we save the g to the bottom of the -+ // signal stack. Fetch from there. -+ // TODO: in efence mode, stack is sysAlloc'd, so this wouldn't -+ // work. -+ sp := getcallersp() -+ s := spanOf(sp) -+ if s != nil && s.state == mSpanManual && s.base() < sp && sp < s.limit { -+ gp := *(**g)(unsafe.Pointer(s.base())) -+ return gp -+ } -+ return nil -+ } -+ } -+ return getg() - } - - // sigtrampgo is called from the signal handler function, sigtramp, -diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s -index 9c73984..26e12a8 100644 ---- a/src/runtime/sys_linux_arm.s -+++ b/src/runtime/sys_linux_arm.s -@@ -246,7 +246,23 @@ noswitch: - CMP $0, R11 - B.EQ fallback - -+ // Store g on gsignal's stack, so if we receive a signal -+ // during VDSO code we can find the g. -+ // If we don't have a signal stack, we won't receive signal, -+ // so don't bother saving g. -+ MOVW m_gsignal(R5), R6 // g.m.gsignal -+ CMP $0, R6 -+ BEQ 3(PC) -+ MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo -+ MOVW g, (R6) -+ - BL (R11) -+ -+ CMP $0, R6 // R6 is unchanged by C code -+ BEQ 3(PC) -+ MOVW $0, R1 -+ MOVW R1, (R6) // clear g slot -+ - JMP finish - - fallback: -@@ -297,7 +313,23 @@ noswitch: - CMP $0, R11 - B.EQ fallback - -+ // Store g on gsignal's stack, so if we receive a signal -+ // during VDSO code we can find the g. -+ // If we don't have a signal stack, we won't receive signal, -+ // so don't bother saving g. -+ MOVW m_gsignal(R5), R6 // g.m.gsignal -+ CMP $0, R6 -+ BEQ 3(PC) -+ MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo -+ MOVW g, (R6) -+ - BL (R11) -+ -+ CMP $0, R6 // R6 is unchanged by C code -+ BEQ 3(PC) -+ MOVW $0, R1 -+ MOVW R1, (R6) // clear g slot -+ - JMP finish - - fallback: -diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s -index 2835b6c..fd40bf9 100644 ---- a/src/runtime/sys_linux_arm64.s -+++ b/src/runtime/sys_linux_arm64.s -@@ -207,7 +207,21 @@ noswitch: - MOVW $CLOCK_REALTIME, R0 - MOVD runtime·vdsoClockgettimeSym(SB), R2 - CBZ R2, fallback -+ -+ // Store g on gsignal's stack, so if we receive a signal -+ // during VDSO code we can find the g. -+ // If we don't have a signal stack, we won't receive signal, -+ // so don't bother saving g. -+ MOVD m_gsignal(R21), R22 // g.m.gsignal -+ CBZ R22, 3(PC) -+ MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo -+ MOVD g, (R22) -+ - BL (R2) -+ -+ CBZ R22, 2(PC) // R22 is unchanged by C code -+ MOVD ZR, (R22) // clear g slot -+ - B finish - - fallback: -@@ -250,7 +264,21 @@ noswitch: - MOVW $CLOCK_MONOTONIC, R0 - MOVD runtime·vdsoClockgettimeSym(SB), R2 - CBZ R2, fallback -+ -+ // Store g on gsignal's stack, so if we receive a signal -+ // during VDSO code we can find the g. -+ // If we don't have a signal stack, we won't receive signal, -+ // so don't bother saving g. -+ MOVD m_gsignal(R21), R22 // g.m.gsignal -+ CBZ R22, 3(PC) -+ MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo -+ MOVD g, (R22) -+ - BL (R2) -+ -+ CBZ R22, 2(PC) // R22 is unchanged by C code -+ MOVD ZR, (R22) // clear g slot -+ - B finish - - fallback: --- -2.17.1 - diff --git a/0007-runtime-don-t-fetch-G-from-signal-stack-when-using-c.patch b/0007-runtime-don-t-fetch-G-from-signal-stack-when-using-c.patch deleted file mode 100644 index 0db9c70..0000000 --- a/0007-runtime-don-t-fetch-G-from-signal-stack-when-using-c.patch +++ /dev/null @@ -1,179 +0,0 @@ -From fce0a59fc370634fcd7de8f8691e918cdf122f7d Mon Sep 17 00:00:00 2001 -From: Cherry Zhang -Date: Thu, 31 Oct 2019 10:32:31 -0400 -Subject: [PATCH 4/6] runtime: don't fetch G from signal stack when using cgo - -When using cgo, we save G to TLS, and when a signal happens, we -load G from TLS in sigtramp. This should give us a valid G. Don't -try to fetch from the signal stack. In particular, C code may -change the signal stack or call our signal handler directly (e.g. -TSAN), so we are not necessarily running on the original gsignal -stack where we saved G. - -Also skip saving G on the signal stack when using cgo. - -Updates #35249. - -Change-Id: I40749ce6682709bd4ebfdfd9f23bd0f317fc197d -Reviewed-on: https://go-review.googlesource.com/c/go/+/204519 -Reviewed-by: Ian Lance Taylor ---- - src/runtime/signal_unix.go | 8 +++++--- - src/runtime/sys_linux_arm.s | 30 ++++++++++++++++++++++-------- - src/runtime/sys_linux_arm64.s | 26 ++++++++++++++++++++------ - 3 files changed, 47 insertions(+), 17 deletions(-) - -diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go -index 2cf1e3b..721edb5 100644 ---- a/src/runtime/signal_unix.go -+++ b/src/runtime/signal_unix.go -@@ -282,9 +282,11 @@ func sigpipe() { - func sigFetchG(c *sigctxt) *g { - switch GOARCH { - case "arm", "arm64": -- if inVDSOPage(c.sigpc()) { -- // Before making a VDSO call we save the g to the bottom of the -- // signal stack. Fetch from there. -+ if !iscgo && inVDSOPage(c.sigpc()) { -+ // When using cgo, we save the g on TLS and load it from there -+ // in sigtramp. Just use that. -+ // Otherwise, before making a VDSO call we save the g to the -+ // bottom of the signal stack. Fetch from there. - // TODO: in efence mode, stack is sysAlloc'd, so this wouldn't - // work. - sp := getcallersp() -diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s -index 26e12a8..a47ac5f 100644 ---- a/src/runtime/sys_linux_arm.s -+++ b/src/runtime/sys_linux_arm.s -@@ -250,21 +250,28 @@ noswitch: - // during VDSO code we can find the g. - // If we don't have a signal stack, we won't receive signal, - // so don't bother saving g. -+ // When using cgo, we already saved g on TLS, also don't save -+ // g here. -+ MOVB runtime·iscgo(SB), R6 -+ CMP $0, R6 -+ BNE nosaveg - MOVW m_gsignal(R5), R6 // g.m.gsignal - CMP $0, R6 -- BEQ 3(PC) -+ BEQ nosaveg - MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo - MOVW g, (R6) - - BL (R11) - -- CMP $0, R6 // R6 is unchanged by C code -- BEQ 3(PC) - MOVW $0, R1 -- MOVW R1, (R6) // clear g slot -+ MOVW R1, (R6) // clear g slot, R6 is unchanged by C code - - JMP finish - -+nosaveg: -+ BL (R11) -+ JMP finish -+ - fallback: - MOVW $SYS_clock_gettime, R7 - SWI $0 -@@ -317,21 +324,28 @@ noswitch: - // during VDSO code we can find the g. - // If we don't have a signal stack, we won't receive signal, - // so don't bother saving g. -+ // When using cgo, we already saved g on TLS, also don't save -+ // g here. -+ MOVB runtime·iscgo(SB), R6 -+ CMP $0, R6 -+ BNE nosaveg - MOVW m_gsignal(R5), R6 // g.m.gsignal - CMP $0, R6 -- BEQ 3(PC) -+ BEQ nosaveg - MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo - MOVW g, (R6) - - BL (R11) - -- CMP $0, R6 // R6 is unchanged by C code -- BEQ 3(PC) - MOVW $0, R1 -- MOVW R1, (R6) // clear g slot -+ MOVW R1, (R6) // clear g slot, R6 is unchanged by C code - - JMP finish - -+nosaveg: -+ BL (R11) -+ JMP finish -+ - fallback: - MOVW $SYS_clock_gettime, R7 - SWI $0 -diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s -index fd40bf9..94c93ca 100644 ---- a/src/runtime/sys_linux_arm64.s -+++ b/src/runtime/sys_linux_arm64.s -@@ -212,18 +212,25 @@ noswitch: - // during VDSO code we can find the g. - // If we don't have a signal stack, we won't receive signal, - // so don't bother saving g. -+ // When using cgo, we already saved g on TLS, also don't save -+ // g here. -+ MOVBU runtime·iscgo(SB), R22 -+ CBNZ R22, nosaveg - MOVD m_gsignal(R21), R22 // g.m.gsignal -- CBZ R22, 3(PC) -+ CBZ R22, nosaveg - MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo - MOVD g, (R22) - - BL (R2) - -- CBZ R22, 2(PC) // R22 is unchanged by C code -- MOVD ZR, (R22) // clear g slot -+ MOVD ZR, (R22) // clear g slot, R22 is unchanged by C code - - B finish - -+nosaveg: -+ BL (R2) -+ B finish -+ - fallback: - MOVD $SYS_clock_gettime, R8 - SVC -@@ -269,18 +276,25 @@ noswitch: - // during VDSO code we can find the g. - // If we don't have a signal stack, we won't receive signal, - // so don't bother saving g. -+ // When using cgo, we already saved g on TLS, also don't save -+ // g here. -+ MOVBU runtime·iscgo(SB), R22 -+ CBNZ R22, nosaveg - MOVD m_gsignal(R21), R22 // g.m.gsignal -- CBZ R22, 3(PC) -+ CBZ R22, nosaveg - MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo - MOVD g, (R22) - - BL (R2) - -- CBZ R22, 2(PC) // R22 is unchanged by C code -- MOVD ZR, (R22) // clear g slot -+ MOVD ZR, (R22) // clear g slot, R22 is unchanged by C code - - B finish - -+nosaveg: -+ BL (R2) -+ B finish -+ - fallback: - MOVD $SYS_clock_gettime, R8 - SVC --- -2.17.1 - diff --git a/0008-runtime-don-t-save-G-during-VDSO-if-we-re-handling-s.patch b/0008-runtime-don-t-save-G-during-VDSO-if-we-re-handling-s.patch deleted file mode 100644 index e71d11f..0000000 --- a/0008-runtime-don-t-save-G-during-VDSO-if-we-re-handling-s.patch +++ /dev/null @@ -1,107 +0,0 @@ -From e83074ea52287115b85002a6b72137c72f6d7ecc Mon Sep 17 00:00:00 2001 -From: Cherry Zhang -Date: Sun, 10 Nov 2019 13:18:06 -0500 -Subject: [PATCH 5/6] runtime: don't save G during VDSO if we're handling - signal - -On some platforms (currently ARM and ARM64), when calling into -VDSO we store the G to the gsignal stack, if there is one, so if -we receive a signal during VDSO we can find the G. - -If we receive a signal during VDSO, and within the signal handler -we call nanotime again (e.g. when handling profiling signal), -we'll save/clear the G slot on the gsignal stack again, which -clobbers the original saved G. If we receive a second signal -during the same VDSO execution, we will fetch a nil G, which will -lead to bad things such as deadlock. - -Don't save G if we're calling VDSO code from the gsignal stack. -Saving G is not necessary as we won't receive a nested signal. - -Fixes #35473. - -Change-Id: Ibfd8587a3c70c2f1533908b056e81b94d75d65a5 -Reviewed-on: https://go-review.googlesource.com/c/go/+/206397 -Run-TryBot: Cherry Zhang -TryBot-Result: Gobot Gobot -Reviewed-by: Bryan C. Mills ---- - src/runtime/sys_linux_arm.s | 8 ++++++++ - src/runtime/sys_linux_arm64.s | 8 ++++++++ - 2 files changed, 16 insertions(+) - -diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s -index a47ac5f..577faac 100644 ---- a/src/runtime/sys_linux_arm.s -+++ b/src/runtime/sys_linux_arm.s -@@ -252,12 +252,16 @@ noswitch: - // so don't bother saving g. - // When using cgo, we already saved g on TLS, also don't save - // g here. -+ // Also don't save g if we are already on the signal stack. -+ // We won't get a nested signal. - MOVB runtime·iscgo(SB), R6 - CMP $0, R6 - BNE nosaveg - MOVW m_gsignal(R5), R6 // g.m.gsignal - CMP $0, R6 - BEQ nosaveg -+ CMP g, R6 -+ BEQ nosaveg - MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo - MOVW g, (R6) - -@@ -326,12 +330,16 @@ noswitch: - // so don't bother saving g. - // When using cgo, we already saved g on TLS, also don't save - // g here. -+ // Also don't save g if we are already on the signal stack. -+ // We won't get a nested signal. - MOVB runtime·iscgo(SB), R6 - CMP $0, R6 - BNE nosaveg - MOVW m_gsignal(R5), R6 // g.m.gsignal - CMP $0, R6 - BEQ nosaveg -+ CMP g, R6 -+ BEQ nosaveg - MOVW (g_stack+stack_lo)(R6), R6 // g.m.gsignal.stack.lo - MOVW g, (R6) - -diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s -index 94c93ca..a076744 100644 ---- a/src/runtime/sys_linux_arm64.s -+++ b/src/runtime/sys_linux_arm64.s -@@ -214,10 +214,14 @@ noswitch: - // so don't bother saving g. - // When using cgo, we already saved g on TLS, also don't save - // g here. -+ // Also don't save g if we are already on the signal stack. -+ // We won't get a nested signal. - MOVBU runtime·iscgo(SB), R22 - CBNZ R22, nosaveg - MOVD m_gsignal(R21), R22 // g.m.gsignal - CBZ R22, nosaveg -+ CMP g, R22 -+ BEQ nosaveg - MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo - MOVD g, (R22) - -@@ -278,10 +282,14 @@ noswitch: - // so don't bother saving g. - // When using cgo, we already saved g on TLS, also don't save - // g here. -+ // Also don't save g if we are already on the signal stack. -+ // We won't get a nested signal. - MOVBU runtime·iscgo(SB), R22 - CBNZ R22, nosaveg - MOVD m_gsignal(R21), R22 // g.m.gsignal - CBZ R22, nosaveg -+ CMP g, R22 -+ BEQ nosaveg - MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo - MOVD g, (R22) - --- -2.17.1 - diff --git a/0013-drop-hard-code-cert.patch b/0013-drop-hard-code-cert.patch deleted file mode 100644 index 1af1acc..0000000 --- a/0013-drop-hard-code-cert.patch +++ /dev/null @@ -1,135 +0,0 @@ -From 2720067ebfb7568792bb0c8fe3fbf095c89b77a9 Mon Sep 17 00:00:00 2001 -From: jingrui -Date: Tue, 17 Mar 2020 17:43:33 +0800 -Subject: [PATCH] drop hard-code cert - -Signed-off-by: jingrui ---- - src/crypto/x509/test-file.crt | 32 --------------------------- - src/crypto/x509/testdata/test-dir.crt | 31 -------------------------- - src/net/http/internal/testcert.go | 31 ++------------------------ - 3 files changed, 2 insertions(+), 92 deletions(-) - delete mode 100644 src/crypto/x509/test-file.crt - delete mode 100644 src/crypto/x509/testdata/test-dir.crt - -diff --git a/src/crypto/x509/test-file.crt b/src/crypto/x509/test-file.crt -deleted file mode 100644 -index caa83b9..0000000 ---- a/src/crypto/x509/test-file.crt -+++ /dev/null -@@ -1,32 +0,0 @@ -------BEGIN CERTIFICATE----- --MIIFbTCCA1WgAwIBAgIJAN338vEmMtLsMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNV --BAYTAlVLMRMwEQYDVQQIDApUZXN0LVN0YXRlMRUwEwYDVQQKDAxHb2xhbmcgVGVz --dHMxEjAQBgNVBAMMCXRlc3QtZmlsZTAeFw0xNzAyMDEyMzUyMDhaFw0yNzAxMzAy --MzUyMDhaME0xCzAJBgNVBAYTAlVLMRMwEQYDVQQIDApUZXN0LVN0YXRlMRUwEwYD --VQQKDAxHb2xhbmcgVGVzdHMxEjAQBgNVBAMMCXRlc3QtZmlsZTCCAiIwDQYJKoZI --hvcNAQEBBQADggIPADCCAgoCggIBAPMGiLjdiffQo3Xc8oUe7wsDhSaAJFOhO6Qs --i0xYrYl7jmCuz9rGD2fdgk5cLqGazKuQ6fIFzHXFU2BKs4CWXt9KO0KFEhfvZeuW --jG5d7C1ZUiuKOrPqjKVu8SZtFPc7y7Ke7msXzY+Z2LLyiJJ93LCMq4+cTSGNXVlI --KqUxhxeoD5/QkUPyQy/ilu3GMYfx/YORhDP6Edcuskfj8wRh1UxBejP8YPMvI6St --cE2GkxoEGqDWnQ/61F18te6WI3MD29tnKXOkXVhnSC+yvRLljotW2/tAhHKBG4tj --iQWT5Ri4Wrw2tXxPKRLsVWc7e1/hdxhnuvYpXkWNhKsm002jzkFXlzfEwPd8nZdw --5aT6gPUBN2AAzdoqZI7E200i0orEF7WaSoMfjU1tbHvExp3vyAPOfJ5PS2MQ6W03 --Zsy5dTVH+OBH++rkRzQCFcnIv/OIhya5XZ9KX9nFPgBEP7Xq2A+IjH7B6VN/S/bv --8lhp2V+SQvlew9GttKC4hKuPsl5o7+CMbcqcNUdxm9gGkN8epGEKCuix97bpNlxN --fHZxHE5+8GMzPXMkCD56y5TNKR6ut7JGHMPtGl5lPCLqzG/HzYyFgxsDfDUu2B0A --GKj0lGpnLfGqwhs2/s3jpY7+pcvVQxEpvVTId5byDxu1ujP4HjO/VTQ2P72rE8Ft --C6J2Av0tAgMBAAGjUDBOMB0GA1UdDgQWBBTLT/RbyfBB/Pa07oBnaM+QSJPO9TAf --BgNVHSMEGDAWgBTLT/RbyfBB/Pa07oBnaM+QSJPO9TAMBgNVHRMEBTADAQH/MA0G --CSqGSIb3DQEBCwUAA4ICAQB3sCntCcQwhMgRPPyvOCMyTcQ/Iv+cpfxz2Ck14nlx --AkEAH2CH0ov5GWTt07/ur3aa5x+SAKi0J3wTD1cdiw4U/6Uin6jWGKKxvoo4IaeK --SbM8w/6eKx6UbmHx7PA/eRABY9tTlpdPCVgw7/o3WDr03QM+IAtatzvaCPPczake --pbdLwmBZB/v8V+6jUajy6jOgdSH0PyffGnt7MWgDETmNC6p/Xigp5eh+C8Fb4NGT --xgHES5PBC+sruWp4u22bJGDKTvYNdZHsnw/CaKQWNsQqwisxa3/8N5v+PCff/pxl --r05pE3PdHn9JrCl4iWdVlgtiI9BoPtQyDfa/OEFaScE8KYR8LxaAgdgp3zYncWls --BpwQ6Y/A2wIkhlD9eEp5Ib2hz7isXOs9UwjdriKqrBXqcIAE5M+YIk3+KAQKxAtd --4YsK3CSJ010uphr12YKqlScj4vuKFjuOtd5RyyMIxUG3lrrhAu2AzCeKCLdVgA8+ --75FrYMApUdvcjp4uzbBoED4XRQlx9kdFHVbYgmE/+yddBYJM8u4YlgAL0hW2/D8p --z9JWIfxVmjJnBnXaKGBuiUyZ864A3PJndP6EMMo7TzS2CDnfCYuJjvI0KvDjFNmc --rQA04+qfMSEz3nmKhbbZu4eYLzlADhfH8tT4GMtXf71WLA5AUHGf2Y4+HIHTsmHG --vQ== -------END CERTIFICATE----- -diff --git a/src/crypto/x509/testdata/test-dir.crt b/src/crypto/x509/testdata/test-dir.crt -deleted file mode 100644 -index b7fc9c5..0000000 ---- a/src/crypto/x509/testdata/test-dir.crt -+++ /dev/null -@@ -1,31 +0,0 @@ -------BEGIN CERTIFICATE----- --MIIFazCCA1OgAwIBAgIJAL8a/lsnspOqMA0GCSqGSIb3DQEBCwUAMEwxCzAJBgNV --BAYTAlVLMRMwEQYDVQQIDApUZXN0LVN0YXRlMRUwEwYDVQQKDAxHb2xhbmcgVGVz --dHMxETAPBgNVBAMMCHRlc3QtZGlyMB4XDTE3MDIwMTIzNTAyN1oXDTI3MDEzMDIz --NTAyN1owTDELMAkGA1UEBhMCVUsxEzARBgNVBAgMClRlc3QtU3RhdGUxFTATBgNV --BAoMDEdvbGFuZyBUZXN0czERMA8GA1UEAwwIdGVzdC1kaXIwggIiMA0GCSqGSIb3 --DQEBAQUAA4ICDwAwggIKAoICAQDzBoi43Yn30KN13PKFHu8LA4UmgCRToTukLItM --WK2Je45grs/axg9n3YJOXC6hmsyrkOnyBcx1xVNgSrOAll7fSjtChRIX72Xrloxu --XewtWVIrijqz6oylbvEmbRT3O8uynu5rF82Pmdiy8oiSfdywjKuPnE0hjV1ZSCql --MYcXqA+f0JFD8kMv4pbtxjGH8f2DkYQz+hHXLrJH4/MEYdVMQXoz/GDzLyOkrXBN --hpMaBBqg1p0P+tRdfLXuliNzA9vbZylzpF1YZ0gvsr0S5Y6LVtv7QIRygRuLY4kF --k+UYuFq8NrV8TykS7FVnO3tf4XcYZ7r2KV5FjYSrJtNNo85BV5c3xMD3fJ2XcOWk --+oD1ATdgAM3aKmSOxNtNItKKxBe1mkqDH41NbWx7xMad78gDznyeT0tjEOltN2bM --uXU1R/jgR/vq5Ec0AhXJyL/ziIcmuV2fSl/ZxT4ARD+16tgPiIx+welTf0v27/JY --adlfkkL5XsPRrbSguISrj7JeaO/gjG3KnDVHcZvYBpDfHqRhCgrosfe26TZcTXx2 --cRxOfvBjMz1zJAg+esuUzSkerreyRhzD7RpeZTwi6sxvx82MhYMbA3w1LtgdABio --9JRqZy3xqsIbNv7N46WO/qXL1UMRKb1UyHeW8g8btboz+B4zv1U0Nj+9qxPBbQui --dgL9LQIDAQABo1AwTjAdBgNVHQ4EFgQUy0/0W8nwQfz2tO6AZ2jPkEiTzvUwHwYD --VR0jBBgwFoAUy0/0W8nwQfz2tO6AZ2jPkEiTzvUwDAYDVR0TBAUwAwEB/zANBgkq --hkiG9w0BAQsFAAOCAgEAvEVnUYsIOt87rggmLPqEueynkuQ+562M8EDHSQl82zbe --xDCxeg3DvPgKb+RvaUdt1362z/szK10SoeMgx6+EQLoV9LiVqXwNqeYfixrhrdw3 --ppAhYYhymdkbUQCEMHypmXP1vPhAz4o8Bs+eES1M+zO6ErBiD7SqkmBElT+GixJC --6epC9ZQFs+dw3lPlbiZSsGE85sqc3VAs0/JgpL/pb1/Eg4s0FUhZD2C2uWdSyZGc --g0/v3aXJCp4j/9VoNhI1WXz3M45nysZIL5OQgXymLqJElQa1pZ3Wa4i/nidvT4AT --Xlxc/qijM8set/nOqp7hVd5J0uG6qdwLRILUddZ6OpXd7ZNi1EXg+Bpc7ehzGsDt --3UFGzYXDjxYnK2frQfjLS8stOQIqSrGthW6x0fdkVx0y8BByvd5J6+JmZl4UZfzA --m99VxXSt4B9x6BvnY7ktzcFDOjtuLc4B/7yg9fv1eQuStA4cHGGAttsCg1X/Kx8W --PvkkeH0UWDZ9vhH9K36703z89da6MWF+bz92B0+4HoOmlVaXRkvblsNaynJnL0LC --Ayry7QBxuh5cMnDdRwJB3AVJIiJ1GVpb7aGvBOnx+s2lwRv9HWtghb+cbwwktx1M --JHyBf3GZNSWTpKY7cD8V+NnBv3UuioOVVo+XAU4LF/bYUjdRpxWADJizNtZrtFo= -------END CERTIFICATE----- -diff --git a/src/net/http/internal/testcert.go b/src/net/http/internal/testcert.go -index 2284a83..a33d06b 100644 ---- a/src/net/http/internal/testcert.go -+++ b/src/net/http/internal/testcert.go -@@ -10,36 +10,9 @@ import "strings" - // "127.0.0.1" and "[::1]", expiring at Jan 29 16:00:00 2084 GMT. - // generated from src/crypto/tls: - // go run generate_cert.go --rsa-bits 1024 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h --var LocalhostCert = []byte(`-----BEGIN CERTIFICATE----- --MIICEzCCAXygAwIBAgIQMIMChMLGrR+QvmQvpwAU6zANBgkqhkiG9w0BAQsFADAS --MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw --MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB --iQKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9SjY1bIw4 --iA5sBBZzHi3z0h1YV8QPuxEbi4nW91IJm2gsvvZhIrCHS3l6afab4pZBl2+XsDul --rKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQABo2gwZjAO --BgNVHQ8BAf8EBAMCAqQwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUw --AwEB/zAuBgNVHREEJzAlggtleGFtcGxlLmNvbYcEfwAAAYcQAAAAAAAAAAAAAAAA --AAAAATANBgkqhkiG9w0BAQsFAAOBgQCEcetwO59EWk7WiJsG4x8SY+UIAA+flUI9 --tyC4lNhbcF2Idq9greZwbYCqTTTr2XiRNSMLCOjKyI7ukPoPjo16ocHj+P3vZGfs --h1fIw3cSS2OolhloGw/XM6RWPWtPAlGykKLciQrBru5NAPvCMsb/I1DAceTiotQM --fblo6RBxUQ== -------END CERTIFICATE-----`) -+var LocalhostCert = []byte(``) - - // LocalhostKey is the private key for localhostCert. --var LocalhostKey = []byte(testingKey(`-----BEGIN RSA TESTING KEY----- --MIICXgIBAAKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9 --SjY1bIw4iA5sBBZzHi3z0h1YV8QPuxEbi4nW91IJm2gsvvZhIrCHS3l6afab4pZB --l2+XsDulrKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQAB --AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet --3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb --uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H --qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp --jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY --fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U --fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU --y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj013sovGKUFfYAqVXVlxtIX --qyUBnu3X9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFeo --f9Oeos0UUothgiDktdQHxdNEwLjQf7lJJBzV+5OtwswCWA== -------END RSA TESTING KEY-----`)) -+var LocalhostKey = []byte(testingKey(``)) - - func testingKey(s string) string { return strings.ReplaceAll(s, "TESTING KEY", "PRIVATE KEY") } --- -2.17.1 - diff --git a/go1.13.15.src.tar.gz b/go1.15.5.src.tar.gz similarity index 67% rename from go1.13.15.src.tar.gz rename to go1.15.5.src.tar.gz index 2b551e2..993c521 100644 Binary files a/go1.13.15.src.tar.gz and b/go1.15.5.src.tar.gz differ diff --git a/golang.spec b/golang.spec index 0e87dee..ba4103a 100644 --- a/golang.spec +++ b/golang.spec @@ -2,8 +2,8 @@ %global _binaries_in_noarch_packages_terminate_build 0 %global golibdir %{_libdir}/golang %global goroot /usr/lib/%{name} -%global go_api 1.13 -%global go_version 1.13 +%global go_api 1.15 +%global go_version 1.15 %global __spec_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot /usr/lib/rpm/brp-compress %global __requires_exclude_from ^(%{_datadir}|/usr/lib)/%{name}/(doc|src)/.*$ %global __strip /bin/true @@ -61,12 +61,12 @@ %endif Name: golang -Version: 1.13.15 +Version: 1.15.5 Release: 1 Summary: The Go Programming Language License: BSD and Public Domain URL: https://golang.org/ -Source0: https://dl.google.com/go/go1.13.15.src.tar.gz +Source0: https://dl.google.com/go/go1.15.5.src.tar.gz %if !%{golang_bootstrap} BuildRequires: gcc-go >= 5 @@ -149,15 +149,6 @@ Obsoletes: %{name}-vim < 1.4 Obsoletes: emacs-%{name} < 1.4 Requires: openEuler-rpm-config -Patch6002: 0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch -Patch6003: 0003-golang-delete-pem-files.patch -Patch6004: 0004-syscall-implement-rawVforkSyscall-for-linux-arm64.patch -Patch6005: 0005-runtime-fix-crash-during-VDSO-calls-on-arm.patch -Patch6006: 0006-runtime-save-fetch-g-register-during-VDSO-on-ARM-and.patch -Patch6007: 0007-runtime-don-t-fetch-G-from-signal-stack-when-using-c.patch -Patch6008: 0008-runtime-don-t-save-G-during-VDSO-if-we-re-handling-s.patch -Patch6014: 0013-drop-hard-code-cert.patch - ExclusiveArch: %{golang_arches} @@ -390,6 +381,9 @@ fi %files devel -f go-tests.list -f go-misc.list -f go-src.list %changelog +* Tue Dec 18 liuzekun - 1.15.5-1 +- upgrade to 1.15.5 + * Tue Aug 18 xiadanni - 1.13.15-1 - upgrade to 1.13.15