This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 2/2] Use urandom to get random seed


From: Andi Kleen <ak@linux.intel.com>

When available use /dev/urandom to get the random seem. This will lower the probability
of collisions.

On other systems it will fallback to the old methods.

Passes bootstrap + testsuite on x86_64. Ok?

gcc/:

* 2011-09-26   Andi Kleen <ak@linux.intel.com>

	* toplev.c (init_local_tick): Try reading random seed from /dev/urandom
---
 gcc/toplev.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/gcc/toplev.c b/gcc/toplev.c
index e1a8b35..6298595 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -262,6 +262,12 @@ init_local_tick (void)
 {
   if (!flag_random_seed)
     {
+      /* Try urandom first. Time of day is too likely to collide. */
+
+      int fd = open("/dev/urandom", O_RDONLY);
+      read(fd, &random_seed, sizeof(random_seed));
+      close(fd);
+
       /* Get some more or less random data.  */
 #ifdef HAVE_GETTIMEOFDAY
       {
-- 
1.7.5.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]