]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: make -A and -newexport compatible
authorMatthew Dempsky <mdempsky@google.com>
Tue, 1 Dec 2015 20:05:30 +0000 (12:05 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Fri, 19 Feb 2016 21:42:04 +0000 (21:42 +0000)
Packages compiled with -A may reference the builtin "any" type, so it
needs to be included in the list of predeclared types for binary
import/export.

Also, when -A is used, mark all symbols as SymExport instead of
SymPackage in importsym.  This parallels the logic in autoexport and
is necessary to prevent a "export/package mismatch" errors in
exportsym during dumpexport's verifyExport pass.

Change-Id: Iff5ec5fbfe2219525ec9d1a975307fa8936af9b9
Reviewed-on: https://go-review.googlesource.com/19627
Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/bexport.go
src/cmd/compile/internal/gc/export.go
src/go/internal/gcimporter/bimport.go

index 3edd0488e731e2179c32afe590a95c0da9c4d31b..ff0465f64cb49431f5559935ae6adac11a05f1be 100644 (file)
@@ -1035,6 +1035,9 @@ func predeclared() []*Type {
 
                        // package unsafe
                        Types[TUNSAFEPTR],
+
+                       // any type, for builtin export data
+                       Types[TANY],
                }
        }
        return predecl
index e50cf383d744fd3bd57338d53df3be2fc6b5df6b..1b61d7f228f665e9f6a3179b8b12ed71ced75712 100644 (file)
@@ -442,7 +442,7 @@ func importsym(s *Sym, op Op) *Sym {
 
        // mark the symbol so it is not reexported
        if s.Def == nil {
-               if exportname(s.Name) || initname(s.Name) {
+               if Debug['A'] != 0 || exportname(s.Name) || initname(s.Name) {
                        s.Flags |= SymExport
                } else {
                        s.Flags |= SymPackage // package scope
index 68690424a168cd2a20192fb566a0b5194ae16619..ad1c4cd02a788e50247588dc7b6250dcaa2ab399 100644 (file)
@@ -678,4 +678,8 @@ var predeclared = []types.Type{
 
        // package unsafe
        types.Typ[types.UnsafePointer],
+
+       // any type, for builtin export data
+       // TODO(mdempsky): Provide an actual Type value to represent "any"?
+       types.Typ[types.Invalid],
 }