mirror of
https://github.com/golang/go
synced 2024-11-14 09:00:21 -07:00
38 lines
763 B
Go
38 lines
763 B
Go
|
// 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")
|
||
|
}
|
||
|
}
|
||
|
}
|