From: Shenghou Ma Date: Fri, 6 May 2016 04:53:42 +0000 (-0400) Subject: runtime: get randomness from AT_RANDOM AUXV on linux/mips64x X-Git-Tag: go1.7beta1~305 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2e32efc44ac86cce3bd0808e6049d8c9b0225ba8;p=gostls13.git runtime: get randomness from AT_RANDOM AUXV on linux/mips64x Fixes #15148. Change-Id: If3b628f30521adeec1625689dbc98aaf4a9ec858 Reviewed-on: https://go-review.googlesource.com/22811 Reviewed-by: Keith Randall Run-TryBot: Minux Ma Reviewed-by: Cherry Zhang TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/os_linux_mips64x.go b/src/runtime/os_linux_mips64x.go index 92b5c82af7..8039b2fac9 100644 --- a/src/runtime/os_linux_mips64x.go +++ b/src/runtime/os_linux_mips64x.go @@ -9,6 +9,17 @@ package runtime var randomNumber uint32 +func archauxv(tag, val uintptr) { + switch tag { + case _AT_RANDOM: + // sysargs filled in startupRandomData, but that + // pointer may not be word aligned, so we must treat + // it as a byte array. + randomNumber = uint32(startupRandomData[4]) | uint32(startupRandomData[5])<<8 | + uint32(startupRandomData[6])<<16 | uint32(startupRandomData[7])<<24 + } +} + //go:nosplit func cputicks() int64 { // Currently cputicks() is used in blocking profiler and to seed fastrand1(). diff --git a/src/runtime/os_linux_noauxv.go b/src/runtime/os_linux_noauxv.go index 0b46f594ce..22522dd803 100644 --- a/src/runtime/os_linux_noauxv.go +++ b/src/runtime/os_linux_noauxv.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !amd64,!arm,!arm64 +// +build !amd64,!arm,!arm64,!mips64,!mips64le package runtime