1// Copyright 2020 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5// Test that GC data is generated correctly for global 6// variables with types defined in a shared library. 7// See issue 39927. 8 9// This test run under GODEBUG=clobberfree=1. The check 10// *x[i] == 12345 depends on this debug mode to clobber 11// the value if the object is freed prematurely. 12 13package main 14 15import ( 16 "fmt" 17 "runtime" 18 "testshared/gcdata/p" 19) 20 21var x p.T 22 23func main() { 24 for i := range x { 25 x[i] = new(int) 26 *x[i] = 12345 27 } 28 runtime.GC() 29 runtime.GC() 30 runtime.GC() 31 for i := range x { 32 if *x[i] != 12345 { 33 fmt.Printf("x[%d] == %d, want 12345\n", i, *x[i]) 34 panic("FAIL") 35 } 36 } 37} 38