diff --git a/go/buildutil/util.go b/go/buildutil/util.go
index c2d2843..6dc0cfb 100644
--- a/go/buildutil/util.go
+++ b/go/buildutil/util.go
@@ -66,21 +66,11 @@
 	// paths will not use `\` unless the PathSeparator
 	// is also `\`, thus we can rely on filepath.ToSlash for some sanity.
 
-	resolvedFilename, err := filepath.EvalSymlinks(filepath.Dir(filename))
-	if err != nil {
-		return nil, fmt.Errorf("can't evaluate symlinks of %s: %v", path.Dir(filename), err)
-	}
-
-	resolvedDir := filepath.ToSlash(resolvedFilename)
-	dirSlash := resolvedDir + "/"
+	dirSlash := path.Dir(filepath.ToSlash(filename)) + "/"
 
 	// We assume that no source root (GOPATH[i] or GOROOT) contains any other.
 	for _, srcdir := range ctxt.SrcDirs() {
-		resolvedSrcdir, err := filepath.EvalSymlinks(srcdir)
-		if err != nil {
-			continue // e.g. non-existent dir on $GOPATH
-		}
-		srcdirSlash := filepath.ToSlash(resolvedSrcdir) + "/"
+		srcdirSlash := filepath.ToSlash(srcdir) + "/"
 		if dirHasPrefix(dirSlash, srcdirSlash) {
 			importPath := dirSlash[len(srcdirSlash) : len(dirSlash)-len("/")]
 			return ctxt.Import(importPath, dir, build.FindOnly)
diff --git a/go/buildutil/util_test.go b/go/buildutil/util_test.go
index 148214d..dd55533 100644
--- a/go/buildutil/util_test.go
+++ b/go/buildutil/util_test.go
@@ -10,7 +10,6 @@
 
 import (
 	"go/build"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -24,46 +23,22 @@
 	goroot := runtime.GOROOT()
 	gopath := filepath.SplitList(os.Getenv("GOPATH"))[0]
 
-	// Make a symlink to gopath for test
-	tmp, err := ioutil.TempDir(os.TempDir(), "go")
-	if err != nil {
-		t.Errorf("Unable to create a temporary directory in %s", os.TempDir())
+	tests := [][2]string{
+		{goroot + "/src/fmt/print.go", "fmt"},
+		{goroot + "/src/encoding/json/foo.go", "encoding/json"},
+		{goroot + "/src/encoding/missing/foo.go", "(not found)"},
+		{gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
+			"golang.org/x/tools/go/buildutil"},
 	}
-
-	// symlink between $GOPATH/src and /tmp/go/src
-	// in order to test all possible symlink cases
-	if err := os.Symlink(gopath+"/src", tmp+"/src"); err != nil {
-		t.Fatal(err)
-	}
-
-	defer os.RemoveAll(tmp)
-
-	for _, test := range []struct {
-		gopath, filename, wantPkg string
-	}{
-		{gopath, goroot + "/src/fmt/print.go", "fmt"},
-		{gopath, goroot + "/src/encoding/json/foo.go", "encoding/json"},
-		{gopath, goroot + "/src/encoding/missing/foo.go", "(not found)"},
-		{gopath, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{gopath, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{tmp, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{tmp, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-	} {
-		var got string
-		var buildContext = build.Default
-		buildContext.GOPATH = test.gopath
-		bp, err := buildutil.ContainingPackage(&buildContext, ".", test.filename)
+	for _, test := range tests {
+		file, want := test[0], test[1]
+		bp, err := buildutil.ContainingPackage(&build.Default, ".", file)
+		got := bp.ImportPath
 		if err != nil {
 			got = "(not found)"
-		} else {
-			got = bp.ImportPath
 		}
-		if got != test.wantPkg {
-			t.Errorf("ContainingPackage(%q) = %s, want %s", test.filename, got, test.wantPkg)
+		if got != want {
+			t.Errorf("ContainingPackage(%q) = %s, want %s", file, got, want)
 		}
 	}
 
