cmd/racebuild: add support for race detector builds on linux/riscv64

Updates golang/go#64345

Change-Id: Ia255558deeb88acd30af551b494dab78992f860d
Reviewed-on: https://go-review.googlesource.com/c/build/+/698075
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Joel Sing <joel@sing.id.au>
Reviewed-by: Carlos Amedee <carlos@golang.org>
diff --git a/cmd/racebuild/racebuild.go b/cmd/racebuild/racebuild.go
index 7e13e89..05d9d9c 100644
--- a/cmd/racebuild/racebuild.go
+++ b/cmd/racebuild/racebuild.go
@@ -419,6 +419,36 @@
 (cd go/src && ./race.bash)
 			`,
 	},
+	{
+		OS:   "linux",
+		Arch: "riscv64",
+		Type: "gotip-linux-riscv64",
+		// Needs git, g++, unzip, golang-bin on the builder.
+		Script: `#!/usr/bin/env bash
+set -e
+uname -a
+cat /etc/os-release
+git clone https://go.googlesource.com/go
+pushd go
+ls -al
+git checkout $GOREV
+if [ "$GOGITOP" != "" ]; then
+  git fetch https://go.googlesource.com/go "$GOSRCREF"
+  git $GOGITOP FETCH_HEAD
+fi
+popd
+curl -L -o llvm.zip https://github.com/llvm/llvm-project/archive/${REV}.zip
+unzip -q llvm.zip llvm-project-${REV}/compiler-rt/*
+(cd llvm-project-${REV}/compiler-rt/lib/tsan/go && ./buildgo.sh)
+cp llvm-project-${REV}/compiler-rt/lib/tsan/go/race_linux_riscv64.syso go/src/runtime/race
+# work around gomote gettar issue #64195
+mkdir outdir
+cp llvm-project-${REV}/compiler-rt/lib/tsan/go/race_linux_riscv64.syso outdir/race_linux_riscv64.syso
+# free some disk space
+rm -r llvm.zip llvm-project-${REV}
+(cd go/src && ./race.bash)
+			`,
+	},
 }
 
 func init() {