From 4e61c516f4230df225172eb1bc409e2f0dd6edeb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 28 Jun 2015 23:04:05 -0400 Subject: [PATCH] cmd/cgo: fix a problem with 'go build -compiler gccgo' Port of https://golang.org/cl/154360045 to Git. Original author is Xia Bin (already a contributor). Fixes #8945. Change-Id: I28bcaf3348794202ca59fbc3466bd7b9670030e4 Reviewed-on: https://go-review.googlesource.com/11658 Reviewed-by: Ian Lance Taylor --- misc/cgo/test/issue8945.go | 16 ++++++++++++++++ src/cmd/cgo/out.go | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 misc/cgo/test/issue8945.go diff --git a/misc/cgo/test/issue8945.go b/misc/cgo/test/issue8945.go new file mode 100644 index 0000000000..572b8155d8 --- /dev/null +++ b/misc/cgo/test/issue8945.go @@ -0,0 +1,16 @@ +// 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. + +// +build gccgo + +package cgotest + +//typedef void (*PFunc)(); +//PFunc success_cb; +import "C" + +//export Test +func Test() { + _ = C.success_cb +} diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 0308242c5f..3edb70345d 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -118,11 +118,11 @@ func (p *Package) writeDefs() { } if !cVars[n.C] { - fmt.Fprintf(fm, "extern char %s[];\n", n.C) - fmt.Fprintf(fm, "void *_cgohack_%s = %s;\n\n", n.C, n.C) if *gccgo { fmt.Fprintf(fc, "extern byte *%s;\n", n.C) } else { + fmt.Fprintf(fm, "extern char %s[];\n", n.C) + fmt.Fprintf(fm, "void *_cgohack_%s = %s;\n\n", n.C, n.C) fmt.Fprintf(fgo2, "//go:linkname __cgo_%s %s\n", n.C, n.C) fmt.Fprintf(fgo2, "//go:cgo_import_static %s\n", n.C) fmt.Fprintf(fgo2, "var __cgo_%s byte\n", n.C) -- 2.50.0