| // Copyright 2023 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 !gccgo |
| |
| package abi |
| |
| // FuncPC* intrinsics. |
| // |
| // CAREFUL: In programs with plugins, FuncPC* can return different values |
| // for the same function (because there are actually multiple copies of |
| // the same function in the address space). To be safe, don't use the |
| // results of this function in any == expression. It is only safe to |
| // use the result as an address at which to start executing code. |
| |
| // FuncPCABI0 returns the entry PC of the function f, which must be a |
| // direct reference of a function defined as ABI0. Otherwise it is a |
| // compile-time error. |
| // |
| // Implemented as a compile intrinsic. |
| func FuncPCABI0(f interface{}) uintptr |
| |
| // FuncPCABIInternal returns the entry PC of the function f. If f is a |
| // direct reference of a function, it must be defined as ABIInternal. |
| // Otherwise it is a compile-time error. If f is not a direct reference |
| // of a defined function, it assumes that f is a func value. Otherwise |
| // the behavior is undefined. |
| // |
| // Implemented as a compile intrinsic. |
| func FuncPCABIInternal(f interface{}) uintptr |