Nick Clifton 22f22b
diff -rup binutils-2.25.orig/bfd/hash.c binutils-2.25/bfd/hash.c
Nick Clifton 22f22b
--- binutils-2.25.orig/bfd/hash.c	2016-03-01 08:08:16.065426095 +0000
Nick Clifton 22f22b
+++ binutils-2.25/bfd/hash.c	2016-03-01 08:18:16.678210068 +0000
Nick Clifton 22f22b
@@ -423,6 +423,8 @@ bfd_hash_table_init (struct bfd_hash_tab
Nick Clifton 22f22b
 void
Nick Clifton 22f22b
 bfd_hash_table_free (struct bfd_hash_table *table)
Nick Clifton 22f22b
 {
Nick Clifton 22f22b
+  if (table->memory == NULL)
Nick Clifton 22f22b
+    return;
Nick Clifton 22f22b
   objalloc_free ((struct objalloc *) table->memory);
Nick Clifton 22f22b
   table->memory = NULL;
Nick Clifton 22f22b
 }
Nick Clifton 22f22b
diff -rup binutils-2.25.orig/bfd/plugin.c binutils-2.25/bfd/plugin.c
Nick Clifton 22f22b
--- binutils-2.25.orig/bfd/plugin.c	2016-03-01 08:08:16.076426138 +0000
Nick Clifton 22f22b
+++ binutils-2.25/bfd/plugin.c	2016-03-01 08:09:56.776828118 +0000
Nick Clifton 22f22b
@@ -345,6 +345,10 @@ try_load_plugin (const char *pname, bfd
Nick Clifton 22f22b
   int i;
Nick Clifton 22f22b
   ld_plugin_onload onload;
Nick Clifton 22f22b
   enum ld_plugin_status status;
Nick Clifton 22f22b
+  static bfd_boolean loading = FALSE;
Nick Clifton 22f22b
+
Nick Clifton 22f22b
+  if (loading)
Nick Clifton 22f22b
+    goto err;
Nick Clifton 22f22b
 
Nick Clifton 22f22b
   plugin_handle = dlopen (pname, RTLD_NOW);
Nick Clifton 22f22b
   if (!plugin_handle)
Nick Clifton 22f22b
@@ -378,12 +382,16 @@ try_load_plugin (const char *pname, bfd
Nick Clifton 22f22b
   if (status != LDPS_OK)
Nick Clifton 22f22b
     goto err;
Nick Clifton 22f22b
 
Nick Clifton 22f22b
+  loading = TRUE;
Nick Clifton 22f22b
+  
Nick Clifton 22f22b
   if (!claim_file)
Nick Clifton 22f22b
     goto err;
Nick Clifton 22f22b
 
Nick Clifton 22f22b
   if (!try_claim (abfd))
Nick Clifton 22f22b
     goto err;
Nick Clifton 22f22b
 
Nick Clifton 22f22b
+  loading = FALSE;
Nick Clifton 22f22b
+  
Nick Clifton 22f22b
   return 1;
Nick Clifton 22f22b
 
Nick Clifton 22f22b
  err: