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