aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/os3_solaris.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/os3_solaris.go')
-rw-r--r--src/runtime/os3_solaris.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go
index ffac4b6492..2a8677b48f 100644
--- a/src/runtime/os3_solaris.go
+++ b/src/runtime/os3_solaris.go
@@ -601,8 +601,9 @@ func sysargs(argc int32, argv **byte) {
n++
// now argv+n is auxv
- auxv := (*[1 << 28]uintptr)(add(unsafe.Pointer(argv), uintptr(n)*goarch.PtrSize))
- sysauxv(auxv[:])
+ auxvp := (*[1 << 28]uintptr)(add(unsafe.Pointer(argv), uintptr(n)*goarch.PtrSize))
+ pairs := sysauxv(auxvp[:])
+ auxv = auxvp[: pairs*2 : pairs*2]
}
const (
@@ -611,8 +612,9 @@ const (
_AT_SUN_EXECNAME = 2014 // exec() path name
)
-func sysauxv(auxv []uintptr) {
- for i := 0; auxv[i] != _AT_NULL; i += 2 {
+func sysauxv(auxv []uintptr) (pairs int) {
+ var i int
+ for i = 0; auxv[i] != _AT_NULL; i += 2 {
tag, val := auxv[i], auxv[i+1]
switch tag {
case _AT_PAGESZ:
@@ -621,6 +623,7 @@ func sysauxv(auxv []uintptr) {
executablePath = gostringnocopy((*byte)(unsafe.Pointer(val)))
}
}
+ return i / 2
}
// sigPerThreadSyscall is only used on linux, so we assign a bogus signal