RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64
Erik Joelsson
erikj at openjdk.org
Fri Aug 15 14:30:10 UTC 2025
On Thu, 14 Aug 2025 23:59:23 GMT, Saint Wesonga <duke at openjdk.org> wrote:
> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64.
>
> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it).
make/autoconf/toolchain.m4 line 668:
> 666: # otherwise, the assembler is "ml.exe"
> 667: UTIL_LOOKUP_TOOLCHAIN_PROGS(AS, ml)
> 668: fi
I think this would be more readable as an `elif` with all the cases on the same level rather than nesting the second if/else inside the else block.
make/common/native/CompileFile.gmk line 239:
> 237: $$(call ExecuteWithLog, $$@, $$(call MakeCommandRelative, \
> 238: $$($1_COMPILER) $$($1_FLAGS) \
> 239: $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE))) \
Have you verified that removing `-Ta` works for the x86 assembler?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279092729
PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279090903
More information about the build-dev
mailing list