[dev.typeparams] runtime: fix misuse of funcPC

funcPC expects a func value. There are places where we pass an
unsafe.Pointer, which is technically undefined.

In proc.go it is actually representing a func value, so the
expression does the right thing. Cast to a func value so it is
clearer.

In os_freebsd.go it is a raw function pointer. Using funcPC on a
raw function pointer is incorrect. Just use it directly instead.

Change-Id: I3c5d61cea08f0abf5737834b520f9f1b583c1d34
Reviewed-on: https://go-review.googlesource.com/c/go/+/321953
Trust: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Cherry Mui 2021-05-20 21:40:32 -04:00
parent 7d928460a1
commit 6a81e063dd
2 changed files with 3 additions and 2 deletions

View file

@ -237,7 +237,7 @@ func newosproc0(stacksize uintptr, fn unsafe.Pointer) {
// However, newosproc0 is currently unreachable because builds
// utilizing c-shared/c-archive force external linking.
param := thrparam{
start_func: funcPC(fn),
start_func: uintptr(fn),
arg: nil,
stack_base: uintptr(stack), //+stacksize?
stack_size: stacksize,

View file

@ -6487,7 +6487,8 @@ func doInit(t *initTask) {
// Load stats non-atomically since tracinit is updated only by this init goroutine.
after := inittrace
pkg := funcpkgpath(findfunc(funcPC(firstFunc)))
f := *(*func())(unsafe.Pointer(&firstFunc))
pkg := funcpkgpath(findfunc(funcPC(f)))
var sbuf [24]byte
print("init ", pkg, " @")