cmd/updatestd: ignore _ directories

This seems like an oversight and it's causing it to update the _asm
submodule in ed25519.

Updates golang/go#36905.

Change-Id: I1f580c2f55028c1012432c704df6ac0133e4f4d6
Reviewed-on: https://go-review.googlesource.com/c/build/+/393674
Trust: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cmd/updatestd/updatestd.go b/cmd/updatestd/updatestd.go
index 6ed4e80..34a3d1f 100644
--- a/cmd/updatestd/updatestd.go
+++ b/cmd/updatestd/updatestd.go
@@ -97,13 +97,13 @@
 	log.Println()
 
 	// Walk the standard library source tree (GOROOT/src),
-	// skipping directories that start with "." and named "testdata" or "vendor",
+	// skipping directories that the Go command ignores (see go help packages)
 	// and update modules that are found.
 	err = filepath.Walk(filepath.Join(*goroot, "src"), func(path string, fi os.FileInfo, err error) error {
 		if err != nil {
 			return err
 		}
-		if fi.IsDir() && (strings.HasPrefix(fi.Name(), ".") || fi.Name() == "testdata" || fi.Name() == "vendor") {
+		if fi.IsDir() && (strings.HasPrefix(fi.Name(), ".") || strings.HasPrefix(fi.Name(), "_") || fi.Name() == "testdata" || fi.Name() == "vendor") {
 			return filepath.SkipDir
 		}
 		goModFile := fi.Name() == "go.mod" && !fi.IsDir()