!2 golang: modification of spec
Merge pull request !2 from Grooooot/master
This commit is contained in:
commit
7c558b7cdd
@ -1,88 +0,0 @@
|
||||
From edce31a2904846ae74e3c011f2cf5fddc963459e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jakub=20=C4=8Cajka?= <jcajka@redhat.com>
|
||||
Date: Thu, 22 Mar 2018 12:07:32 +0100
|
||||
Subject: [PATCH 1/3] Don't use the bundled tzdata at runtime, except for the
|
||||
internal test suite
|
||||
|
||||
---
|
||||
src/time/internal_test.go | 7 +++++--
|
||||
src/time/zoneinfo_test.go | 3 ++-
|
||||
src/time/zoneinfo_unix.go | 2 --
|
||||
3 files changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/time/internal_test.go b/src/time/internal_test.go
|
||||
index 76d5524124..e81ace5f64 100644
|
||||
--- a/src/time/internal_test.go
|
||||
+++ b/src/time/internal_test.go
|
||||
@@ -4,13 +4,15 @@
|
||||
|
||||
package time
|
||||
|
||||
+import "runtime"
|
||||
+
|
||||
func init() {
|
||||
// force US/Pacific for time zone tests
|
||||
ForceUSPacificForTesting()
|
||||
}
|
||||
|
||||
func initTestingZone() {
|
||||
- z, err := loadLocation("America/Los_Angeles", zoneSources[len(zoneSources)-1:])
|
||||
+ z, err := loadLocation("America/Los_Angeles", zoneSources)
|
||||
if err != nil {
|
||||
panic("cannot load America/Los_Angeles for testing: " + err.Error())
|
||||
}
|
||||
@@ -21,8 +23,9 @@ func initTestingZone() {
|
||||
var OrigZoneSources = zoneSources
|
||||
|
||||
func forceZipFileForTesting(zipOnly bool) {
|
||||
- zoneSources = make([]string, len(OrigZoneSources))
|
||||
+ zoneSources = make([]string, len(OrigZoneSources)+1)
|
||||
copy(zoneSources, OrigZoneSources)
|
||||
+ zoneSources = append(zoneSources, runtime.GOROOT()+"/lib/time/zoneinfo.zip")
|
||||
if zipOnly {
|
||||
zoneSources = zoneSources[len(zoneSources)-1:]
|
||||
}
|
||||
diff --git a/src/time/zoneinfo_test.go b/src/time/zoneinfo_test.go
|
||||
index 7a55d4f618..6063ca1195 100644
|
||||
--- a/src/time/zoneinfo_test.go
|
||||
+++ b/src/time/zoneinfo_test.go
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"reflect"
|
||||
+ "runtime"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
@@ -128,7 +129,7 @@ func TestLoadLocationFromTZData(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
- tzinfo, err := time.LoadTzinfo(locationName, time.OrigZoneSources[len(time.OrigZoneSources)-1])
|
||||
+ tzinfo, err := time.LoadTzinfo(locationName, runtime.GOROOT()+"/lib/time/zoneinfo.zip")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
diff --git a/src/time/zoneinfo_unix.go b/src/time/zoneinfo_unix.go
|
||||
index 88313aa0ed..d9596115ef 100644
|
||||
--- a/src/time/zoneinfo_unix.go
|
||||
+++ b/src/time/zoneinfo_unix.go
|
||||
@@ -12,7 +12,6 @@
|
||||
package time
|
||||
|
||||
import (
|
||||
- "runtime"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
@@ -22,7 +21,6 @@ var zoneSources = []string{
|
||||
"/usr/share/zoneinfo/",
|
||||
"/usr/share/lib/zoneinfo/",
|
||||
"/usr/lib/locale/TZ/",
|
||||
- runtime.GOROOT() + "/lib/time/zoneinfo.zip",
|
||||
}
|
||||
|
||||
func initLocal() {
|
||||
--
|
||||
2.14.3
|
||||
|
||||
117
0012-release-branch.go1.13-runtime-ensure-memmove-write-p.patch
Normal file
117
0012-release-branch.go1.13-runtime-ensure-memmove-write-p.patch
Normal file
@ -0,0 +1,117 @@
|
||||
From f1887468d1ae9781407f24a2b121ed34a6dfec4c Mon Sep 17 00:00:00 2001
|
||||
From: Cherry Zhang <cherryyz@google.com>
|
||||
Date: Fri, 27 Dec 2019 12:02:00 -0500
|
||||
Subject: [PATCH] [release-branch.go1.13] runtime: ensure memmove write pointer atomically on ARM64
|
||||
|
||||
If a pointer write is not atomic, if the GC is running
|
||||
concurrently, it may observe a partially updated pointer, which
|
||||
may point to unallocated or already dead memory. Most pointer
|
||||
writes, like the store instructions generated by the compiler,
|
||||
are already atomic. But we still need to be careful in places
|
||||
like memmove. In memmove, we don't know which bits are pointers
|
||||
(or too expensive to query), so we ensure that all aligned
|
||||
pointer-sized units are written atomically.
|
||||
|
||||
Fixes #36361.
|
||||
Updates #36101.
|
||||
|
||||
Change-Id: I1b3ca24c6b1ac8a8aaf9ee470115e9a89ec1b00b
|
||||
Reviewed-on: https://go-review.googlesource.com/c/go/+/212626
|
||||
Reviewed-by: Austin Clements <austin@google.com>
|
||||
(cherry picked from commit ffbc02761abb47106ce88e09290a31513b5f6c8a)
|
||||
---
|
||||
|
||||
diff --git a/src/runtime/memmove_arm64.s b/src/runtime/memmove_arm64.s
|
||||
index ac29f94..cedb018 100644
|
||||
--- a/src/runtime/memmove_arm64.s
|
||||
+++ b/src/runtime/memmove_arm64.s
|
||||
@@ -22,7 +22,7 @@
|
||||
CMP R3, R4
|
||||
BLT backward
|
||||
|
||||
- // Copying forward proceeds by copying R7/8 words then copying R6 bytes.
|
||||
+ // Copying forward proceeds by copying R7/32 quadwords then R6 <= 31 tail bytes.
|
||||
// R3 and R4 are advanced as we copy.
|
||||
|
||||
// (There may be implementations of armv8 where copying by bytes until
|
||||
@@ -30,11 +30,12 @@
|
||||
// optimization, but the on the one tested so far (xgene) it did not
|
||||
// make a significance difference.)
|
||||
|
||||
- CBZ R7, noforwardlarge // Do we need to do any doubleword-by-doubleword copying?
|
||||
+ CBZ R7, noforwardlarge // Do we need to do any quadword copying?
|
||||
|
||||
ADD R3, R7, R9 // R9 points just past where we copy by word
|
||||
|
||||
forwardlargeloop:
|
||||
+ // Copy 32 bytes at a time.
|
||||
LDP.P 32(R4), (R8, R10)
|
||||
STP.P (R8, R10), 32(R3)
|
||||
LDP -16(R4), (R11, R12)
|
||||
@@ -43,10 +44,26 @@
|
||||
CBNZ R7, forwardlargeloop
|
||||
|
||||
noforwardlarge:
|
||||
- CBNZ R6, forwardtail // Do we need to do any byte-by-byte copying?
|
||||
+ CBNZ R6, forwardtail // Do we need to copy any tail bytes?
|
||||
RET
|
||||
|
||||
forwardtail:
|
||||
+ // There are R6 <= 31 bytes remaining to copy.
|
||||
+ // This is large enough to still contain pointers,
|
||||
+ // which must be copied atomically.
|
||||
+ // Copy the next 16 bytes, then 8 bytes, then any remaining bytes.
|
||||
+ TBZ $4, R6, 3(PC) // write 16 bytes if R6&16 != 0
|
||||
+ LDP.P 16(R4), (R8, R10)
|
||||
+ STP.P (R8, R10), 16(R3)
|
||||
+
|
||||
+ TBZ $3, R6, 3(PC) // write 8 bytes if R6&8 != 0
|
||||
+ MOVD.P 8(R4), R8
|
||||
+ MOVD.P R8, 8(R3)
|
||||
+
|
||||
+ AND $7, R6
|
||||
+ CBNZ R6, 2(PC)
|
||||
+ RET
|
||||
+
|
||||
ADD R3, R6, R9 // R9 points just past the destination memory
|
||||
|
||||
forwardtailloop:
|
||||
@@ -90,7 +107,7 @@
|
||||
RET
|
||||
|
||||
backward:
|
||||
- // Copying backwards proceeds by copying R6 bytes then copying R7/8 words.
|
||||
+ // Copying backwards first copies R6 <= 31 tail bytes, then R7/32 quadwords.
|
||||
// R3 and R4 are advanced to the end of the destination/source buffers
|
||||
// respectively and moved back as we copy.
|
||||
|
||||
@@ -99,13 +116,28 @@
|
||||
|
||||
CBZ R6, nobackwardtail // Do we need to do any byte-by-byte copying?
|
||||
|
||||
- SUB R6, R3, R9 // R9 points at the lowest destination byte that should be copied by byte.
|
||||
+ AND $7, R6, R12
|
||||
+ CBZ R12, backwardtaillarge
|
||||
+
|
||||
+ SUB R12, R3, R9 // R9 points at the lowest destination byte that should be copied by byte.
|
||||
backwardtailloop:
|
||||
+ // Copy sub-pointer-size tail.
|
||||
MOVBU.W -1(R4), R8
|
||||
MOVBU.W R8, -1(R3)
|
||||
CMP R9, R3
|
||||
BNE backwardtailloop
|
||||
|
||||
+backwardtaillarge:
|
||||
+ // Do 8/16-byte write if possible.
|
||||
+ // See comment at forwardtail.
|
||||
+ TBZ $3, R6, 3(PC)
|
||||
+ MOVD.W -8(R4), R8
|
||||
+ MOVD.W R8, -8(R3)
|
||||
+
|
||||
+ TBZ $4, R6, 3(PC)
|
||||
+ LDP.W -16(R4), (R8, R10)
|
||||
+ STP.W (R8, R10), -16(R3)
|
||||
+
|
||||
nobackwardtail:
|
||||
CBNZ R7, backwardlarge // Do we need to do any doubleword-by-doubleword copying?
|
||||
RET
|
||||
@ -1 +0,0 @@
|
||||
add-auto-load-safe-path /usr/lib/golang/src/runtime/runtime-gdb.py
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
Name: golang
|
||||
Version: 1.13
|
||||
Release: 3.1
|
||||
Release: 3.2
|
||||
Summary: The Go Programming Language
|
||||
License: BSD and Public Domain
|
||||
URL: http://golang.org/
|
||||
@ -150,7 +150,6 @@ Obsoletes: %{name}-vim < 1.4
|
||||
Obsoletes: emacs-%{name} < 1.4
|
||||
Requires: openEuler-rpm-config
|
||||
|
||||
Patch6001: 0001-Don-t-use-the-bundled-tzdata-at-runtime-except-for-t.patch
|
||||
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
|
||||
@ -161,6 +160,7 @@ Patch6008: 0008-runtime-don-t-save-G-during-VDSO-if-we-re-handling-s.patch
|
||||
Patch6009: 0009-release-branch.go1.13-net-http-don-t-cache-http2.err.patch
|
||||
Patch6010: 0010-release-branch.go1.13-net-http-fix-Server.ConnContex.patch
|
||||
Patch6011: 0011-release-branch.go1.13-runtime-fix-textOff-for-multip.patch
|
||||
Patch6012: 0012-release-branch.go1.13-runtime-ensure-memmove-write-p.patch
|
||||
|
||||
ExclusiveArch: %{golang_arches}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user