hamzasood added a comment.

In https://reviews.llvm.org/D30991#702965, @thakis wrote:

> When you say "cross-compiling", you mean targeting Windows while running on 
> non-Windows, right? How do dlls get loaded there at all?
>
> Also, when does clang invoke link.exe? Normally on Windows the linker is 
> invoked directly, no through the compiler driver. Are you using clang.exe 
> instead of clang-cl.exe?


Sorry, I should have been more specific. @zturner is correct, I meant using an 
x64 link.exe to build for x86 (or vice-versa).

The new 2017 toolchains are split up by host architecture and target 
architecture:
HostX64/x64. Native compilation. Compile for x64 on an x64 host.
HostX64/x86. Cross-compilation. Compile for x86 on an x64 host.
HostX86/x64. Cross-compilation. Compile for x64 on an x86 host
HostX86/x86. Native compilation. Compile for x86 on an x86 host.

The cross compiling toolchains (HostX64/x86, HostX86/x64) are incomplete as 
they rely on components containing in the corresponding native toolchains (e.g. 
HostX64/x86 uses components from HostX64/x64).
You can see this in the vcvars bat scripts supplied with Visual Studio. They 
setup %PATH% in the same way when cross-compiling.
mspdbcore.dll is an example of something missing from the cross-compiling 
toolchains. There are probably others but I didn't check.


https://reviews.llvm.org/D30991



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to