MMCT TEAM
Server IP : 2a02:4780:11:1359:0:1d43:a566:2  /  Your IP : 216.73.216.161
Web Server : LiteSpeed
System : Linux in-mum-web1259.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64
User : u490972518 ( 490972518)
PHP Version : 5.6.40
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF
Directory (0755) :  /home/../opt/golang/1.22.0/src/context/../runtime/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/../opt/golang/1.22.0/src/context/../runtime/covermeta.go
// 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"
)

// 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 addCovMeta(p unsafe.Pointer, dlen uint32, hash [16]byte, pkpath string, pkid int, cmode uint8, cgran uint8) uint32 {
	slot := len(covMeta.metaList)
	covMeta.metaList = append(covMeta.metaList,
		rtcov.CovMetaBlob{
			P:                  (*byte)(p),
			Len:                dlen,
			Hash:               hash,
			PkgPath:            pkpath,
			PkgID:              pkid,
			CounterMode:        cmode,
			CounterGranularity: cgran,
		})
	if pkid != -1 {
		if covMeta.pkgMap == nil {
			covMeta.pkgMap = make(map[int]int)
		}
		if _, ok := covMeta.pkgMap[pkid]; ok {
			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[pkid] = slot
	}

	// ID zero is reserved as invalid.
	return uint32(slot + 1)
}

//go:linkname runtime_coverage_getCovMetaList runtime/coverage.getCovMetaList
func runtime_coverage_getCovMetaList() []rtcov.CovMetaBlob {
	return covMeta.metaList
}

//go:linkname runtime_coverage_getCovPkgMap runtime/coverage.getCovPkgMap
func runtime_coverage_getCovPkgMap() map[int]int {
	return covMeta.pkgMap
}

MMCT - 2023