// Copyright 2025 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. //go:build linux package runtime import ( "internal/runtime/atomic" "internal/runtime/syscall" "unsafe" ) var prSetVMAUnsupported atomic.Bool // setVMAName calls prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, start, len, name) func setVMAName(start unsafe.Pointer, length uintptr, name string) { if debug.decoratemappings == 0 || prSetVMAUnsupported.Load() { return } var sysName [80]byte n := copy(sysName[:], " Go: ") copy(sysName[n:79], name) // leave final byte zero _, _, err := syscall.Syscall6(syscall.SYS_PRCTL, syscall.PR_SET_VMA, syscall.PR_SET_VMA_ANON_NAME, uintptr(start), length, uintptr(unsafe.Pointer(&sysName[0])), 0) if err == _EINVAL { prSetVMAUnsupported.Store(true) } // ignore other errors }