1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package runtime 6 7 import "unsafe" 8 9 const ( 10 _AT_NULL = 0 11 _AT_RANDOM = 25 12 _AT_SYSINFO = 32 13 ) 14 15 var _vdso uint32 16 17 func sysargs(argc int32, argv **byte) { 18 // skip over argv, envv to get to auxv 19 n := argc + 1 20 for argv_index(argv, n) != nil { 21 n++ 22 } 23 n++ 24 auxv := (*[1 << 28]uint32)(add(unsafe.Pointer(argv), uintptr(n)*ptrSize)) 25 26 for i := 0; auxv[i] != _AT_NULL; i += 2 { 27 switch auxv[i] { 28 case _AT_SYSINFO: 29 _vdso = auxv[i+1] 30 31 case _AT_RANDOM: 32 startupRandomData = (*[16]byte)(unsafe.Pointer(uintptr(auxv[i+1])))[:] 33 } 34 } 35 } 36