Fix the creation of archives for Sparc Solaris2 targets by eliminating the support for generic SPARC ELF files.

	PR 27666
bfd	* config.bfd: Do not add the sparc_elf32_vec or sparc_elf64_vec
	vectors to Sparc Solaris2 targets.

ld	* testsuite/ld-sparc/sparc.exp: Do not run the sparctests or
	sparc64tests for Solaris2 targets.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d1192e3..d1a92dc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-09  Nick Clifton  <nickc@redhat.com>
+
+	PR 27666
+	* config.bfd: Do not add the sparc_elf32_vec or sparc_elf64_vec
+	vectors to Sparc Solaris2 targets.
+
 2021-06-08  Michael Matz  <matz@suse.de>
 
 	* elf.c (bfd_section_from_shdr): Set has_secondary_relocs flag.
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 9434fd6..57b513c 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -1279,13 +1279,14 @@
     ;;
 
   sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
+    # PR 27666: Do not include sparc_elf32_vec here.
     targ_defvec=sparc_elf32_sol2_vec
-    targ_selvecs=sparc_elf32_vec
     ;;
 #ifdef BFD64
   sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
+    # PR 27666: Do not include sparc_elf32_vec or sparc_elf64_vec here.
     targ_defvec=sparc_elf32_sol2_vec
-    targ_selvecs="sparc_elf64_sol2_vec sparc_elf32_vec sparc_elf64_vec"
+    targ_selvecs="sparc_elf64_sol2_vec"
     want64=true
     ;;
   sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3c2aa26..7ae7613 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-09  Nick Clifton  <nickc@redhat.com>
+
+	PR 27666
+	* testsuite/ld-sparc/sparc.exp: Do not run the sparctests or
+	sparc64tests for Solaris2 targets.
+
 2021-06-03  Alan Modra  <amodra@gmail.com>
 
 	PR 2589
diff --git a/ld/testsuite/ld-sparc/sparc.exp b/ld/testsuite/ld-sparc/sparc.exp
index 5621d07..3b65779 100644
--- a/ld/testsuite/ld-sparc/sparc.exp
+++ b/ld/testsuite/ld-sparc/sparc.exp
@@ -142,14 +142,19 @@
      "libgotop64.so"}
 }
 
-if { ![istarget "sparc64-*-elf*"] } {
-    run_ld_link_tests $sparctests
-}
+# The solaris2 targets do not support the generic SPARC ELF targets,
+# ie -melf32_sparc and -melf64_sparc, so we skip the next set of
+# tests for them.  Support could be added, but this then breaks the
+# creation of archives for those targets.  See PR 27666 for more
+# details.
+if { ![istarget "*-*-solaris2*"] } {
+    if { ![istarget "sparc64-*-elf*"] } {
+        run_ld_link_tests $sparctests
+    }
 
-if { !([istarget "sparc-*-elf*"]
-       || [istarget "sparc-sun-solaris2.5*"]
-       || [istarget "sparc-sun-solaris2.6"]) } {
-    run_ld_link_tests $sparc64tests
+    if { ![istarget "sparc-*-elf*"] } {
+        run_ld_link_tests $sparc64tests
+    }
 }
 
 if { [istarget "sparc*-*-linux*"] && [isnative] } {