go/src/cmd/dist
Mark Ryan b4e7d630bc cmd/go: add GORISCV64 environment variable
The variable represents the RISC-V user-mode application profile for
which to compile.  Valid values are rva20u64 (the default) and
rva22u64.

Setting GORISCV64=rva20u64 defines the riscv64.rva20u64 build tag,
sets the internal variable buildcfg.GORISCV64 to 20 and defines the
macro GORISCV64_rva20u64 for use in assembly language code.

Setting GORISCV64=rva22u64 defines the riscv64.rva20u64 and
riscv64.rva22u64 build tags, sets the internal variable
buildcfg.GORISCV64 to 22 and defines the macro GORISCV64_rva22u64
for use in assembly language code.

This patch only provides a mechanism for the compiler and hand-coded
assembly language functions to take advantage of the RISC-V
extensions mandated by the application profiles.  Further patches
will be required to get the compiler/assembler and assembly language
functions to actually generate and use these extensions.

Fixes #61476

Change-Id: I9195ae6ee71703cd2112160e89157ab63b8391af
Reviewed-on: https://go-review.googlesource.com/c/go/+/541135
Reviewed-by: M Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: Joel Sing <joel@sing.id.au>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Wang Yaduo <wangyaduo@linux.alibaba.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: M Zhuo <mengzhuo1203@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2024-01-24 07:25:25 +00:00
..
README
build.go cmd/go: add GORISCV64 environment variable 2024-01-24 07:25:25 +00:00
build_test.go
buildgo.go
buildruntime.go cmd/go: add GORISCV64 environment variable 2024-01-24 07:25:25 +00:00
buildtag.go
buildtag_test.go
buildtool.go cmd/compile: update types2.Info.FileVersions API to match go/types 2023-11-10 02:22:15 +00:00
doc.go
exec.go
imports.go
main.go
notgo120.go all: drop old +build lines 2023-10-19 23:33:27 +00:00
quoted.go
supported_test.go
sys_default.go all: drop old +build lines 2023-10-19 23:33:27 +00:00
sys_windows.go all: fix Microsoft links 2023-09-12 16:42:41 +00:00
test.go iter, runtime: add coroutine support 2023-12-06 21:33:59 +00:00
testjson.go
testjson_test.go
util.go
util_gc.go all: drop old +build lines 2023-10-19 23:33:27 +00:00
util_gccgo.go all: drop old +build lines 2023-10-19 23:33:27 +00:00
vfp_arm.s all: drop old +build lines 2023-10-19 23:33:27 +00:00
vfp_default.s all: drop old +build lines 2023-10-19 23:33:27 +00:00

README

This program, dist, is the bootstrapping tool for the Go distribution.

As of Go 1.5, dist and other parts of the compiler toolchain are written
in Go, making bootstrapping a little more involved than in the past.
The approach is to build the current release of Go with an earlier one.

The process to install Go 1.x, for x ≥ 22, is:

1. Build cmd/dist with Go 1.20.6.
2. Using dist, build Go 1.x compiler toolchain with Go 1.20.6.
3. Using dist, rebuild Go 1.x compiler toolchain with itself.
4. Using dist, build Go 1.x cmd/go (as go_bootstrap) with Go 1.x compiler toolchain.
5. Using go_bootstrap, build the remaining Go 1.x standard library and commands.

Because of backward compatibility, although the steps above say Go 1.20.6,
in practice any release ≥ Go 1.20.6 but < Go 1.x will work as the bootstrap base.
Releases ≥ Go 1.x are very likely to work as well.

See https://go.dev/s/go15bootstrap for more details about the original bootstrap
and https://go.dev/issue/54265 for details about later bootstrap version bumps.