| // Copyright 2020 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. |
| |
| // Test that GC data is generated correctly for global |
| // variables with types defined in a shared library. |
| // See issue 39927. |
| |
| // This test run under GODEBUG=clobberfree=1. The check |
| // *x[i] == 12345 depends on this debug mode to clobber |
| // the value if the object is freed prematurely. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "runtime" |
| "testshared/gcdata/p" |
| ) |
| |
| var x p.T |
| |
| func main() { |
| for i := range x { |
| x[i] = new(int) |
| *x[i] = 12345 |
| } |
| runtime.GC() |
| runtime.GC() |
| runtime.GC() |
| for i := range x { |
| if *x[i] != 12345 { |
| fmt.Printf("x[%d] == %d, want 12345\n", i, *x[i]) |
| panic("FAIL") |
| } |
| } |
| } |