2016-04-10 15:32:26 -06:00
|
|
|
// Copyright 2014 The Go Authors. All rights reserved.
|
2014-08-27 18:15:05 -06:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
// Issue 8092. Test that linker defined symbols (e.g., text, data) don't
|
|
|
|
// conflict with C symbols.
|
|
|
|
|
|
|
|
package cgotest
|
|
|
|
|
|
|
|
/*
|
|
|
|
char text[] = "text";
|
|
|
|
char data[] = "data";
|
|
|
|
char *ctext(void) { return text; }
|
|
|
|
char *cdata(void) { return data; }
|
|
|
|
*/
|
|
|
|
import "C"
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
func test8092(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
s string
|
|
|
|
a, b *C.char
|
|
|
|
}{
|
|
|
|
{"text", &C.text[0], C.ctext()},
|
|
|
|
{"data", &C.data[0], C.cdata()},
|
|
|
|
}
|
|
|
|
for _, test := range tests {
|
|
|
|
if test.a != test.b {
|
|
|
|
t.Errorf("%s: pointer mismatch: %v != %v", test.s, test.a, test.b)
|
|
|
|
}
|
|
|
|
if got := C.GoString(test.a); got != test.s {
|
|
|
|
t.Errorf("%s: points at %#v, want %#v", test.s, got, test.s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|