Commit d930d69f authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: make -A and -newexport compatible

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/19627Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 1402e522
...@@ -1035,6 +1035,9 @@ func predeclared() []*Type { ...@@ -1035,6 +1035,9 @@ func predeclared() []*Type {
// package unsafe // package unsafe
Types[TUNSAFEPTR], Types[TUNSAFEPTR],
// any type, for builtin export data
Types[TANY],
} }
} }
return predecl return predecl
......
...@@ -442,7 +442,7 @@ func importsym(s *Sym, op Op) *Sym { ...@@ -442,7 +442,7 @@ func importsym(s *Sym, op Op) *Sym {
// mark the symbol so it is not reexported // mark the symbol so it is not reexported
if s.Def == nil { if s.Def == nil {
if exportname(s.Name) || initname(s.Name) { if Debug['A'] != 0 || exportname(s.Name) || initname(s.Name) {
s.Flags |= SymExport s.Flags |= SymExport
} else { } else {
s.Flags |= SymPackage // package scope s.Flags |= SymPackage // package scope
......
...@@ -678,4 +678,8 @@ var predeclared = []types.Type{ ...@@ -678,4 +678,8 @@ var predeclared = []types.Type{
// package unsafe // package unsafe
types.Typ[types.UnsafePointer], types.Typ[types.UnsafePointer],
// any type, for builtin export data
// TODO(mdempsky): Provide an actual Type value to represent "any"?
types.Typ[types.Invalid],
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment