mirror of
https://github.com/coolsnowwolf/packages.git
synced 2025-05-03 01:12:12 +08:00
golang: backport an upstream fix for non-retpoline-compatible error
This fixes the following build error: ``` Building targets runtime <autogenerated>:1: non-retpoline-compatible: 00200 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/time.go:915) JMP (R15)(R12*8) <autogenerated>:1: non-retpoline-compatible: 00115 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/type.go:614) JMP (AX)(SI*8) <autogenerated>:1: non-retpoline-compatible: 00028 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/time.go:452) JMP (R11)(R10*8) <autogenerated>:1: non-retpoline-compatible: 00021 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/error.go:261) JMP (DX)(CX*8) <autogenerated>:1: non-retpoline-compatible: 00050 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/time.go:691) JMP (CX)(R12*8) <autogenerated>:1: non-retpoline-compatible: 00024 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/debuglog.go:616) JMP (CX)(SI*8) <autogenerated>:1: non-retpoline-compatible: 00079 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/time.go:617) JMP (R9)(R8*8) <autogenerated>:1: non-retpoline-compatible: 00025 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/cgocall.go:453) JMP (R9)(DX*8) <autogenerated>:1: non-retpoline-compatible: 00018 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/type.go:66) JMP (DX)(CX*8) <autogenerated>:1: non-retpoline-compatible: 00020 (/home/username/works/openwrt/staging_dir/hostpkg/lib/go-cross/src/runtime/alg.go:156) JMP (SI)(DX*8) <autogenerated>:1: too many errors ``` Fixes: #20026 Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
parent
7d62a2e785
commit
ed2dae7664
@ -0,0 +1,67 @@
|
|||||||
|
From 156578067111742b55718066c91b8ec66d35e03d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Keith Randall <khr@golang.org>
|
||||||
|
Date: Mon, 5 Dec 2022 16:26:26 -0800
|
||||||
|
Subject: [PATCH] [release-branch.go1.19] cmd/compile: turn off jump tables
|
||||||
|
when spectre retpolines are on
|
||||||
|
|
||||||
|
Fixes #57100
|
||||||
|
|
||||||
|
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>
|
||||||
|
(cherry picked from commit 1eb0465fa596a2d6e9c1a632499989544f0d7e68)
|
||||||
|
Reviewed-on: https://go-review.googlesource.com/c/go/+/455416
|
||||||
|
Reviewed-by: Michael Pratt <mpratt@google.com>
|
||||||
|
---
|
||||||
|
src/cmd/compile/internal/walk/switch.go | 2 +-
|
||||||
|
test/codegen/retpoline.go | 28 +++++++++++++++++++++++++
|
||||||
|
2 files changed, 29 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/src/cmd/compile/internal/walk/switch.go
|
||||||
|
+++ b/src/cmd/compile/internal/walk/switch.go
|
||||||
|
@@ -289,7 +289,7 @@ func (s *exprSwitch) tryJumpTable(cc []e
|
||||||
|
const minCases = 8 // have at least minCases cases in the switch
|
||||||
|
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
|
||||||
|
}
|
||||||
|
if len(cc) < minCases {
|
||||||
|
--- a/test/codegen/retpoline.go
|
||||||
|
+++ b/test/codegen/retpoline.go
|
||||||
|
@@ -12,3 +12,31 @@ func CallInterface(x interface{ M() }) {
|
||||||
|
// amd64:`CALL\truntime.retpoline`
|
||||||
|
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
Block a user