|  | // Copyright 2022 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 runtime | 
|  |  | 
|  | import ( | 
|  | "internal/coverage/rtcov" | 
|  | "unsafe" | 
|  | ) | 
|  |  | 
|  | //go:linkname runtime_coverage_getCovCounterList runtime/coverage.getCovCounterList | 
|  | func runtime_coverage_getCovCounterList() []rtcov.CovCounterBlob { | 
|  | res := []rtcov.CovCounterBlob{} | 
|  | u32sz := unsafe.Sizeof(uint32(0)) | 
|  | for datap := &firstmoduledata; datap != nil; datap = datap.next { | 
|  | if datap.covctrs == datap.ecovctrs { | 
|  | continue | 
|  | } | 
|  | res = append(res, rtcov.CovCounterBlob{ | 
|  | Counters: (*uint32)(unsafe.Pointer(datap.covctrs)), | 
|  | Len:      uint64((datap.ecovctrs - datap.covctrs) / u32sz), | 
|  | }) | 
|  | } | 
|  | return res | 
|  | } |