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