blob: 9f6741eb08581976b4ebfb0315476c8a6223340a [file] [log] [blame]
// Copyright 2015 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.
// +build darwin
// +build arm arm64
package cgo
import "unsafe"
//go:cgo_import_static x_cgo_panicmem
//go:linkname x_cgo_panicmem x_cgo_panicmem
var x_cgo_panicmem uintptr
// use a pointer to avoid relocation of external symbol in __TEXT
// make linker happy
var _cgo_panicmem = &x_cgo_panicmem
// TODO(crawshaw): move this into x_cgo_init, it will not run until
// runtime has finished loading, which may be after its use.
func init() {
*_cgo_panicmem = funcPC(panicmem)
}
func funcPC(f interface{}) uintptr {
var ptrSize = unsafe.Sizeof(uintptr(0))
return **(**uintptr)(add(unsafe.Pointer(&f), ptrSize))
}
func add(p unsafe.Pointer, x uintptr) unsafe.Pointer {
return unsafe.Pointer(uintptr(p) + x)
}
func panicmem()