[PATCH] bfd: recognize *-*-windows* Windows targets

Pedro Alves pedro@palves.net
Mon Jul 13 23:15:52 GMT 2026


Clang's default target on Windows uses the "windows-msvc" OS in its
triplet, e.g. x86_64-pc-windows-msvc, i686-pc-windows-msvc, and
aarch64-pc-windows-msvc.  This is different from MinGW triplets -- it
means that the compiler produces binaries following the Windows/MSVC
ABI, not the GNU ABI.  config.sub already canonicalizes these, but
config.bfd doesn't map them to a BFD target vector, so configuring for
one of these targets fails to select a default vector.

Fix this by extending the i386, x86_64 and aarch64 PE entries to also
match "*-windows*", so that Windows targets spelled with the "windows"
OS select the same PE vectors as their mingw counterparts.

Note: even though config.sub does not support "windows-gnu" today,
Clang and Rust support it, as an alias for MinGW.  Clang also accepts
plain "windows", treating it as MSVC.  That's why the patch matches
"windows*".  Also, this is what is already used in bfd, anyhow:

 bfd/configure.host:81:*-*-windows*)
 bfd/acinclude.m4:24:*-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)

Change-Id: Ibc48f0c8fb0dbfda5f752ea6e8374d75c57b8bb7
---
 bfd/config.bfd | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/bfd/config.bfd b/bfd/config.bfd
index 02a1a68525e..c8a0e577ebc 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -254,7 +254,7 @@ case "${targ}" in
     targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_le_vec aarch64_pe_le_vec"
     want64=true
     ;;
-  aarch64-*-pe* | aarch64-*-mingw*)
+  aarch64-*-pe* | aarch64-*-mingw* | aarch64-*-windows*)
     targ_defvec=aarch64_pe_le_vec
     targ_selvecs="aarch64_pe_le_vec aarch64_pei_le_vec aarch64_pe_bigobj_le_vec aarch64_elf64_le_vec aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec pdb_vec"
     want64=true
@@ -634,7 +634,7 @@ case "${targ}" in
     # FIXME: This should eventually be checked at runtime.
     targ_cflags=-DSTRICT_PE_FORMAT
     ;;
-  i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
+  i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe | i[3-7]86-*-windows*)
     targ_defvec=i386_pe_vec
     targ_selvecs="i386_pe_vec i386_pe_big_vec i386_pei_vec i386_elf32_vec pdb_vec"
     targ_underscore=yes
@@ -1361,7 +1361,7 @@ case "${targ}" in
     targ_selvecs="i386_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
     want64=true
     ;;
-  x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
+  x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin | x86_64-*-windows*)
     targ_defvec=x86_64_pe_vec
     targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_big_vec x86_64_elf64_vec i386_pe_vec i386_pe_big_vec i386_pei_vec i386_elf32_vec pdb_vec"
     want64=true

base-commit: 490469846dcef89fe53668bdbba73591c64bed61
-- 
2.54.0



More information about the Binutils mailing list