mirror of https://github.com/golang/go.git
cmd/compile: turn off jump tables when spectre retpolines are on
Fixes #57097 Change-Id: I6ab659abbca1ae0ac8710674d39aec116fab0baa Reviewed-on: https://go-review.googlesource.com/c/go/+/455336 Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Keith Randall <khr@golang.org>
This commit is contained in:
parent
9dde2de454
commit
1eb0465fa5
|
|
@ -290,7 +290,7 @@ func (s *exprSwitch) tryJumpTable(cc []exprClause, out *ir.Nodes) bool {
|
||||||
const minCases = 8 // have at least minCases cases in the switch
|
const minCases = 8 // have at least minCases cases in the switch
|
||||||
const minDensity = 4 // use at least 1 out of every minDensity entries
|
const minDensity = 4 // use at least 1 out of every minDensity entries
|
||||||
|
|
||||||
if !go119UseJumpTables || base.Flag.N != 0 || !ssagen.Arch.LinkArch.CanJumpTable {
|
if !go119UseJumpTables || base.Flag.N != 0 || !ssagen.Arch.LinkArch.CanJumpTable || base.Ctxt.Retpoline {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if len(cc) < minCases {
|
if len(cc) < minCases {
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,31 @@ func CallInterface(x interface{ M() }) {
|
||||||
// amd64:`CALL\truntime.retpoline`
|
// amd64:`CALL\truntime.retpoline`
|
||||||
x.M()
|
x.M()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check to make sure that jump tables are disabled
|
||||||
|
// when retpoline is on. See issue 57097.
|
||||||
|
func noJumpTables(x int) int {
|
||||||
|
switch x {
|
||||||
|
case 0:
|
||||||
|
return 0
|
||||||
|
case 1:
|
||||||
|
return 1
|
||||||
|
case 2:
|
||||||
|
return 2
|
||||||
|
case 3:
|
||||||
|
return 3
|
||||||
|
case 4:
|
||||||
|
return 4
|
||||||
|
case 5:
|
||||||
|
return 5
|
||||||
|
case 6:
|
||||||
|
return 6
|
||||||
|
case 7:
|
||||||
|
return 7
|
||||||
|
case 8:
|
||||||
|
return 8
|
||||||
|
case 9:
|
||||||
|
return 9
|
||||||
|
}
|
||||||
|
return 10
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue