Source File
covermeta.go
Belonging Package
runtime
// 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 runtimeimport ()// covMeta is the top-level container for bits of state related to// code coverage meta-data in the runtime.var covMeta struct {// metaList contains the list of currently registered meta-data// blobs for the running program.metaList []rtcov.CovMetaBlob// pkgMap records mappings from hard-coded package IDs to// slots in the covMetaList above.pkgMap map[int]int// Set to true if we discover a package mapping glitch.hardCodedListNeedsUpdating bool}// addCovMeta is invoked during package "init" functions by the// compiler when compiling for coverage instrumentation; here 'p' is a// meta-data blob of length 'dlen' for the package in question, 'hash'// is a compiler-computed md5.sum for the blob, 'pkpath' is the// package path, 'pkid' is the hard-coded ID that the compiler is// using for the package (or -1 if the compiler doesn't think a// hard-coded ID is needed), and 'cmode'/'cgran' are the coverage// counter mode and granularity requested by the user. Return value is// the ID for the package for use by the package code itself.func ( unsafe.Pointer, uint32, [16]byte, string, int, uint8, uint8) uint32 {:= len(covMeta.metaList)covMeta.metaList = append(covMeta.metaList,rtcov.CovMetaBlob{P: (*byte)(),Len: ,Hash: ,PkgPath: ,PkgID: ,CounterMode: ,CounterGranularity: ,})if != -1 {if covMeta.pkgMap == nil {covMeta.pkgMap = make(map[int]int)}if , := covMeta.pkgMap[]; {throw("runtime.addCovMeta: coverage package map collision")}// Record the real slot (position on meta-list) for this// package; we'll use the map to fix things up later on.covMeta.pkgMap[] =}// ID zero is reserved as invalid.return uint32( + 1)}//go:linkname runtime_coverage_getCovMetaList runtime/coverage.getCovMetaListfunc () []rtcov.CovMetaBlob {return covMeta.metaList}//go:linkname runtime_coverage_getCovPkgMap runtime/coverage.getCovPkgMapfunc () map[int]int {return covMeta.pkgMap}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |