From 2e32efc44ac86cce3bd0808e6049d8c9b0225ba8 Mon Sep 17 00:00:00 2001 From: Shenghou Ma Date: Fri, 6 May 2016 00:53:42 -0400 Subject: [PATCH] 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 --- src/runtime/os_linux_mips64x.go | 11 +++++++++++ src/runtime/os_linux_noauxv.go | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) 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 -- 2.50.0