* elf-m10300.c (mn10300_elf_check_relocs): Delete dead code.
[deliverable/binutils-gdb.git] / bfd / elf32-m68k.c
index 70d82ec2ae576bad3ae972d0959d69945759b589..57431c991222ee9b5e8eb4a603dbc0c8100721e7 100644 (file)
@@ -6,7 +6,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,7 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #include "sysdep.h"
 #include "bfd.h"
@@ -505,6 +506,9 @@ elf32_m68k_object_p (bfd *abfd)
        case EF_M68K_CF_ISA_C:
          features |= mcfisa_a|mcfisa_c|mcfhwdiv|mcfusp;
          break;
+       case EF_M68K_CF_ISA_C_NODIV:
+         features |= mcfisa_a|mcfisa_c|mcfusp;
+         break;
        }
       switch (eflags & EF_M68K_CF_MAC_MASK)
        {
@@ -657,6 +661,10 @@ elf32_m68k_print_private_bfd_data (abfd, ptr)
            case EF_M68K_CF_ISA_C:
              isa = "C";
              break;
+           case EF_M68K_CF_ISA_C_NODIV:
+             isa = "C";
+             additional = " [nodiv]";
+             break;
            }
          fprintf (file, " [isa %s]%s", isa, additional);
          if (eflags & EF_M68K_CF_FLOAT)
@@ -1034,7 +1042,9 @@ elf_m68k_check_relocs (abfd, info, sec, relocs)
          /* This relocation describes which C++ vtable entries are actually
             used.  Record for later use during GC.  */
        case R_68K_GNU_VTENTRY:
-         if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+         BFD_ASSERT (h != NULL);
+         if (h != NULL
+             && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
            return FALSE;
          break;
 
@@ -1215,7 +1225,6 @@ elf_m68k_adjust_dynamic_symbol (info, h)
   struct elf_m68k_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  unsigned int power_of_two;
 
   htab = elf_m68k_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
@@ -1360,28 +1369,7 @@ elf_m68k_adjust_dynamic_symbol (info, h)
       h->needs_copy = 1;
     }
 
-  /* We need to figure out the alignment required for this symbol.  I
-     have no idea how ELF linkers handle this.  */
-  power_of_two = bfd_log2 (h->size);
-  if (power_of_two > 3)
-    power_of_two = 3;
-
-  /* Apply the required alignment.  */
-  s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > bfd_get_section_alignment (dynobj, s))
-    {
-      if (!bfd_set_section_alignment (dynobj, s, power_of_two))
-       return FALSE;
-    }
-
-  /* Define the symbol as being at this point in the section.  */
-  h->root.u.def.section = s;
-  h->root.u.def.value = s->size;
-
-  /* Increment the section size to make room for the symbol.  */
-  s->size += h->size;
-
-  return TRUE;
+  return _bfd_elf_adjust_dynamic_copy (h, s);
 }
 
 /* Set the sizes of the dynamic sections.  */
This page took 0.024502 seconds and 4 git commands to generate.