pub fn pe_machine(target: TargetTuple) -> Option<&'static str>Expand description
Which machine a PE linker is to write for, in the name -m knows it by.
A different table from emulation and a much shorter one, because PE has four machine types
that matter against ELF’s dozen formats: there is no byte order to spell, since every Windows port
is little endian, and no data model to spell either, since each machine type fixes one.
The names are GNU ld’s PE emulations, which ld.lld accepts in its MinGW mode for exactly this
reason. i386pep is the 64-bit x86 one and i386pe the 32-bit one, and the p that tells them
apart is PE32+ rather than anything about the architecture, which is a piece of 1990s naming that
nothing can be done about now.
None for a Windows target in Microsoft’s ABI, which is not a gap. These names are GNU ld’s
and lld-link has never read one: it takes /MACHINE:X64, in an argument syntax where the rest
of the line is different too, so there is nothing for a shared table to hold. ARM64EC is
None for that reason first and for a second one:
spec/cross-compile/09-libc-stubs.md refuses its import libraries as well, because an export in
that ABI is a mangled name and a library written the way the others are written links and then
fails to load.