diff --git a/cmake/modules/AutoGenGo.cmake b/cmake/modules/AutoGenGo.cmake
index 3e3ab83..5872d79 100644
--- a/cmake/modules/AutoGenGo.cmake
+++ b/cmake/modules/AutoGenGo.cmake
@@ -24,15 +24,6 @@
   # not currently supported -- the install prefix has to be set properly
   # as part of the original build.
 
-  # Compiler version
-  file(STRINGS "${srcroot}/../VERSION" rawver)
-  string(STRIP ${rawver} ver)
-  # Default GOROOT var initialization.
-  file(APPEND ${outfile} "func init() { DefaultGoroot = \"${CMAKE_INSTALL_PREFIX}\" }\n")
-  file(APPEND ${outfile} "const TheVersion = ")
-  emitversionstring(${outfile} ${srcroot})
-  file(APPEND ${outfile} "\n")
-
   # FIXME:
   # GccgoToolDir is set to the gccgo installation directory that contains
   # (among other things) "go1", "cgo", "cc1", and other auxiliary
@@ -41,6 +32,8 @@
   # 'DefaultGoRoot' above.
   file(APPEND ${outfile} "const GccgoToolDir = \"${CMAKE_INSTALL_PREFIX}/tools\"\n")
 
+  file(APPEND ${outfile} "const StackGuardMultiplierDefault = 1\n")
+
   # FIXME: add a real switch base on configuration params here.
 
   if( ${goarch} STREQUAL "amd64")
@@ -69,7 +62,6 @@
   file(APPEND ${outfile} "const GOARCH = \"${goarch}\"\n")
   file(APPEND ${outfile} "const GOOS = \"${goos}\"\n")
   file(APPEND ${outfile} "\n")
-  file(APPEND ${outfile} "type ArchFamilyType int\n\n")
   file(APPEND ${outfile} "const (\n")
   file(APPEND ${outfile} "\tUNKNOWN ArchFamilyType = iota\n")
 
@@ -88,7 +80,7 @@
   endforeach()
   file(APPEND ${outfile} "\n")
 
-  set(constants "ArchFamily:family" "BigEndian:bigendian" "CacheLineSize:cachelinesize" "PhysPageSize:defaultphyspagesize" "PCQuantum:pcquantum" "Int64Align:int64align" "MinFrameSize:minframesize")
+  set(constants "ArchFamily:family" "BigEndian:bigendian" "DefaultPhysPageSize:defaultphyspagesize" "PCQuantum:pcquantum" "Int64Align:int64align" "MinFrameSize:minframesize" "StackAlign:stackalign")
 
   file(APPEND ${outfile} "const (\n")
   foreach(item ${constants})
@@ -106,7 +98,7 @@
       ERROR_VARIABLE errmsg
       RESULT_VARIABLE exitstatus)
     if(${exitstatus} MATCHES 0)
-      file(APPEND ${outfile} "\t${constname} = ${result}")
+      file(APPEND ${outfile} "\t_${constname} = ${result}")
     else()
       message(FATAL_ERROR "goarch.sh invocation failed: ${errmsg}")
     endif()
@@ -125,7 +117,6 @@
   endforeach()
 
   file(APPEND ${outfile} "\n")
-  file(APPEND ${outfile} "type Uintreg uintptr\n")
 endfunction()
 
 #----------------------------------------------------------------------
@@ -258,6 +249,42 @@
 endfunction()
 
 #----------------------------------------------------------------------
+# Emit 'buildcfg.go', containing default settings for various GO* vars.
+#
+# Unnamed parameters:
+#
+#   * output file to target
+#   * libgo cmake binary directory
+#   * libgo source code root directory
+#
+function(mkbuildcfg outfile binroot srcroot)
+
+  file(REMOVE ${outfile})
+  file(WRITE ${outfile} "package buildcfg\n\n")
+  file(APPEND ${outfile} "import \"runtime\"\n")
+
+  # Compiler version
+  file(STRINGS "${srcroot}/../VERSION" rawver)
+  string(STRIP ${rawver} ver)
+  file(APPEND ${outfile} "const version = ")
+  emitversionstring(${outfile} ${srcroot})
+  file(APPEND ${outfile} "\n")
+
+  file(APPEND ${outfile} "func defaultGOROOTValue() string { return \"${GOLLVM_INSTALL_DIR}\" }\n")
+  file(APPEND ${outfile} "const defaultGO386 = `sse2`\n")
+  file(APPEND ${outfile} "const defaultGOARM = `5`\n")
+  file(APPEND ${outfile} "const defaultGOMIPS = `hardfloat`\n")
+  file(APPEND ${outfile} "const defaultGOMIPS64 = `hardfloat`\n")
+  file(APPEND ${outfile} "const defaultGOOS = runtime.GOOS\n")
+  file(APPEND ${outfile} "const defaultGOPPC64 = `power8`\n")
+  file(APPEND ${outfile} "const defaultGOARCH = runtime.GOARCH\n")
+  file(APPEND ${outfile} "const defaultGO_EXTLINK_ENABLED = ``\n")
+  file(APPEND ${outfile} "const defaultGO_LDSO = ``\n")
+  file(APPEND ${outfile} "const defaultGOEXPERIMENT = `fieldtrack`\n")
+endfunction()
+
+
+#----------------------------------------------------------------------
 # Emit 'objabi.go', containing default settings for various GO* vars.
 #
 # Unnamed parameters:
@@ -270,24 +297,8 @@
 
   file(REMOVE ${outfile})
   file(WRITE ${outfile} "package objabi\n\n")
-  file(APPEND ${outfile} "import \"runtime\"\n")
 
-  file(APPEND ${outfile} "func defaultGOROOTValue() string { return \"${GOLLVM_INSTALL_DIR}\" }\n")
-
-  file(APPEND ${outfile} "const defaultGO386 = `sse2`\n")
-  file(APPEND ${outfile} "const defaultGOARM = `5`\n")
-  file(APPEND ${outfile} "const defaultGOMIPS = `hardfloat`\n")
-  file(APPEND ${outfile} "const defaultGOMIPS64 = `hardfloat`\n")
-  file(APPEND ${outfile} "const defaultGOOS = runtime.GOOS\n")
-  file(APPEND ${outfile} "const defaultGOPPC64 = `power8`\n")
-  file(APPEND ${outfile} "const defaultGOARCH = runtime.GOARCH\n")
-  file(APPEND ${outfile} "const defaultGO_EXTLINK_ENABLED = ``\n")
-  file(APPEND ${outfile} "const defaultGO_LDSO = ``\n")
-  file(APPEND ${outfile} "const version = ")
-  emitversionstring(${outfile} ${srcroot})
-  file(APPEND ${outfile} "\n")
   file(APPEND ${outfile} "const stackGuardMultiplierDefault = 1\n")
-  file(APPEND ${outfile} "const goexperiment = ``\n")
 endfunction()
 
 #----------------------------------------------------------------------
@@ -310,7 +321,6 @@
     endif()
   endforeach()
   file(APPEND ${outfile} "\"unsafe\": true,\n")
-  file(APPEND ${outfile} "\"runtime/cgo\": true,\n")
   file(APPEND ${outfile} "}\n")
 endfunction()
 
diff --git a/libgo/CMakeLists.txt b/libgo/CMakeLists.txt
index 26e32b6..b86b1f8 100644
--- a/libgo/CMakeLists.txt
+++ b/libgo/CMakeLists.txt
@@ -102,6 +102,7 @@
 # that <pkg>_extra_go_files holds the additional sources for <pkg>.
 set(runtime_extra_go_files "runtime_linknames.go" "runtime_sysinfo.go" "sigtab.go")
 set(cmd_internal_objabi_extra_go_files "objabi.go")
+set(internal_buildcfg_extra_go_files "buildcfg.go")
 set(internal_goroot_extra_go_files "zstdpkglist.go")
 set(internal_cpu_extra_go_files "cpugen.go")
 set(golang_org_x_sys_cpu_extra_go_files "gcpugen.go")
@@ -228,6 +229,12 @@
 mkobjabi(${objabitmp} ${libgo_binroot} ${libgo_gosrcroot})
 copy_if_different(${objabitmp} ${objabidotgo})
 
+# Rules for buildcfg.go
+set(buildcfgdotgo "${libgo_binroot}/buildcfg.go")
+set(buildcfgtmp "${libgo_binroot}/buildcfg.go.tmp")
+mkbuildcfg(${buildcfgtmp} ${libgo_binroot} ${libgo_gosrcroot})
+copy_if_different(${buildcfgtmp} ${buildcfgdotgo})
+
 # Rules for zstdpkglist.go
 set(zstdpkglistdotgo "${libgo_binroot}/zstdpkglist.go")
 set(zstdpkglisttmp "${libgo_binroot}/zstdpkglist.go.tmp")
