+2019-08-16  Martin Liska  <mliska@suse.cz>
+
+       PR ld/24912
+       * elflink.c: Report error only for not relocatable.
+       * linker.c (_bfd_generic_link_add_one_symbol): Do not handle
+       here lto_slim_object as it's handled in caller.
+
 2019-08-16  Alan Modra  <amodra@gmail.com>
 
        * elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs.
 
       goto error_free_vers;
     }
 
-  if (abfd->lto_slim_object)
+  if (!bfd_link_relocatable (info)
+      && abfd->lto_slim_object)
     {
       _bfd_error_handler
        (_("%pB: plugin needed to handle lto object"), abfd);
 
   else if (bfd_is_com_section (section))
     {
       row = COMMON_ROW;
-      static bfd_boolean report_plugin_err = TRUE;
-      if (!bfd_link_relocatable (info) && report_plugin_err)
-       {
-         if (abfd->lto_slim_object)
-           {
-             report_plugin_err = FALSE;
-             _bfd_error_handler
-               (_("%pB: plugin needed to handle lto object"), abfd);
-           }
-         else if (name[0] == '_'
-                  && name[1] == '_'
-                  && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0)
-           {
-             report_plugin_err = FALSE;
-             _bfd_error_handler
-               (_("%pB: plugin needed to handle lto object"), abfd);
-           }
-       }
+      if (!bfd_link_relocatable (info)
+         && name[0] == '_'
+         && name[1] == '_'
+         && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0)
+       _bfd_error_handler
+         (_("%pB: plugin needed to handle lto object"), abfd);
     }
   else
     row = DEF_ROW;
 
+2019-08-16  Martin Liska  <mliska@suse.cz>
+
+       PR ld/24912
+       * object.cc (big_endian>::do_layout): Do not report error,
+       but only set a flag.
+       (big_endian>::do_add_symbols): Report error only for when
+       relocatable.
+
 2019-08-02  Alan Modra  <amodra@gmail.com>
 
        * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Set
 
          const unsigned char* pcontents = this->section_contents(i, &contents_len, false);
          struct lto_section lsection = *(const lto_section*)pcontents;
          if (lsection.slim_object)
-           gold_info(_("%s: plugin needed to handle lto object"),
-                     this->name().c_str());
+           layout->set_lto_slim_object ();
        }
     }
 
 
   this->symbols_.resize(symcount);
 
-  if (layout->is_lto_slim_object ())
+  if (!parameters->options().relocatable()
+      && layout->is_lto_slim_object ())
     gold_info(_("%s: plugin needed to handle lto object"),
              this->name().c_str());