GNU Toolchain for Windows on Arm

Motivation

The GNU toolchain is the only major C/C++ toolchain not to support targeting Windows on ARM64. Clang/LLVM and MSVC already have support.

Many downstream open-source toolchains; such as MSYS2, MINGW and Cygwin, expressed interested in supporting WoARM64 if GCC was available.

Status

Multiple patches have been up-streamed to binutils already. The patches add backend support to the GNU toolchain. The target architecture is called aarch64-pe. This enables the linker, assembler and related tools to target WoARM64.

Next steps will be to:

  • Extend support in binutils (SEH and TLS are still missing)

  • Add support to the compiler (GCC) 

Compiling

Binutils can be built using and autotools compatible environment including WSL and MSYS2. For example:

git clone git://sourceware.org/git/binutils-gdb.git makedir build cd build ../binutils-gdb/configure --target=aarch64-pe make -j8

 There is some more information about building it here.
https://github.com/Windows-on-ARM-Experiments/research

Running

The build above will produce the assembler and other components. For example, to assemble a file:

..\gas\as-new con-app-aarch64.s -o con-app-aarch64.o