Add back non-solaris ELF targets to solaris config

Alan Modra amodra@gmail.com
Sat Dec 20 04:53:00 GMT 2025


This reverses some of the changes made in config.bfd for PR 27666.
Removing targets for that PR was really just a workaround, and since
the underlying bug is now fixed they can be added back.

I chose to add the non-solaris ELF targets to the linker config using
targ_extra_emuls rather than targ_extra_libpath because someone using
the elf32_sparc emulation probably doesn't want to pick up solaris
libraries by accident.

It's a demonstration of what can be done rather than what should be
done.  I don't intend to commit this change as I may not be aware of 
other reasons to remove these targets besides pr27666.  In any case,
users can add these targets back if they wish with eg.
--target=sparc64-sun-solaris2.11 \
--enable-targets="sparc64-elf,sparc-elf"

bfd/
	* config.bfd: Remove pr27666 comments.  Add back non-solaris
	ELF targets to selvecs for solaris targets.
ld/
	* configure.tgt: Adjust solaris targets to suit config.bfd
	change.

diff --git a/bfd/config.bfd b/bfd/config.bfd
index 6648810f7fe..848fd624320 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -595,13 +595,13 @@ case "${targ}" in
     targ_selvecs="iamcu_elf32_vec i386_coff_vec"
     ;;
   i[3-7]86-*-solaris2*)
-    # PR 27666: Do not include i386_elf32_vec or x86_64_elf64_vec.
     targ_defvec=i386_elf32_sol2_vec
-    targ64_selvecs=x86_64_elf64_sol2_vec
+    targ_selvecs=i386_elf32_vec
+    targ64_selvecs="x86_64_elf64_sol2_vec x86_64_elf64_vec"
     ;;
   i[3-7]86-*-solaris*)
-    # PR 27666: Do not include i386_elf32_vec here.
     targ_defvec=i386_elf32_sol2_vec
+    targ_selvecs=i386_elf32_vec
     ;;
   i[3-7]86-*-nto*)
     targ_defvec=i386_elf32_vec
@@ -726,9 +726,8 @@ case "${targ}" in
     want64=true
     ;;
   x86_64-*-solaris2*)
-    # PR 27666: Do not include i386_elf32_vec or x86_64_elf64_vec.
     targ_defvec=x86_64_elf64_sol2_vec
-    targ_selvecs=i386_elf32_sol2_vec
+    targ_selvecs="i386_elf32_sol2_vec x86_64_elf64_vec i386_elf32_vec"
     want64=true
     ;;
   x86_64-*-gnu*)
@@ -1335,15 +1334,14 @@ case "${targ}" in
     targ_underscore=yes
     ;;
   sparc-*-solaris2*)
-    # PR 27666: Do not include sparc_elf32_vec or sparc_elf64_vec here.
     targ_defvec=sparc_elf32_sol2_vec
-    targ64_selvecs=sparc_elf64_sol2_vec
+    targ_selvecs=sparc_elf32_vec
+    targ64_selvecs="sparc_elf64_sol2_vec sparc_elf64_vec"
     ;;
 #ifdef BFD64
   sparcv9-*-solaris2* | sparc64-*-solaris2*)
-    # PR 27666: Do not include sparc_elf32_vec or sparc_elf64_vec here.
     targ_defvec=sparc_elf64_sol2_vec
-    targ_selvecs=sparc_elf32_sol2_vec
+    targ_selvecs="sparc_elf32_sol2_vec sparc_elf64_vec sparc_elf32_vec"
     want64=true
     ;;
   sparc64-*-haiku*)
@@ -1370,8 +1368,8 @@ case "${targ}" in
     targ_selvecs="sparc_elf32_vec"
     ;;
   sparc*-*-solaris*)
-    # PR 27666: Do not include sparc_elf32_vec here.
     targ_defvec=sparc_elf32_sol2_vec
+    targ_selvecs=sparc_elf32_vec
     ;;
   sparc*-*-*)
     targ_defvec=sparc_elf32_vec
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 8efe659e5a0..580f665fe67 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -375,10 +375,13 @@ i[3-7]86-*-redox*)	targ_emul=elf_i386
 			;;
 i[3-7]86-*-solaris2*)
 			targ_emul=elf_i386_sol2
+			targ_extra_emuls=elf_i386
 			targ64_extra_libpath=elf_x86_64_sol2
+			targ64_extra_emuls=elf_x86_64
 			;;
 i[3-7]86-*-solaris*)
 			targ_emul=elf_i386_sol2
+			targ_extra_emuls=elf_i386
 			;;
 i[3-7]86-*-netbsd* | \
 i[3-7]86-*-netbsd*-gnu* | \
@@ -918,6 +921,7 @@ sparc64-*-*bsd*)	targ_emul=elf64_sparc
 sparc64-*-solaris2* | sparcv9-*-solaris2*)
 			targ_emul=elf64_sparc_sol2
 			targ_extra_libpath=elf32_sparc_sol2
+			targ_extra_emuls="elf64_sparc elf32_sparc"
 			;;
 sparc64-*-haiku*)	targ_emul=elf64_sparc
 			;;
@@ -930,10 +934,13 @@ sparc*-*-linux-*)	targ_emul=elf32_sparc
 			;;
 sparc-*-solaris2*)
 			targ_emul=elf32_sparc_sol2
+			targ_extra_emuls=elf32_sparc
 			targ64_extra_libpath=elf64_sparc_sol2
+			targ64_extra_emuls=elf64_sparc
 			;;
 sparc*-*-solaris*)
 			targ_emul=elf32_sparc_sol2
+			targ_extra_emuls=elf32_sparc
 			;;
 sparc*-*-vxworks*)	targ_emul=elf32_sparc_vxworks
 			;;
@@ -1004,6 +1011,7 @@ x86_64-*-redox*)	targ_emul=elf_x86_64
 x86_64-*-solaris2*)
 			targ_emul=elf_x86_64_sol2
 			targ_extra_libpath=elf_i386_sol2
+			targ_extra_emuls="elf_x86_64 elf_i386"
 			;;
 x86_64-*-netbsd* | x86_64-*-openbsd*)
 			targ_emul=elf_x86_64

-- 
Alan Modra


More information about the Binutils mailing list