]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: don't export pos info in new export format for now
authorRobert Griesemer <gri@golang.org>
Fri, 22 Apr 2016 21:50:20 +0000 (14:50 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 22 Apr 2016 23:09:23 +0000 (23:09 +0000)
Exporting filenames as part of the position information can lead
to different object files which breaks tests.

Change-Id: Ia678ab64293ebf04bf83601e6ba72919d05762a4
Reviewed-on: https://go-review.googlesource.com/22385
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/bexport.go
src/cmd/compile/internal/gc/bimport.go
src/go/internal/gcimporter/bimport.go

index 7aa6c9ce6f3deae4b485016869bac0fd61c9f817..496491131a1b2e4fd3b9421994f34ad0987881d1 100644 (file)
@@ -112,6 +112,14 @@ import (
 // (suspected) format errors, and whenever a change is made to the format.
 const debugFormat = false // default: false
 
+// If posInfoFormat is set, position information (file, lineno) is written
+// for each exported object, including methods and struct fields. Currently
+// disabled because it may lead to different object files depending on which
+// directory they are built under, which causes tests checking for hermetic
+// builds to fail (e.g. TestCgoConsistentResults for cmd/go).
+// TODO(gri) determine what to do here.
+const posInfoFormat = false
+
 // TODO(gri) remove eventually
 const forceNewExport = false // force new export format - DO NOT SUBMIT with this flag set
 
@@ -160,6 +168,9 @@ func export(out *bufio.Writer, trace bool) int {
        }
        p.rawByte(format)
 
+       // posInfo exported or not?
+       p.bool(posInfoFormat)
+
        // --- generic export data ---
 
        if p.trace {
@@ -493,6 +504,10 @@ func (p *exporter) obj(sym *Sym) {
 }
 
 func (p *exporter) pos(n *Node) {
+       if !posInfoFormat {
+               return
+       }
+
        var file string
        var line int
        if n != nil {
index ef89f9ad0acd21ae008da76670f562db4057a831..e05329bb1248bc839046bc27e6fe189b17a8c82e 100644 (file)
@@ -30,8 +30,9 @@ type importer struct {
        funcList []*Node // nil entry means already declared
 
        // position encoding
-       prevFile string
-       prevLine int
+       posInfoFormat bool
+       prevFile      string
+       prevLine      int
 
        // debugging support
        debugFormat bool
@@ -55,6 +56,8 @@ func Import(in *bufio.Reader) {
                Fatalf("importer: invalid encoding format in export data: got %q; want 'c' or 'd'", format)
        }
 
+       p.posInfoFormat = p.bool()
+
        // --- generic export data ---
 
        if v := p.string(); v != exportVersion {
@@ -279,6 +282,10 @@ func (p *importer) obj(tag int) {
 }
 
 func (p *importer) pos() {
+       if !p.posInfoFormat {
+               return
+       }
+
        file := p.prevFile
        line := p.prevLine
 
index d75e533e97f6de1689acc0898983145f870609c7..f2080ffe59bdb77aa2ec13b307cc3f1e096f7aab 100644 (file)
@@ -27,8 +27,9 @@ type importer struct {
        typList []types.Type     // in order of appearance
 
        // position encoding
-       prevFile string
-       prevLine int
+       posInfoFormat bool
+       prevFile      string
+       prevLine      int
 
        // debugging support
        debugFormat bool
@@ -57,6 +58,8 @@ func BImportData(imports map[string]*types.Package, data []byte, path string) (i
                return p.read, nil, fmt.Errorf("invalid encoding format in export data: got %q; want 'c' or 'd'", format)
        }
 
+       p.posInfoFormat = p.int() != 0
+
        // --- generic export data ---
 
        if v := p.string(); v != "v0" {
@@ -194,6 +197,10 @@ func (p *importer) obj(tag int) {
 }
 
 func (p *importer) pos() {
+       if !p.posInfoFormat {
+               return
+       }
+
        file := p.prevFile
        line := p.prevLine