* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Enable
[deliverable/binutils-gdb.git] / bfd / elf32-m68k.c
index d0675628431a806a8fa476ed17930b5c7832a949..1fb684472f0d25b847e9a8c8ab6dc86057dff288 100644 (file)
@@ -57,8 +57,6 @@ static boolean elf_m68k_finish_dynamic_sections
 
 static boolean elf32_m68k_set_private_flags
   PARAMS ((bfd *, flagword));
-static boolean elf32_m68k_copy_private_bfd_data
-  PARAMS ((bfd *, bfd *));
 static boolean elf32_m68k_merge_private_bfd_data
   PARAMS ((bfd *, bfd *));
 static boolean elf32_m68k_print_private_bfd_data
@@ -367,26 +365,6 @@ elf32_m68k_set_private_flags (abfd, flags)
   return true;
 }
 
-/* Copy m68k-specific data from one module to another */
-static boolean
-elf32_m68k_copy_private_bfd_data (ibfd, obfd)
-     bfd *ibfd;
-     bfd *obfd;
-{
-  flagword in_flags;
-
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return true;
-
-  in_flags = elf_elfheader (ibfd)->e_flags;
-
-  elf_elfheader (obfd)->e_flags = in_flags;
-  elf_flags_init (obfd) = true;
-
-  return true;
-}
-
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static boolean
@@ -429,10 +407,13 @@ elf32_m68k_print_private_bfd_data (abfd, ptr)
   /* Ignore init flag - it may not be set, despite the flags field containing valid data.  */
 
   /* xgettext:c-format */
-  fprintf (file, _ ("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
+  fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
 
   if (elf_elfheader (abfd)->e_flags & EF_CPU32)
-    fprintf (file, _ (" [cpu32]"));
+    fprintf (file, _(" [cpu32]"));
+
+  if (elf_elfheader (abfd)->e_flags & EF_M68000)
+    fprintf (file, _ (" [m68000]"));
 
   fputc ('\n', file);
 
@@ -1673,20 +1654,20 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
                }
 
              skip = false;
+             relocate = false;
 
              outrel.r_offset =
                _bfd_elf_section_offset (output_bfd, info, input_section,
                                         rel->r_offset);
              if (outrel.r_offset == (bfd_vma) -1)
                skip = true;
+             else if (outrel.r_offset == (bfd_vma) -2)
+               skip = true, relocate = true;
              outrel.r_offset += (input_section->output_section->vma
                                  + input_section->output_offset);
 
              if (skip)
-               {
-                 memset (&outrel, 0, sizeof outrel);
-                 relocate = false;
-               }
+               memset (&outrel, 0, sizeof outrel);
              /* h->dynindx may be -1 if the symbol was marked to
                  become local.  */
              else if (h != NULL
@@ -1695,7 +1676,6 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
                               & ELF_LINK_HASH_DEF_REGULAR) == 0))
                {
                  BFD_ASSERT (h->dynindx != -1);
-                 relocate = false;
                  outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
                  outrel.r_addend = relocation + rel->r_addend;
                }
@@ -1736,7 +1716,6 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
                          BFD_ASSERT (indx > 0);
                        }
 
-                     relocate = false;
                      outrel.r_info = ELF32_R_INFO (indx, r_type);
                      outrel.r_addend = relocation + rel->r_addend;
                    }
@@ -2329,8 +2308,6 @@ elf32_m68k_reloc_type_class (rela)
                                        elf_m68k_finish_dynamic_sections
 #define elf_backend_gc_mark_hook       elf_m68k_gc_mark_hook
 #define elf_backend_gc_sweep_hook      elf_m68k_gc_sweep_hook
-#define bfd_elf32_bfd_copy_private_bfd_data \
-                                        elf32_m68k_copy_private_bfd_data
 #define bfd_elf32_bfd_merge_private_bfd_data \
                                         elf32_m68k_merge_private_bfd_data
 #define bfd_elf32_bfd_set_private_flags \
This page took 0.029445 seconds and 4 git commands to generate.