go/gccgoexporter: an API for parsing gccgo export data

This package is provided as a stop-gap until gccgo uses the same export
data format as gc.  Once that occurs, this package will be deprecated
and eventually deleted.  The API is similar to (a subset of) gcexportdata.

Change-Id: I3398dbb8eab508a24d12036bbadaa60c2c1e77b3
Reviewed-on: https://go-review.googlesource.com/31822
Reviewed-by: Robert Griesemer <gri@golang.org>
diff --git a/go/gccgoexportdata/gccgoexportdata_test.go b/go/gccgoexportdata/gccgoexportdata_test.go
new file mode 100644
index 0000000..131f413
--- /dev/null
+++ b/go/gccgoexportdata/gccgoexportdata_test.go
@@ -0,0 +1,36 @@
+package gccgoexportdata_test
+
+import (
+	"go/types"
+	"os"
+	"testing"
+
+	"golang.org/x/tools/go/gccgoexportdata"
+)
+
+// Test ensures this package can read gccgo export data from the
+// .go_export section of an ELF file.
+func Test(t *testing.T) {
+	f, err := os.Open("testdata/errors.gox")
+	if err != nil {
+		t.Fatal(err)
+	}
+	defer f.Close()
+	r, err := gccgoexportdata.NewReader(f)
+	if err != nil {
+		t.Fatal(err)
+	}
+	imports := make(map[string]*types.Package)
+	pkg, err := gccgoexportdata.Read(r, nil, imports, "errors")
+	if err != nil {
+
+		t.Fatal(err)
+	}
+
+	// Check type of errors.New.
+	got := pkg.Scope().Lookup("New").Type().String()
+	want := "func(text string) error"
+	if got != want {
+		t.Errorf("New.Type = %s, want %s", got, want)
+	}
+}