| // Copyright 2012 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. |
| |
| package cgotest |
| |
| /* |
| // Mac OS X's gcc will generate scattered relocation 2/1 for |
| // this function on Darwin/386, and 8l couldn't handle it. |
| // this example is in issue 1635 |
| #include <stdio.h> |
| void scatter() { |
| void *p = scatter; |
| printf("scatter = %p\n", p); |
| } |
| |
| // Adding this explicit extern declaration makes this a test for |
| // https://gcc.gnu.org/PR68072 aka https://golang.org/issue/13344 . |
| // It used to cause a cgo error when building with GCC 6. |
| extern int hola; |
| |
| // this example is in issue 3253 |
| int hola = 0; |
| int testHola() { return hola; } |
| */ |
| import "C" |
| |
| import "testing" |
| |
| func test1635(t *testing.T) { |
| C.scatter() |
| if v := C.hola; v != 0 { |
| t.Fatalf("C.hola is %d, should be 0", v) |
| } |
| if v := C.testHola(); v != 0 { |
| t.Fatalf("C.testHola() is %d, should be 0", v) |
| } |
| } |