go/gcexportdata: better error when reading exportdata directly from archive

Change-Id: Iaa6fe8a33bee852be4e2414c6db7ca5df17006b6
Reviewed-on: https://go-review.googlesource.com/33715
Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
Alan Donovan 2016-11-30 13:53:12 -05:00
parent b66e054640
commit 34fe8ce027
1 changed files with 4 additions and 0 deletions

View File

@ -78,6 +78,10 @@ func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package,
return nil, fmt.Errorf("reading export data for %q: %v", path, err) return nil, fmt.Errorf("reading export data for %q: %v", path, err)
} }
if bytes.HasPrefix(data, []byte("!<arch>")) {
return nil, fmt.Errorf("can't read export data for %q directly from an archive file (call gcexportdata.NewReader first to extract export data)", path)
}
// The App Engine Go runtime v1.6 uses the old export data format. // The App Engine Go runtime v1.6 uses the old export data format.
// TODO(adonovan): delete once v1.7 has been around for a while. // TODO(adonovan): delete once v1.7 has been around for a while.
if bytes.HasPrefix(data, []byte("package ")) { if bytes.HasPrefix(data, []byte("package ")) {