mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/cgo: avoid using common names for sniffing
Current code uses names like "x" and "s" which can conflict with user's code easily. Use cryptographic names. Fixes #21668 Change-Id: Ib6d3d6327aa5b92d95c71503d42e3a79d96c8e15 Reviewed-on: https://go-review.googlesource.com/59710 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
93471a1390
commit
77acf19a59
2 changed files with 23 additions and 10 deletions
13
misc/cgo/test/issue21668.go
Normal file
13
misc/cgo/test/issue21668.go
Normal file
|
|
@ -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
|
||||||
|
|
@ -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.
|
// For each name, we generate these lines, where xxx is the index in toSniff plus one.
|
||||||
//
|
//
|
||||||
// #line xxx "not-declared"
|
// #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"
|
// #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"
|
// #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"
|
// #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"
|
// #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"
|
// #line xxx "not-signed-int-const"
|
||||||
// #if 0 < -(name)
|
// #if 0 < -(name)
|
||||||
// #line xxx "not-signed-int-const"
|
// #line xxx "not-signed-int-const"
|
||||||
|
|
@ -327,15 +327,15 @@ func (p *Package) guessKinds(f *File) []*Name {
|
||||||
|
|
||||||
for i, n := range names {
|
for i, n := range names {
|
||||||
fmt.Fprintf(&b, "#line %d \"not-declared\"\n"+
|
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"+
|
"#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"+
|
"#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"+
|
"#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"+
|
"#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"+
|
"#line %d \"not-signed-int-const\"\n"+
|
||||||
"#if 0 < (%s)\n"+
|
"#if 0 < (%s)\n"+
|
||||||
"#line %d \"not-signed-int-const\"\n"+
|
"#line %d \"not-signed-int-const\"\n"+
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue