[Pkg-golang-commits] [golang] 01/02: Add debian/patches/0003-Do-not-use-SP-as-index-reg.patch (Closes: #877541)

Michael Stapelberg michael at stapelberg.de
Fri Oct 27 07:06:13 UTC 2017


This is an automated email from the git hooks/post-receive script.

stapelberg pushed a commit to annotated tag debian/1.9.2-2
in repository golang.

commit a0cd15c626ef6aa48037755d3d577f9c6871d1f0
Author: Michael Stapelberg <stapelberg at debian.org>
Date:   Fri Oct 27 08:54:41 2017 +0200

    Add debian/patches/0003-Do-not-use-SP-as-index-reg.patch (Closes: #877541)
---
 .../patches/0003-Do-not-use-SP-as-index-reg.patch  | 56 ++++++++++++++++++++++
 debian/patches/series                              |  1 +
 2 files changed, 57 insertions(+)

diff --git a/debian/patches/0003-Do-not-use-SP-as-index-reg.patch b/debian/patches/0003-Do-not-use-SP-as-index-reg.patch
new file mode 100644
index 0000000..8285b2a
--- /dev/null
+++ b/debian/patches/0003-Do-not-use-SP-as-index-reg.patch
@@ -0,0 +1,56 @@
+Author: Keith Randall <khr at golang.org>
+Date: Wed Oct 25 13:46:38 2017 -0700
+Description: cmd/compile: make sure not to use SP as an index register
+ ...because that's an illegal addressing mode.
+Reviewed-on: https://go-review.googlesource.com/73551
+Bug-Upstream: https://github.com/golang/go/issues/22429
+
+diff --git a/src/cmd/compile/internal/x86/387.go b/src/cmd/compile/internal/x86/387.go
+index cdac000..7a36224 100644
+--- a/src/cmd/compile/internal/x86/387.go
++++ b/src/cmd/compile/internal/x86/387.go
+@@ -46,6 +46,9 @@
+ 		case ssa.Op386MOVSSloadidx1, ssa.Op386MOVSDloadidx1:
+ 			p.From.Scale = 1
+ 			p.From.Index = v.Args[1].Reg()
++			if p.From.Index == x86.REG_SP {
++				p.From.Reg, p.From.Index = p.From.Index, p.From.Reg
++			}
+ 		case ssa.Op386MOVSSloadidx4:
+ 			p.From.Scale = 4
+ 			p.From.Index = v.Args[1].Reg()
+@@ -95,6 +98,9 @@
+ 		case ssa.Op386MOVSSstoreidx1, ssa.Op386MOVSDstoreidx1:
+ 			p.To.Scale = 1
+ 			p.To.Index = v.Args[1].Reg()
++			if p.To.Index == x86.REG_SP {
++				p.To.Reg, p.To.Index = p.To.Index, p.To.Reg
++			}
+ 		case ssa.Op386MOVSSstoreidx4:
+ 			p.To.Scale = 4
+ 			p.To.Index = v.Args[1].Reg()
+
+diff --git a/test/fixedbugs/issue22429.go b/test/fixedbugs/issue22429.go
+new file mode 100644
+index 0000000..289b434
+--- /dev/null
++++ b/test/fixedbugs/issue22429.go
+@@ -0,0 +1,18 @@
++// compile
++
++// Copyright 2017 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.
++
++// Make sure SSA->assembly pass can handle SP as an index register.
++
++package p
++
++type T struct {
++	a,b,c,d float32
++}
++
++func f(a *[8]T, i,j,k int) float32 {
++	b := *a
++	return b[i].a + b[j].b + b[k].c
++}
diff --git a/debian/patches/series b/debian/patches/series
index fe8bcb7..2362f90 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 0002-reproducible-BUILD_PATH_PREFIX_MAP.patch
+0003-Do-not-use-SP-as-index-reg.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-golang/golang.git



More information about the pkg-golang-commits mailing list