github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/runtime/pprof/proto_darwin.go (about) 1 // Copyright 2023 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package pprof 6 7 import ( 8 "errors" 9 ) 10 11 // readMapping adds a mapping entry for the text region of the running process. 12 // It uses the mach_vm_region region system call to add mapping entries for the 13 // text region of the running process. Note that currently no attempt is 14 // made to obtain the buildID information. 15 func (b *profileBuilder) readMapping() { 16 if !machVMInfo(b.addMapping) { 17 b.addMappingEntry(0, 0, 0, "", "", true) 18 } 19 } 20 21 func readMainModuleMapping() (start, end uint64, exe, buildID string, err error) { 22 first := true 23 ok := machVMInfo(func(lo, hi, off uint64, file, build string) { 24 if first { 25 start, end = lo, hi 26 exe, buildID = file, build 27 } 28 // May see multiple text segments if rosetta is used for running 29 // the go toolchain itself. 30 first = false 31 }) 32 if !ok { 33 return 0, 0, "", "", errors.New("machVMInfo failed") 34 } 35 return start, end, exe, buildID, nil 36 }