runtime: always load address of libcFunc on Solaris

The linker always uses .plt for externals, so libcFunc is now an actual
external symbol instead of a pointer to one.

Fixes most of the breakage introduced in previous CL.

Change-Id: I64b8c96f93127f2d13b5289b024677fd3ea7dbea
Reviewed-on: https://go-review.googlesource.com/8215
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
diff --git a/src/runtime/netpoll_solaris.go b/src/runtime/netpoll_solaris.go
index abfe56d..359fd47 100644
--- a/src/runtime/netpoll_solaris.go
+++ b/src/runtime/netpoll_solaris.go
@@ -89,23 +89,23 @@
 }
 
 func fcntl(fd, cmd int32, arg uintptr) int32 {
-	return int32(sysvicall3(libc_fcntl, uintptr(fd), uintptr(cmd), arg))
+	return int32(sysvicall3(&libc_fcntl, uintptr(fd), uintptr(cmd), arg))
 }
 
 func port_create() int32 {
-	return int32(sysvicall0(libc_port_create))
+	return int32(sysvicall0(&libc_port_create))
 }
 
 func port_associate(port, source int32, object uintptr, events uint32, user uintptr) int32 {
-	return int32(sysvicall5(libc_port_associate, uintptr(port), uintptr(source), object, uintptr(events), user))
+	return int32(sysvicall5(&libc_port_associate, uintptr(port), uintptr(source), object, uintptr(events), user))
 }
 
 func port_dissociate(port, source int32, object uintptr) int32 {
-	return int32(sysvicall3(libc_port_dissociate, uintptr(port), uintptr(source), object))
+	return int32(sysvicall3(&libc_port_dissociate, uintptr(port), uintptr(source), object))
 }
 
 func port_getn(port int32, evs *portevent, max uint32, nget *uint32, timeout *timespec) int32 {
-	return int32(sysvicall5(libc_port_getn, uintptr(port), uintptr(unsafe.Pointer(evs)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout))))
+	return int32(sysvicall5(&libc_port_getn, uintptr(port), uintptr(unsafe.Pointer(evs)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout))))
 }
 
 var portfd int32 = -1