Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

Code Block
languagebash
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