runtime: set runtime.GOROOT value at build time

In Go 1.17 the gc toolchain changed to set runtime.GOROOT in cmd/link
(previously it was runtime/internal/sys.GOROOT).  Do the same in libgo.

Change-Id: Ia684a17fbb8f436d05afbcce14fc63fd16353be2
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/351313
Trust: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index 92fedcf..5c377a3 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -545,6 +545,14 @@
 	$(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
 	$(STAMP) $@
 
+goroot.go: s-goroot; @true
+s-goroot: Makefile
+	rm -f goroot.go.tmp
+	echo "package runtime" > goroot.go.tmp
+	echo 'var defaultGOROOT = `$(prefix)`' >> goroot.go.tmp
+	$(SHELL) $(srcdir)/mvifdiff.sh goroot.go.tmp goroot.go
+	$(STAMP) $@
+
 buildcfg.go: s-buildcfg; @true
 s-buildcfg: Makefile
 	rm -f buildcfg.go.tmp
@@ -1005,7 +1013,8 @@
 math_check_GOCFLAGS = $(MATH_FLAG)
 
 # Add generated files to the runtime package.
-extra_go_files_runtime = runtime_linknames.go runtime_sysinfo.go sigtab.go
+extra_go_files_runtime = \
+	runtime_linknames.go runtime_sysinfo.go sigtab.go goroot.go
 runtime.lo.dep: $(extra_go_files_runtime)
 
 # Add generated files to the syscall package.
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index 3b2bdf9..1240b16 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -1098,7 +1098,9 @@
 math_check_GOCFLAGS = $(MATH_FLAG)
 
 # Add generated files to the runtime package.
-extra_go_files_runtime = runtime_linknames.go runtime_sysinfo.go sigtab.go
+extra_go_files_runtime = \
+	runtime_linknames.go runtime_sysinfo.go sigtab.go goroot.go
+
 
 # Add generated files to the syscall package.
 extra_go_files_syscall = \
@@ -2752,6 +2754,14 @@
 	$(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
 	$(STAMP) $@
 
+goroot.go: s-goroot; @true
+s-goroot: Makefile
+	rm -f goroot.go.tmp
+	echo "package runtime" > goroot.go.tmp
+	echo 'var defaultGOROOT = `$(prefix)`' >> goroot.go.tmp
+	$(SHELL) $(srcdir)/mvifdiff.sh goroot.go.tmp goroot.go
+	$(STAMP) $@
+
 buildcfg.go: s-buildcfg; @true
 s-buildcfg: Makefile
 	rm -f buildcfg.go.tmp
diff --git a/libgo/go/runtime/extern.go b/libgo/go/runtime/extern.go
index 0d7f357..6bd612f 100644
--- a/libgo/go/runtime/extern.go
+++ b/libgo/go/runtime/extern.go
@@ -211,8 +211,6 @@
 // program counter adjustment.
 func Callers(skip int, pc []uintptr) int
 
-var defaultGOROOT string // set by cmd/link
-
 // GOROOT returns the root of the Go tree. It uses the
 // GOROOT environment variable, if set at process start,
 // or else the root used during the Go build.