From d416bfa85dd1bdc0af17948957bf2ce3cb164115 Mon Sep 17 00:00:00 2001
From: mapema <mapema@utu.fi>
Date: Wed, 17 Aug 2016 12:34:56 +0300
Subject: [PATCH] optimizing speed of shuffle-ld

---
 ld/ldlang.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ld/ldlang.c b/ld/ldlang.c
index 38e36c6fb16..fee100435a1 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -423,15 +423,15 @@ static struct md5_memory_entry
   md5_digest digest;
   char * str; // owned
   struct md5_memory_entry * next;
-} * md5_memory = NULL;
+} * md5_memory[1 << 12] = { };
 
 static bfd_boolean md5_collisions = FALSE;
 
 static void
 check_md5_memory (const char * str, const md5_digest * digest)
 {
-  struct md5_memory_entry ** next_ptr = &md5_memory;
-  for (struct md5_memory_entry * entry = md5_memory; entry != NULL; entry = entry->next)
+  struct md5_memory_entry ** next_ptr = &md5_memory[digest->data[0] % (sizeof(md5_memory)/sizeof(*md5_memory))];
+  for (struct md5_memory_entry * entry = *next_ptr; entry != NULL; entry = entry->next)
     {
       next_ptr = &entry->next;
       if (memcmp ((const void *) digest, (const void *) &entry->digest, 128/8) == 0)
-- 
GitLab