]> Cypherpunks repositories - gostls13.git/commitdiff
cgo: add -gccgopkgpath option to match gccgo -fgo-pkgpath
authorIan Lance Taylor <iant@golang.org>
Fri, 20 Jul 2012 23:58:08 +0000 (16:58 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 20 Jul 2012 23:58:08 +0000 (16:58 -0700)
R=golang-dev, r, iant
CC=golang-dev
https://golang.org/cl/6416056

src/cmd/cgo/main.go
src/cmd/cgo/out.go

index 60165961a1fca2dd0586367f32e98fdb9c29b0c0..05389bb6968ee7ceca387a32c3cdc8996f1c418b 100644 (file)
@@ -144,7 +144,8 @@ var cdefs = flag.Bool("cdefs", false, "for bootstrap: write C definitions for C
 var objDir = flag.String("objdir", "", "object directory")
 
 var gccgo = flag.Bool("gccgo", false, "generate files for use with gccgo")
-var gccgoprefix = flag.String("gccgoprefix", "go", "prefix of symbols generated by gccgo")
+var gccgoprefix = flag.String("gccgoprefix", "", "-fgo-prefix option used with gccgo")
+var gccgopkgpath = flag.String("gccgopkgpath", "", "-fgo-pkgpath option used with gccgo")
 var importRuntimeCgo = flag.Bool("import_runtime_cgo", true, "import runtime/cgo in generated code")
 var goarch, goos string
 
index ae572d6dc6d16af04dd482dd634e04cc7a421533..993a23ae46d363244e26d95580c6b9f85125cfbd 100644 (file)
@@ -669,7 +669,21 @@ func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) {
                }
                return '_'
        }
-       gccgoSymbolPrefix := strings.Map(clean, *gccgoprefix)
+
+       var gccgoSymbolPrefix string
+       if *gccgopkgpath != "" {
+               gccgoSymbolPrefix = strings.Map(clean, *gccgopkgpath)
+       } else {
+               if *gccgoprefix == "" && p.PackageName == "main" {
+                       gccgoSymbolPrefix = "main"
+               } else {
+                       prefix := strings.Map(clean, *gccgoprefix)
+                       if prefix == "" {
+                               prefix = "go"
+                       }
+                       gccgoSymbolPrefix = prefix + "." + p.PackageName
+               }
+       }
 
        for _, exp := range p.ExpFunc {
                // TODO: support functions with receivers.
@@ -707,7 +721,7 @@ func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) {
 
                // The function name.
                fmt.Fprintf(cdeclBuf, " "+exp.ExpName)
-               gccgoSymbol := fmt.Sprintf("%s.%s.%s", gccgoSymbolPrefix, p.PackageName, exp.Func.Name)
+               gccgoSymbol := fmt.Sprintf("%s.%s", gccgoSymbolPrefix, exp.Func.Name)
                fmt.Fprintf(cdeclBuf, " (")
                // Function parameters.
                forFieldList(fntype.Params,