* elf32-m68k.c (bfd_elf_m68k_set_target_options): Don't set GOT
authorMaciej W. Rozycki <macro@linux-mips.org>
Fri, 20 Aug 2010 21:06:30 +0000 (21:06 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Fri, 20 Aug 2010 21:06:30 +0000 (21:06 +0000)
options unless an m68k hash table has been found.

bfd/ChangeLog
bfd/elf32-m68k.c

index 9a52165d796a2e2ea8140edb253a5c13e35c066e..cb798b336cc0b37bfc9d4f270c1f1fa2b8053ab1 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-20  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * elf32-m68k.c (bfd_elf_m68k_set_target_options): Don't set GOT
+       options unless an m68k hash table has been found.
+
 2010-08-20  Nick Clifton  <nickc@redhat.com>
 
        * merge.c (sec_merge_emit): Do not zero pad sections that do not
index c0a5ef16d73601be5c1a7f52a13f1d7e92a17af4..975207fb5def12421693ee2b2ca6e942575a2848 100644 (file)
@@ -4745,34 +4745,44 @@ void
 bfd_elf_m68k_set_target_options (struct bfd_link_info *info, int got_handling)
 {
   struct elf_m68k_link_hash_table *htab;
-
-  htab = elf_m68k_hash_table (info);
+  bfd_boolean use_neg_got_offsets_p;
+  bfd_boolean allow_multigot_p;
+  bfd_boolean local_gp_p;
 
   switch (got_handling)
     {
     case 0:
       /* --got=single.  */
-      htab->local_gp_p = FALSE;
-      htab->use_neg_got_offsets_p = FALSE;
-      htab->allow_multigot_p = FALSE;
+      local_gp_p = FALSE;
+      use_neg_got_offsets_p = FALSE;
+      allow_multigot_p = FALSE;
       break;
 
     case 1:
       /* --got=negative.  */
-      htab->local_gp_p = TRUE;
-      htab->use_neg_got_offsets_p = TRUE;
-      htab->allow_multigot_p = FALSE;
+      local_gp_p = TRUE;
+      use_neg_got_offsets_p = TRUE;
+      allow_multigot_p = FALSE;
       break;
 
     case 2:
       /* --got=multigot.  */
-      htab->local_gp_p = TRUE;
-      htab->use_neg_got_offsets_p = TRUE;
-      htab->allow_multigot_p = TRUE;
+      local_gp_p = TRUE;
+      use_neg_got_offsets_p = TRUE;
+      allow_multigot_p = TRUE;
       break;
 
     default:
       BFD_ASSERT (FALSE);
+      return;
+    }
+
+  htab = elf_m68k_hash_table (info);
+  if (htab != NULL)
+    {
+      htab->local_gp_p = local_gp_p;
+      htab->use_neg_got_offsets_p = use_neg_got_offsets_p;
+      htab->allow_multigot_p = allow_multigot_p;
     }
 }