diff options
Diffstat (limited to 'llgo/third_party/go.tools/cmd/godex/gccgo.go')
| -rw-r--r-- | llgo/third_party/go.tools/cmd/godex/gccgo.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/llgo/third_party/go.tools/cmd/godex/gccgo.go b/llgo/third_party/go.tools/cmd/godex/gccgo.go new file mode 100644 index 00000000000..49fd5a84bb9 --- /dev/null +++ b/llgo/third_party/go.tools/cmd/godex/gccgo.go @@ -0,0 +1,40 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file implements access to gccgo-generated export data. + +package main + +import ( + "llvm.org/llgo/third_party/go.tools/go/gccgoimporter" + "llvm.org/llgo/third_party/go.tools/go/types" +) + +var ( + initmap = make(map[*types.Package]gccgoimporter.InitData) +) + +func init() { + incpaths := []string{"/"} + + // importer for default gccgo + var inst gccgoimporter.GccgoInstallation + inst.InitFromDriver("gccgo") + register("gccgo", inst.GetImporter(incpaths, initmap)) +} + +// Print the extra gccgo compiler data for this package, if it exists. +func (p *printer) printGccgoExtra(pkg *types.Package) { + if initdata, ok := initmap[pkg]; ok { + p.printf("/*\npriority %d\n", initdata.Priority) + + p.printDecl("init", len(initdata.Inits), func() { + for _, init := range initdata.Inits { + p.printf("%s %s %d\n", init.Name, init.InitFunc, init.Priority) + } + }) + + p.print("*/\n") + } +} |

