+2020-09-04  Alan Modra  <amodra@gmail.com>
+
+       PR 15146
+       PR 26314
+       PR 26530
+       * elflink.c (elf_link_add_object_symbols): Do set def_regular
+       and ref_regular for IR symbols.  Don't clear dynsym, allowing
+       IR symbols to load --as-needed shared libraries, but prevent
+       IR symbols from becoming dynamic.
+
 2020-09-03  Nick Clifton  <nickc@redhat.com>
 
        PR 26521
 
             object and a shared object.  */
          bfd_boolean dynsym = FALSE;
 
-         /* Plugin symbols aren't normal.  Don't set def_regular or
-            ref_regular for them, or make them dynamic.  */
-         if ((abfd->flags & BFD_PLUGIN) != 0)
-           ;
-         else if (! dynamic)
+         if (! dynamic)
            {
              if (! definition)
                {
              && !bfd_link_relocatable (info))
            dynsym = FALSE;
 
-         /* Nor should we make plugin symbols dynamic.  */
-         if ((abfd->flags & BFD_PLUGIN) != 0)
-           dynsym = FALSE;
-
          if (definition)
            {
              h->target_internal = isym->st_target_internal;
                }
            }
 
-         if (dynsym && h->dynindx == -1)
+         if (dynsym && (abfd->flags & BFD_PLUGIN) == 0 && h->dynindx == -1)
            {
              if (! bfd_elf_link_record_dynamic_symbol (info, h))
                goto error_free_vers;
 
+2020-09-04  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/ld-plugin/lto.exp: Don't run pr15146 tests.
+       * testsuite/ld-plugin/pr15146.d: Delete.
+       * testsuite/ld-plugin/pr15146a.c: Delete.
+       * testsuite/ld-plugin/pr15146b.c: Delete.
+       * testsuite/ld-plugin/pr15146c.c: Delete.
+       * testsuite/ld-plugin/pr15146d.c: Delete.
+
 2020-09-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/config/default.exp: Change NOSANTIZE_CFLAGS to
 
   [list "PR ld/13244" \
    "-shared -O2 -fPIC -flto -fuse-linker-plugin -nostdlib" "-O2 -fno-early-inlining -flto" \
    {pr13244.c} {{"readelf" {-s --wide} "pr13244.d"}} "pr13244.so" "c"] \
-  [list "Build libpr15146a.a" \
-   "$plug_opt" "-flto -O2" \
-   {pr15146a.c} {} "lib15146a.a"] \
-  [list "Build pr15146b.so" \
-   "-shared" "-O2 -fpic" \
-   {pr15146b.c} {} "pr15146b.so" "c"] \
-  [list "Build pr15146c.so" \
-   "-shared -Wl,--no-as-needed tmpdir/pr15146b.so" "-O2 -fpic $no_lto" \
-   {pr15146c.c} {} "pr15146c.so" "c"] \
-  [list "PR ld/15146 (1)" \
-   "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146a.o tmpdir/pr15146c.so" "" \
-   {dummy.c} {{"readelf" {-d} "pr15146.d"}} "pr15146a.exe"] \
-  [list "Build libpr15146d.a" \
-   "$plug_opt" "-flto -O2" \
-   {pr15146d.c} {} "lib15146d.a"] \
   [list "Build libpr16746a.a" \
    "" "" \
    {pr16746a.c pr16746b.c} {} "lib15146a.a"] \
 # Restrict these to ELF targets that support shared libs and PIC.
 if { [is_elf_format] && [check_lto_shared_available] } {
     run_cc_link_tests $lto_link_elf_tests
-    set testname "PR ld/15146 (2)"
-    set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146d.o tmpdir/pr15146c.so"]
-    if { [ regexp "undefined reference to symbol '\\.?xxx'" $exec_output ] } {
-       pass $testname
-    } {
-       fail $testname
-    }
     set testname "PR ld/16746 (3)"
     set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746b.o tmpdir/pr16746d.o"]
     if { [ regexp "warning: \\.?foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {