| // 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. |
| |
| // 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) |
| } |
| } |
| } |