+2020-03-18  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * elf32-arm.c (arm_build_one_stub): Emit a fatal error message
+       instead of calling abort.
+       * elf32-csky.c (csky_build_one_stub): Likewise.
+       * elf32-hppa.c (hppa_build_one_stub): Likewise.
+       * elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
+       * elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
+       * elf32-metag.c (metag_build_one_stub): Likewise.
+       * elf32-nios2.c (nios2_build_one_stub): Likewise.
+       * elf64-ppc.c (ppc_build_one_stub): Likewise.
+       (ppc_size_one_stub): Likewise.
+       * elfnn-aarch64.c (aarch64_build_one_stub): Likewise.
+
 2020-03-17  Nick Clifton  <nickc@redhat.com>
 
        PR 25688
 
      section.  The user should fix his linker script.  */
   if (stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   globals = elf32_arm_hash_table (info);
   if (globals == NULL)
 
      section.  The user should fix his linker script.  */
   if (stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   globals = csky_elf_hash_table (info);
   if (globals == NULL)
 
         section.  The user should fix his linker script.  */
       if (hsh->target_section->output_section == NULL
          && info->non_contiguous_regions)
-       {
-         _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                               "Retry without --enable-non-contiguous-regions.\n"),
-                             hsh->target_section);
-         abort();
-    }
+       info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output "
+                                 "section. Retry without "
+                                 "--enable-non-contiguous-regions.\n"),
+                               hsh->target_section);
 
       /* Create the long branch.  A long branch is formed with "ldil"
         loading the upper bits of the target address into a register,
         section.  The user should fix his linker script.  */
       if (hsh->target_section->output_section == NULL
          && info->non_contiguous_regions)
-       {
-         _bfd_error_handler (_("Could not assign %pA to an output section. "
-                               "Retry without --enable-non-contiguous-regions.\n"),
-                             hsh->target_section);
-         abort();
-    }
+       info->callbacks->einfo (_("%F%P: Could not assign %pA to an output "
+                                 "section. Retry without "
+                                 "--enable-non-contiguous-regions.\n"),
+                               hsh->target_section);
+
       /* Branches are relative.  This is where we are going to.  */
       sym_value = (hsh->target_value
                   + hsh->target_section->output_offset
         section.  The user should fix his linker script.  */
       if (hsh->target_section->output_section == NULL
          && info->non_contiguous_regions)
-       {
-         _bfd_error_handler (_("Could not assign %pA to an output section. "
-                               "Retry without --enable-non-contiguous-regions.\n"),
-                             hsh->target_section);
-         abort();
-    }
+       info->callbacks->einfo (_("%F%P: Could not assign %pA to an output "
+                                 "section. Retry without "
+                                 "--enable-non-contiguous-regions.\n"),
+                               hsh->target_section);
+
       /* Branches are relative.  This is where we are going to.  */
       sym_value = (hsh->target_value
                   + hsh->target_section->output_offset
 
      section.  The user should fix his linker script.  */
   if (stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
 
      section.  The user should fix his linker script.  */
   if (stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   htab = m68hc11_elf_hash_table (info);
 
 
      section.  The user should fix his linker script.  */
   if (hsh->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         hsh->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           hsh->target_section);
 
   stub_sec = hsh->stub_sec;
 
 
      section.  The user should fix his linker script.  */
   if (hsh->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         hsh->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           hsh->target_section);
+
   /* Make a note of the offset within the stubs for this entry.  */
   hsh->stub_offset = stub_sec->size;
 
 
   if (stub_entry->target_section != NULL
       && stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   /* Same for the group.  */
   if (stub_entry->group->stub_sec != NULL
       && stub_entry->group->stub_sec->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign group %pA target %pA to an "
-                           "output section. Retry without "
-                           "--enable-non-contiguous-regions.\n"),
-                         stub_entry->group->stub_sec,
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign group %pA target %pA to an "
+                             "output section. Retry without "
+                             "--enable-non-contiguous-regions.\n"),
+                           stub_entry->group->stub_sec,
+                           stub_entry->target_section);
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
   if (stub_entry->target_section != NULL
       && stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign %pA to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign %pA to an output section. "
+                             "Retry without --enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   /* Same for the group.  */
   if (stub_entry->group->stub_sec != NULL
       && stub_entry->group->stub_sec->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign group %pA target %pA to an "
-                           "output section. Retry without "
-                           "--enable-non-contiguous-regions.\n"),
-                         stub_entry->group->stub_sec,
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign group %pA target %pA to an "
+                             "output section. Retry without "
+                             "--enable-non-contiguous-regions.\n"),
+                           stub_entry->group->stub_sec,
+                           stub_entry->target_section);
 
   /* Make a note of the offset within the stubs for this entry.  */
   stub_entry->stub_offset = stub_entry->group->stub_sec->size;
 
      section.  The user should fix his linker script.  */
   if (stub_entry->target_section->output_section == NULL
       && info->non_contiguous_regions)
-    {
-      _bfd_error_handler (_("Could not assign '%pA' to an output section. "
-                           "Retry without --enable-non-contiguous-regions.\n"),
-                         stub_entry->target_section);
-      abort();
-    }
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+                             "Retry without "
+                             "--enable-non-contiguous-regions.\n"),
+                           stub_entry->target_section);
 
   stub_sec = stub_entry->stub_sec;
 
 
+2020-03-18  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * emultempl/xtensaelf.em: Emit a fatal error message
+       instead of calling abort.
+       * ldlang.c: Likewise.
+
 2020-03-14  Alan Modra  <amodra@gmail.com>
 
        * testsuite/ld-elf/non-contiguous.d: Don't xfail generic ELF
 
       lang_statement_union_type *l = iter_stack_current (&stack);
 
       if (l == NULL && link_info.non_contiguous_regions)
-       {
-         einfo (_("Relaxation not supported with --enable-non-contiguous-regions.\n"));
-         abort();
-       }
+       einfo (_("%F%P: Relaxation not supported with "
+                "--enable-non-contiguous-regions.\n"));
 
       if (l->header.type == lang_input_section_enum)
        {
 
              if (dot + TO_ADDR (i->size) > end)
                {
                  if (i->flags & SEC_LINKER_CREATED)
-                   {
-                     einfo (_("Output section '%s' not large enough for the "
-                              "linker-created stubs section '%s'.\n"),
-                            i->output_section->name, i->name);
-                     abort();
-                   }
+                   einfo (_("%F%P: Output section '%s' not large enough for the "
+                            "linker-created stubs section '%s'.\n"),
+                          i->output_section->name, i->name);
 
                  if (i->rawsize && i->rawsize != i->size)
-                   {
-                     einfo (_("Relaxation not supported with "
-                              "--enable-non-contiguous-regions (section '%s' "
-                              "would overflow '%s' after it changed size).\n"),
-                            i->name, i->output_section->name);
-                     abort();
-                   }
+                   einfo (_("%F%P: Relaxation not supported with "
+                            "--enable-non-contiguous-regions (section '%s' "
+                            "would overflow '%s' after it changed size).\n"),
+                          i->name, i->output_section->name);
 
                  *removed = 1;
                  dot = end;