]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.9] cmd/cgo: avoid using common names for sniffing
authorHiroshi Ioka <hirochachacha@gmail.com>
Mon, 28 Aug 2017 22:39:57 +0000 (07:39 +0900)
committerRuss Cox <rsc@golang.org>
Wed, 25 Oct 2017 20:23:49 +0000 (20:23 +0000)
Current code uses names like "x" and "s" which can conflict with user's
code easily. Use cryptographic names.

Fixes #21668

Change-Id: Ib6d3d6327aa5b92d95c71503d42e3a79d96c8e16
Reviewed-on: https://go-review.googlesource.com/59710
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-on: https://go-review.googlesource.com/59730
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Hiroshi Ioka <hirochachacha@gmail.com>
Reviewed-by: Chris Broadfoot <cbro@golang.org>
Reviewed-on: https://go-review.googlesource.com/70849
Run-TryBot: Russ Cox <rsc@golang.org>

misc/cgo/test/issue21668.go [new file with mode: 0644]
src/cmd/cgo/gcc.go

diff --git a/misc/cgo/test/issue21668.go b/misc/cgo/test/issue21668.go
new file mode 100644 (file)
index 0000000..f15b920
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2017 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.
+
+// Fail to guess the kind of the constant "x".
+// No runtime test; just make sure it compiles.
+
+package cgotest
+
+// const int x = 42;
+import "C"
+
+var issue21668_X = C.x
index ff8b81354b561b3d7a8ea2ab3940e16d65f7f902..c47d1fba8dd31a5ee0ff9811ee9d5d2adefa47b0 100644 (file)
@@ -296,15 +296,15 @@ func (p *Package) guessKinds(f *File) []*Name {
        // For each name, we generate these lines, where xxx is the index in toSniff plus one.
        //
        //      #line xxx "not-declared"
-       //      void __cgo_f_xxx_1(void) { __typeof__(name) *__cgo_undefined__; }
+       //      void __cgo_f_xxx_1(void) { __typeof__(name) *__cgo_undefined__1; }
        //      #line xxx "not-type"
-       //      void __cgo_f_xxx_2(void) { name *__cgo_undefined__; }
+       //      void __cgo_f_xxx_2(void) { name *__cgo_undefined__2; }
        //      #line xxx "not-int-const"
-       //      void __cgo_f_xxx_3(void) { enum { __cgo_undefined__ = (name)*1 }; }
+       //      void __cgo_f_xxx_3(void) { enum { __cgo_undefined__3 = (name)*1 }; }
        //      #line xxx "not-num-const"
-       //      void __cgo_f_xxx_4(void) { static const double x = (name); }
+       //      void __cgo_f_xxx_4(void) { static const double __cgo_undefined__4 = (name); }
        //      #line xxx "not-str-lit"
-       //      void __cgo_f_xxx_5(void) { static const char x[] = (name); }
+       //      void __cgo_f_xxx_5(void) { static const char __cgo_undefined__5[] = (name); }
        //      #line xxx "not-signed-int-const"
        //      #if 0 < -(name)
        //      #line xxx "not-signed-int-const"
@@ -327,15 +327,15 @@ func (p *Package) guessKinds(f *File) []*Name {
 
        for i, n := range names {
                fmt.Fprintf(&b, "#line %d \"not-declared\"\n"+
-                       "void __cgo_f_%d_1(void) { __typeof__(%s) *__cgo_undefined__; }\n"+
+                       "void __cgo_f_%d_1(void) { __typeof__(%s) *__cgo_undefined__1; }\n"+
                        "#line %d \"not-type\"\n"+
-                       "void __cgo_f_%d_2(void) { %s *__cgo_undefined__; }\n"+
+                       "void __cgo_f_%d_2(void) { %s *__cgo_undefined__2; }\n"+
                        "#line %d \"not-int-const\"\n"+
-                       "void __cgo_f_%d_3(void) { enum { __cgo_undefined__ = (%s)*1 }; }\n"+
+                       "void __cgo_f_%d_3(void) { enum { __cgo_undefined__3 = (%s)*1 }; }\n"+
                        "#line %d \"not-num-const\"\n"+
-                       "void __cgo_f_%d_4(void) { static const double x = (%s); }\n"+
+                       "void __cgo_f_%d_4(void) { static const double __cgo_undefined__4 = (%s); }\n"+
                        "#line %d \"not-str-lit\"\n"+
-                       "void __cgo_f_%d_5(void) { static const char s[] = (%s); }\n"+
+                       "void __cgo_f_%d_5(void) { static const char __cgo_undefined__5[] = (%s); }\n"+
                        "#line %d \"not-signed-int-const\"\n"+
                        "#if 0 < (%s)\n"+
                        "#line %d \"not-signed-int-const\"\n"+