aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-m68k.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 78b1a95..22270f5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
+
+ * elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
+ non-SEC_ALLOC sections break before GOT and PLT accounting.
+
2011-12-01 Hans-Peter Nilsson <hp@axis.com>
* elf32-cris.c (cris_elf_check_relocs) <plt accounting for
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 8c93548..bd660e9 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -2816,6 +2816,11 @@ elf_m68k_check_relocs (abfd, info, sec, relocs)
case R_68K_8:
case R_68K_16:
case R_68K_32:
+ /* We don't need to handle relocs into sections not going into
+ the "real" output. */
+ if ((sec->flags & SEC_ALLOC) == 0)
+ break;
+
if (h != NULL)
{
/* Make sure a plt entry is created for this symbol if it
@@ -2829,8 +2834,7 @@ elf_m68k_check_relocs (abfd, info, sec, relocs)
/* If we are creating a shared library, we need to copy the
reloc into the shared library. */
- if (info->shared
- && (sec->flags & SEC_ALLOC) != 0)
+ if (info->shared)
{
/* When creating a shared object, we must copy these
reloc types into the output file. We create a reloc