0
1
mirror of https://github.com/golang/go synced 2025-05-29 15:20:52 +00:00

cmd/asm, cmd/compile, runtime: add -spectre=ret mode

This commit extends the -spectre flag to cmd/asm and adds
a new Spectre mitigation mode "ret", which enables the use
of retpolines.

Retpolines prevent speculation about the target of an indirect
jump or call and are described in more detail here:
https://support.google.com/faqs/answer/7625886

Change-Id: I4f2cb982fa94e44d91e49bd98974fd125619c93a
Reviewed-on: https://go-review.googlesource.com/c/go/+/222661
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Russ Cox
2020-01-17 13:54:30 -05:00
parent 877ef86bec
commit fc8a6336d1
13 changed files with 119 additions and 1 deletions
src
cmd
asm
internal
main.go
compile
internal
internal
runtime
test/codegen

14
test/codegen/retpoline.go Normal file

@ -0,0 +1,14 @@
// +build amd64
// asmcheck -gcflags=-spectre=ret
package codegen
func CallFunc(f func()) {
// amd64:`CALL\truntime.retpoline`
f()
}
func CallInterface(x interface{ M() }) {
// amd64:`CALL\truntime.retpoline`
x.M()
}