[llvm-dev] Invoking lld for PE/COFF (Windows) linking

Edward Diener via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 31 13:07:02 PDT 2017


On 3/30/2017 9:03 PM, Reid Kleckner via llvm-dev wrote:
> On Thu, Mar 30, 2017 at 5:57 PM, Edward Diener via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     Actually just doing:
>
>     clang++ -c t.cpp -o t.o --target=x86_64-windows-msvc -fmsc-version=1900
>     clang++ t.o -o t.exe --target=x86_64-windows-msvc -fuse-ld=lld
>
>     is not working for me. The first invocation works but the second
>     just hangs and never completes. Should it work ? If not, how can I
>     invoke the second to make it work properly ?
>
>
> Is it actually running lld-link.exe?  Does lld-link.exe exist next to
> clang++.exe? If you add -###, what linker command line is clang trying
> to run?

"C:/Programming/VersionControl/bninja_installed_clang/bin/clang++" -o 
"C:\Programming\VersionControl\modular-boost\build\boost\bin.v2\libs\preprocessor\test\config_info.test\clang-linux-5.0cl\debug\address-model-32\config_info.exe" 
-Wl,--start-group 
"C:\Programming\VersionControl\modular-boost\build\boost\bin.v2\libs\preprocessor\test\config_info.test\clang-linux-5.0cl\debug\address-model-32\config_info.obj" 
  -Wl,-Bstatic  -Wl,-Bdynamic  -Wl,--end-group -g 
--target=i686-pc-windows-msvc -### -fuse-ld=lld

clang version 5.0.0 (trunk 298890)
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Programming\VersionControl\bninja_installed_clang\bin

"C:\\Programming\\VersionControl\\bninja_installed_clang\\bin\\lld-link.exe" 
"-out:C:\\Programming\\VersionControl\\modular-boost\\build\\boost\\bin.v2\\libs\\preprocessor\\test\\config_info.test\\clang-linux-5.0cl\\debug\\address-model-32\\config_info.exe" 
"-defaultlib:libcmt" "-libpath:C:\\Program Files (x86)\\Microsoft Visual 
Studio 14.0\\VC\\lib" "-libpath:C:\\Program Files (x86)\\Windows 
Kits\\10\\Lib\\10.0.14393.0\\ucrt\\x86" "-libpath:C:\\Program Files 
(x86)\\Windows Kits\\10\\Lib\\10.0.14393.0\\um\\x86" "-nologo" "-debug" 
"--start-group" 
"C:\\Programming\\VersionControl\\modular-boost\\build\\boost\\bin.v2\\libs\\preprocessor\\test\\config_info.test\\clang-linux-5.0cl\\de

When I actually try to run the lld-link command as:

C:\Programming\VersionControl\bninja_installed_clang\bin\lld-link.exe 
-out:C:\Programming\VersionControl\modular-boost\build\boost\bin.v2\libs\preprocessor\test\config_info.test\clang-linux-5.0cl\debug\address-model-32\config_info.exe 
-defaultlib:libcmt "-libpath:C:\Program Files (x86)\Microsoft Visual 
Studio 14.0\VC\lib" "-libpath:C:\Program Files (x86)\Windows 
Kits\10\Lib\10.0.14393.0\ucrt\x86" "-libpath:C:\Program Files 
(x86)\Windows Kits\10\Lib\10.0.14393.0\um\x86" -nologo -debug 
--start-group 
C:\Programming\VersionControl\modular-boost\build\boost\bin.v2\libs\preprocessor\test\config_info.test\clang-linux-5.0cl\debug\address-model-32\config_info.obj 
-Bstatic -Bdynamic --end-group

I get for output in a Windows command window:

C:\Programming\VersionControl\bninja_installed_clang\bin\lld-link.exe: 
warning:
ignoring unknown argument: --start-group
C:\Programming\VersionControl\bninja_installed_clang\bin\lld-link.exe: 
warning:
ignoring unknown argument: -Bstatic
C:\Programming\VersionControl\bninja_installed_clang\bin\lld-link.exe: 
warning:
ignoring unknown argument: -Bdynamic
C:\Programming\VersionControl\bninja_installed_clang\bin\lld-link.exe: 
warning:
ignoring unknown argument: --end-group

and then nothing further and lld_link.exe just hangs and never 
completes. So it looks to me that lld_link, in it effort to link PE/COFF 
(Windows) files created by clang++ targeting VC++, has some sort of bug.



More information about the llvm-dev mailing list