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