> On 10. Feb 2026, at 21:45, Pierrick Bouvier <[email protected]> > wrote: > > On 2/10/26 12:04 AM, Mohamed Mediouni wrote: >>> On 10. Feb 2026, at 07:39, Pierrick Bouvier <[email protected]> >>> wrote: >>> >>> On 2/9/26 8:07 PM, Mohamed Mediouni wrote: >>>> llvm-dlltool assumes that it's by default targeting the host architecture >>>> it's running on. That assumption doesn't hold true when cross-compiling. >>>> Signed-off-by: Mohamed Mediouni <[email protected]> >>>> --- >>>> plugins/meson.build | 9 ++++++++- >>>> 1 file changed, 8 insertions(+), 1 deletion(-) >>>> diff --git a/plugins/meson.build b/plugins/meson.build >>>> index 34643e2cea..9899f166ee 100644 >>>> --- a/plugins/meson.build >>>> +++ b/plugins/meson.build >>>> @@ -41,9 +41,16 @@ if host_os == 'windows' >>>> # to find missing symbols in current program. >>>> win32_qemu_plugin_api_link_flags = ['-Lplugins', '-lqemu_plugin_api'] >>>> if meson.get_compiler('c').get_id() == 'clang' >>>> + if host_machine.cpu() == 'x86_64' >>>> + dlltool_target = 'i386:x86-64' >>>> + elif host_machine.cpu() == 'aarch64' >>>> + dlltool_target = 'arm64' >>>> + else >>>> + error('Unknown machine') >>>> + endif >>>> # With LLVM/lld, delaylib is specified at link time (-delayload) >>>> dlltool = find_program('llvm-dlltool', required: true) >>>> - dlltool_cmd = [dlltool, '-d', '@INPUT@', '-l', '@OUTPUT@', '-D', >>>> 'qemu.exe'] >>>> + dlltool_cmd = [dlltool, '-m', dlltool_target,'-d', '@INPUT@', '- l', >>>> '@OUTPUT@', '-D', 'qemu.exe'] >>>> win32_qemu_plugin_api_link_flags += ['-Wl,-delayload=qemu.exe'] >>>> else >>>> # With gcc/ld, delay lib is built with a specific delay parameter. >>> >>> Interesting, on which setup did you find this? >>> >>> Regards, >>> Pierrick >> Hello, >> Was found on my macOS arm64 laptop w/ using llvm-mingw and an MXE fork to >> build all the libs QEMU needed. >> Cross-compiled for arm64 Windows initially from there, and came across this >> when targeting x86_64 from that setup. > > Ok thanks. > When I cross compiled windows-arm64 -> windows-x86_64, I don't remember > having to set it. That said, it does not hurt anyway, and everything still > builds fine natively with it. > Hi,
Looking at msys2, that uses a separate toolchain copy for each architecture (at /clangarm64 and others) configured to target a single arch. And with separate toolchain packages per architecture to correspond to that. llvm-mingw (at https://github.com/mstorsjo/llvm-mingw) uses a single toolset copy for all the target architectures instead, with platform-specific headers and libraries in a per-arch triplet folder. > Reviewed-by: Pierrick Bouvier <[email protected]> > Tested-by: Pierrick Bouvier <[email protected]> > > Regards, > Pierrick >
