aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-m68k.c32
2 files changed, 26 insertions, 11 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9a52165..cb798b3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index c0a5ef1..975207f 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -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;
}
}