diff options
Diffstat (limited to 'src/runtime/os3_solaris.go')
| -rw-r--r-- | src/runtime/os3_solaris.go | 11 |
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 |
