Skip to content

--target argument breaks with LLVM style triples #493

@mati865

Description

@mati865

Consider this demonstration (tested inside ubuntu:22.04 container from Rust build system, not that it should matter):

$ touch a.c

$ /usr/local/bin/aarch64-w64-mingw32-gcc a.c -###  2>&1 | tail -1
 "/usr/local/bin/ld.lld" "-m" "arm64pe" "-Bdynamic" "-o" "a.exe" "/usr/local/aarch64-w64-mingw32/lib/crt2.o" "/usr/local/aarch64-w64-mingw32/lib/crtbegin.o" "-L/usr/local/aarch64-w64-mingw32/lib" "-L/usr/local/aarch64-w64-mingw32/mingw/lib" "-L/usr/local/lib/clang/20/lib/windows" "/tmp/a-253b57.o" "-lmingw32" "/usr/local/lib/clang/20/lib/windows/libclang_rt.builtins-aarch64.a" "-lunwind" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32" "-lshell32" "-luser32" "-lkernel32" "-lmingw32" "/usr/local/lib/clang/20/lib/windows/libclang_rt.builtins-aarch64.a" "-lunwind" "-lmoldname" "-lmingwex" "-lmsvcrt" "-lkernel32" "/usr/local/aarch64-w64-mingw32/lib/crtend.o"

$ /usr/local/bin/aarch64-w64-mingw32-gcc a.c -### --target=aarch64-w64-mingw32 2>&1 | tail -1
 "/usr/local/bin/ld.lld" "-m" "arm64pe" "-Bdynamic" "-o" "a.exe" "/usr/local/aarch64-w64-mingw32/lib/crt2.o" "/usr/local/aarch64-w64-mingw32/lib/crtbegin.o" "-L/usr/local/aarch64-w64-mingw32/lib" "-L/usr/local/aarch64-w64-mingw32/mingw/lib" "-L/usr/local/lib/clang/20/lib/windows" "/tmp/a-ce15a9.o" "-lmingw32" "/usr/local/lib/clang/20/lib/windows/libclang_rt.builtins-aarch64.a" "-lunwind" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32" "-lshell32" "-luser32" "-lkernel32" "-lmingw32" "/usr/local/lib/clang/20/lib/windows/libclang_rt.builtins-aarch64.a" "-lunwind" "-lmoldname" "-lmingwex" "-lmsvcrt" "-lkernel32" "/usr/local/aarch64-w64-mingw32/lib/crtend.o"

$ /usr/local/bin/aarch64-w64-mingw32-gcc a.c -### --target=aarch64-pc-windows-gnu 2>&1 | tail -1
 "/usr/bin/ld" "-m" "arm64pe" "-Bdynamic" "-o" "a.exe" "/usr/local/aarch64-w64-mingw32/lib/crt2.o" "/usr/local/aarch64-w64-mingw32/lib/crtbegin.o" "-L/usr/local/aarch64-w64-mingw32/lib" "-L/usr/local/aarch64-w64-mingw32/mingw/lib" "-L/usr/local/lib/clang/20/lib/windows" "/tmp/a-2a1238.o" "-lmingw32" "-lgcc" "-lgcc_eh" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32" "-lshell32" "-luser32" "-lkernel32" "-lmingw32" "-lgcc" "-lgcc_eh" "-lmoldname" "-lmingwex" "-lmsvcrt" "-lkernel32" "/usr/local/aarch64-w64-mingw32/lib/crtend.o"

--target=aarch64-pc-windows-gnu made Clang fallback to the host linker, the same happens for x86_64.

llvm-mingw version: llvm-mingw-20250417-ucrt-ubuntu-22.04-x86_64.tar.xz

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions