Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCons: Fix clang-cl link/ar flags #96813

Merged
merged 1 commit into from
Sep 23, 2024

Conversation

Repiteo
Copy link
Contributor

@Repiteo Repiteo commented Sep 10, 2024

While testing LTO in a clang-cl environment for the above PR, I realized that the link flags were incorrectly setup:

lto=thin

[100%] Linking Program bin\godot.windows.editor.dev.x86_64.llvm.exe ...
lld-link: warning: ignoring unknown argument '-flto=thin'

lto=full

[100%] Linking Program bin\godot.windows.editor.dev.x86_64.llvm.exe ...
lld-link: warning: ignoring unknown argument '-flto'

This was fixed by changing the arguments to MSVC syntax, as both the linker & AR tools accept the MSVC values.

@Repiteo Repiteo added this to the 4.4 milestone Sep 10, 2024
@Repiteo Repiteo requested a review from a team September 10, 2024 19:03
@Repiteo Repiteo requested a review from a team as a code owner September 10, 2024 19:03
@akien-mga
Copy link
Member

akien-mga commented Sep 10, 2024

If using -flto=thin as compile flag, does it still actually perform a "thin" LTO with /LTCG as link flag?

@Repiteo
Copy link
Contributor Author

Repiteo commented Sep 10, 2024

It seems like it does. I'm truthfully not entirely sure what passing those arguments does, beyond that they're accepted as arguments. Excluding those link/ar flags entirely gives comprable buildtimes & identical filesizes.

Incidentally, here's the outputs from said builds:

release:
  lto=none:
    time: 04:09.81
    exe: 58,270,720
    console.exe: 304,640
  lto=thin:
    time: 04:46.66
    exe: 68,056,064
    console.exe: 304,640
debug:
  lto=none:
    time: 04:12.88
    exe: 73,480,704
    console.exe: 308,224
  lto=thin:
    time: 05:03.34
    exe: 86,334,976
    console.exe: 308,224

@akien-mga
Copy link
Member

Could you check lto=full too? I was mostly concerned to see if there properly is a difference between thin and full or if /LTCG just makes it use MSVC's default "full" LTO (it doesn't have a "thin" LTO like LLVM).

@Repiteo
Copy link
Contributor Author

Repiteo commented Sep 11, 2024

lto=full with clang-cl is out of the question. Tried on both this PR and master; both times it resulted in hanging & ultimately failure:

scons target=template_release production=yes use_llvm=yes lto=full

This PR
[100%] Linking Program bin\godot.windows.template_release.x86_64.llvm.exe ...
[100%] LLVM ERROR: Associative COMDAT symbol '?tls_data@?$SafeBinaryMutex@$00@@0UTLSData@1@A' does not exist.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: lld-link /nologo /ENTRY:mainCRTStartup /SUBSYSTEM:WINDOWS /INCREMENTAL:NO winmm.lib dsound.lib kernel32.lib ole32.lib oleaut32.lib sapi.lib user32.lib gdi32.lib IPHLPAPI.lib Shlwapi.lib wsock32.lib Ws2_32.lib shell32.lib advapi32.lib dinput8.lib dxguid.lib imm32.lib bcrypt.lib Crypt32.lib Avrt.lib dwmapi.lib dwrite.lib wbemuuid.lib ntdll.lib clang_rt.builtins-x86_64.lib /LTCG:STATUS /NATVIS:platform\\windows\\godot.natvis /STACK:8388608 /DEBUG:NONE /OPT:REF psapi.lib /OUT:bin\\godot.windows.template_release.x86_64.llvm.exe main\\main.windows.template_release.x86_64.llvm.lib modules\\modules.windows.template_release.x86_64.llvm.lib modules\\module_ktx.windows.template_release.x86_64.llvm.lib modules\\module_msdfgen.windows.template_release.x86_64.llvm.lib modules\\module_theora.windows.template_release.x86_64.llvm.lib modules\\module_vorbis.windows.template_release.x86_64.llvm.lib modules\\module_basis_universal.windows.template_release.x86_64.llvm.lib modules\\module_bmp.windows.template_release.x86_64.llvm.lib modules\\module_camera.windows.template_release.x86_64.llvm.lib modules\\module_csg.windows.template_release.x86_64.llvm.lib modules\\module_dds.windows.template_release.x86_64.llvm.lib modules\\module_enet.windows.template_release.x86_64.llvm.lib modules\\module_fbx.windows.template_release.x86_64.llvm.lib modules\\module_freetype.windows.template_release.x86_64.llvm.lib modules\\module_gdscript.windows.template_release.x86_64.llvm.lib modules\\module_glslang.windows.template_release.x86_64.llvm.lib modules\\module_gltf.windows.template_release.x86_64.llvm.lib modules\\module_gridmap.windows.template_release.x86_64.llvm.lib modules\\module_hdr.windows.template_release.x86_64.llvm.lib modules\\module_interactive_music.windows.template_release.x86_64.llvm.lib modules\\module_jpg.windows.template_release.x86_64.llvm.lib modules\\module_jsonrpc.windows.template_release.x86_64.llvm.lib modules\\module_mbedtls.windows.template_release.x86_64.llvm.lib modules\\module_meshoptimizer.windows.template_release.x86_64.llvm.lib modules\\module_minimp3.windows.template_release.x86_64.llvm.lib modules\\module_mobile_vr.windows.template_release.x86_64.llvm.lib modules\\module_multiplayer.windows.template_release.x86_64.llvm.lib modules\\module_navigation.windows.template_release.x86_64.llvm.lib modules\\module_noise.windows.template_release.x86_64.llvm.lib modules\\module_ogg.windows.template_release.x86_64.llvm.lib modules\\module_openxr.windows.template_release.x86_64.llvm.lib modules\\module_raycast.windows.template_release.x86_64.llvm.lib modules\\module_regex.windows.template_release.x86_64.llvm.lib modules\\module_squish.windows.template_release.x86_64.llvm.lib modules\\module_svg.windows.template_release.x86_64.llvm.lib modules\\module_text_server_adv.windows.template_release.x86_64.llvm.lib modules\\module_tga.windows.template_release.x86_64.llvm.lib modules\\module_upnp.windows.template_release.x86_64.llvm.lib modules\\module_vhacd.windows.template_release.x86_64.llvm.lib modules\\module_webp.windows.template_release.x86_64.llvm.lib modules\\module_webrtc.windows.template_release.x86_64.llvm.lib modules\\module_websocket.windows.template_release.x86_64.llvm.lib modules\\module_webxr.windows.template_release.x86_64.llvm.lib modules\\module_zip.windows.template_release.x86_64.llvm.lib platform\\platform.windows.template_release.x86_64.llvm.lib drivers\\drivers.windows.template_release.x86_64.llvm.lib scene\\scene.windows.template_release.x86_64.llvm.lib servers\\servers.windows.template_release.x86_64.llvm.lib core\\core.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\harfbuzz_builtin.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\graphite_builtin.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\icu_builtin.windows.template_release.x86_64.llvm.lib modules\\freetype\\freetype_builtin.windows.template_release.x86_64.llvm.lib modules\\msdfgen\\msdfgen_builtin.windows.template_release.x86_64.llvm.lib platform\\windows\\godot_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\os_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\display_server_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\key_mapping_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\joypad_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\tts_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\windows_terminal_logger.windows.template_release.x86_64.llvm.obj platform\\windows\\windows_utils.windows.template_release.x86_64.llvm.obj platform\\windows\\native_menu_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\gl_manager_windows_native.windows.template_release.x86_64.llvm.obj platform\\windows\\gl_manager_windows_angle.windows.template_release.x86_64.llvm.obj platform\\windows\\wgl_detect_version.windows.template_release.x86_64.llvm.obj platform\\windows\\rendering_context_driver_vulkan_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\crash_handler_windows_seh.windows.template_release.x86_64.llvm.obj platform\\windows\\godot_res.windows.template_release.x86_64.llvm.obj
Exception Code: 0xC000001D
 #0 0x00007ff7778a5096 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa5096 (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe+0xa5096)
 #1 0x00007ff7778a5096
 #2 0x00007ff7778a5096 (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe+0xa5096) 
 #3 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa8a43 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x903f16
 #4 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x903d0f C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x11e0769
 #5 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x11e7bd7 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa22601
 #6 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa1cc21 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x788336
 #7 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x7870b0 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2702cf
 #8 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x26fa0d C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x5b8d3e
 #9 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2620c3 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x30303
#10 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x289cc C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x28399
#11 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x13ab C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x1ad4
#12 0x00007ff8cf8fe6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2c73654 (C:\WINDOWS\System32\ucrtbase.dll+0x7e6d5)
#13 0x00007ff8cf8fe6d5
#14 0x00007ff8cf8fe6d5 (C:\WINDOWS\System32\ucrtbase.dll+0x7e6d5)
0x00007FF7778A5096, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0xA5096 byte(s)
0x00007FF8CF8FE6D5, C:\WINDOWS\System32\ucrtbase.dll(0x00007FF8CF880000) + 0x7E6D5 byte(s), raise() + 0x1E5 byte(s)
0x00007FF8CF8FF6E1, C:\WINDOWS\System32\ucrtbase.dll(0x00007FF8CF880000) + 0x7F6E1 byte(s), abort() + 0x31 byte(s)
0x00007FF7778A8A43, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0xA8A43 byte(s)
0x00007FF778103F16, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x903F16 byte(s)
0x00007FF778103D0F, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x903D0F byte(s)
0x00007FF7789E0769, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x11E0769 byte(s)
0x00007FF7789E7BD7, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x11E7BD7 byte(s)
0x00007FF778222601, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0xA22601 byte(s)
0x00007FF77821CC21, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0xA1CC21 byte(s)
0x00007FF777F88336, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x788336 byte(s)
0x00007FF777F870B0, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x7870B0 byte(s)
0x00007FF777A702CF, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x2702CF byte(s)
0x00007FF777A6FA0D, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x26FA0D byte(s)
0x00007FF777DB8D3E, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x5B8D3E byte(s)
0x00007FF777A620C3, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x2620C3 byte(s)
0x00007FF777830303, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x30303 byte(s)
0x00007FF7778289CC, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x289CC byte(s)
0x00007FF777828399, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x28399 byte(s)
0x00007FF7778013AB, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x13AB byte(s)
0x00007FF777801AD4, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x1AD4 byte(s)
0x00007FF77A473654, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF777800000) + 0x2C73654 byte(s), xmlLinkGetData() + 0x214 byte(s)
0x00007FF8D049257D, C:\WINDOWS\System32\KERNEL32.DLL(0x00007FF8D0480000) + 0x1257D byte(s), BaseThreadInitThunk() + 0x1D byte(s)
0x00007FF8D1CCAF28, C:\WINDOWS\SYSTEM32\ntdll.dll(0x00007FF8D1C70000) + 0x5AF28 byte(s), RtlUserThreadStart() + 0x28 byte(s)
scons: *** [bin\godot.windows.template_release.x86_64.llvm.exe] Error 3221225501
scons: building terminated because of errors.
[Time elapsed: 00:20:42.69]
master
[100%] Linking Program bin\godot.windows.template_release.x86_64.llvm.exe ...
lld-link: warning: ignoring unknown argument '-flto'
LLVM ERROR: Associative COMDAT symbol '?tls_data@?$SafeBinaryMutex@$00@@0UTLSData@1@A' does not exist.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.      
Stack dump:
0.      Program arguments: lld-link /nologo /ENTRY:mainCRTStartup /SUBSYSTEM:WINDOWS /INCREMENTAL:NO winmm.lib dsound.lib kernel32.lib ole32.lib oleaut32.lib sapi.lib user32.lib gdi32.lib IPHLPAPI.lib Shlwapi.lib wsock32.lib Ws2_32.lib shell32.lib advapi32.lib dinput8.lib dxguid.lib imm32.lib bcrypt.lib Crypt32.lib Avrt.lib dwmapi.lib dwrite.lib wbemuuid.lib ntdll.lib clang_rt.builtins-x86_64.lib -flto /NATVIS:platform\\windows\\godot.natvis /STACK:8388608 /DEBUG:NONE /OPT:REF psapi.lib /OUT:bin\\godot.windows.template_release.x86_64.llvm.exe main\\main.windows.template_release.x86_64.llvm.lib modules\\modules.windows.template_release.x86_64.llvm.lib modules\\module_ktx.windows.template_release.x86_64.llvm.lib modules\\module_msdfgen.windows.template_release.x86_64.llvm.lib modules\\module_theora.windows.template_release.x86_64.llvm.lib modules\\module_vorbis.windows.template_release.x86_64.llvm.lib modules\\module_basis_universal.windows.template_release.x86_64.llvm.lib modules\\module_bmp.windows.template_release.x86_64.llvm.lib modules\\module_camera.windows.template_release.x86_64.llvm.lib modules\\module_csg.windows.template_release.x86_64.llvm.lib modules\\module_dds.windows.template_release.x86_64.llvm.lib modules\\module_enet.windows.template_release.x86_64.llvm.lib modules\\module_fbx.windows.template_release.x86_64.llvm.lib modules\\module_freetype.windows.template_release.x86_64.llvm.lib modules\\module_gdscript.windows.template_release.x86_64.llvm.lib modules\\module_glslang.windows.template_release.x86_64.llvm.lib modules\\module_gltf.windows.template_release.x86_64.llvm.lib modules\\module_gridmap.windows.template_release.x86_64.llvm.lib modules\\module_hdr.windows.template_release.x86_64.llvm.lib modules\\module_interactive_music.windows.template_release.x86_64.llvm.lib modules\\module_jpg.windows.template_release.x86_64.llvm.lib modules\\module_jsonrpc.windows.template_release.x86_64.llvm.lib modules\\module_mbedtls.windows.template_release.x86_64.llvm.lib modules\\module_meshoptimizer.windows.template_release.x86_64.llvm.lib modules\\module_minimp3.windows.template_release.x86_64.llvm.lib modules\\module_mobile_vr.windows.template_release.x86_64.llvm.lib modules\\module_multiplayer.windows.template_release.x86_64.llvm.lib modules\\module_navigation.windows.template_release.x86_64.llvm.lib modules\\module_noise.windows.template_release.x86_64.llvm.lib modules\\module_ogg.windows.template_release.x86_64.llvm.lib modules\\module_openxr.windows.template_release.x86_64.llvm.lib modules\\module_raycast.windows.template_release.x86_64.llvm.lib modules\\module_regex.windows.template_release.x86_64.llvm.lib modules\\module_squish.windows.template_release.x86_64.llvm.lib modules\\module_svg.windows.template_release.x86_64.llvm.lib modules\\module_text_server_adv.windows.template_release.x86_64.llvm.lib modules\\module_tga.windows.template_release.x86_64.llvm.lib modules\\module_upnp.windows.template_release.x86_64.llvm.lib modules\\module_vhacd.windows.template_release.x86_64.llvm.lib modules\\module_webp.windows.template_release.x86_64.llvm.lib modules\\module_webrtc.windows.template_release.x86_64.llvm.lib modules\\module_websocket.windows.template_release.x86_64.llvm.lib modules\\module_webxr.windows.template_release.x86_64.llvm.lib modules\\module_zip.windows.template_release.x86_64.llvm.lib platform\\platform.windows.template_release.x86_64.llvm.lib drivers\\drivers.windows.template_release.x86_64.llvm.lib scene\\scene.windows.template_release.x86_64.llvm.lib servers\\servers.windows.template_release.x86_64.llvm.lib core\\core.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\harfbuzz_builtin.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\graphite_builtin.windows.template_release.x86_64.llvm.lib modules\\text_server_adv\\icu_builtin.windows.template_release.x86_64.llvm.lib modules\\freetype\\freetype_builtin.windows.template_release.x86_64.llvm.lib modules\\msdfgen\\msdfgen_builtin.windows.template_release.x86_64.llvm.lib platform\\windows\\godot_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\os_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\display_server_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\key_mapping_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\joypad_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\tts_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\windows_terminal_logger.windows.template_release.x86_64.llvm.obj platform\\windows\\windows_utils.windows.template_release.x86_64.llvm.obj platform\\windows\\native_menu_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\gl_manager_windows_native.windows.template_release.x86_64.llvm.obj platform\\windows\\gl_manager_windows_angle.windows.template_release.x86_64.llvm.obj platform\\windows\\wgl_detect_version.windows.template_release.x86_64.llvm.obj platform\\windows\\rendering_context_driver_vulkan_windows.windows.template_release.x86_64.llvm.obj platform\\windows\\crash_handler_windows_seh.windows.template_release.x86_64.llvm.obj platform\\windows\\godot_res.windows.template_release.x86_64.llvm.obj
Exception Code: 0xC000001D
 #0 0x00007ff706df5096 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa5096 (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe+0xa5096)    
 #1 0x00007ff706df5096
 #2 0x00007ff706df5096 (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe+0xa5096)
 #3 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa8a43 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x903f16     
 #4 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x903d0f C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x11e0769   
 #5 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x11e7bd7 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa22601   
 #6 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0xa1cc21 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x788336    
 #7 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x7870b0 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2702cf    
 #8 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x26fa0d C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x5b8d3e    
 #9 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2620c3 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x30303     
#10 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x289cc C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x28399      
#11 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x13ab C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x1ad4        
#12 0x00007ffa47b4e6d5 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe 0x2c73654 (C:\WINDOWS\System32\ucrtbase.dll+0x7e6d5)
#13 0x00007ffa47b4e6d5
#14 0x00007ffa47b4e6d5 (C:\WINDOWS\System32\ucrtbase.dll+0x7e6d5)
0x00007FF706DF5096, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0xA5096 byte(s)
0x00007FFA47B4E6D5, C:\WINDOWS\System32\ucrtbase.dll(0x00007FFA47AD0000) + 0x7E6D5 byte(s), raise() + 0x1E5 byte(s)
0x00007FFA47B4F6E1, C:\WINDOWS\System32\ucrtbase.dll(0x00007FFA47AD0000) + 0x7F6E1 byte(s), abort() + 0x31 byte(s)
0x00007FF706DF8A43, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0xA8A43 byte(s)
0x00007FF707653F16, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x903F16 byte(s)
0x00007FF707653D0F, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x903D0F byte(s)
0x00007FF707F30769, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x11E0769 byte(s)
0x00007FF707F37BD7, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x11E7BD7 byte(s)
0x00007FF707772601, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0xA22601 byte(s)
0x00007FF70776CC21, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0xA1CC21 byte(s)
0x00007FF7074D8336, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x788336 byte(s)
0x00007FF7074D70B0, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x7870B0 byte(s)
0x00007FF706FC02CF, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x2702CF byte(s)
0x00007FF706FBFA0D, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x26FA0D byte(s)
0x00007FF707308D3E, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x5B8D3E byte(s)
0x00007FF706FB20C3, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x2620C3 byte(s)
0x00007FF706D80303, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x30303 byte(s)
0x00007FF706D789CC, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x289CC byte(s)
0x00007FF706D78399, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x28399 byte(s)
0x00007FF706D513AB, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x13AB byte(s)
0x00007FF706D51AD4, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x1AD4 byte(s)
0x00007FF7099C3654, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\lld-link.exe(0x00007FF706D50000) + 0x2C73654 byte(s), xmlLinkGetData() + 0x214 byte(s)
0x00007FFA4920257D, C:\WINDOWS\System32\KERNEL32.DLL(0x00007FFA491F0000) + 0x1257D byte(s), BaseThreadInitThunk() + 0x1D byte(s)
0x00007FFA4A80AF28, C:\WINDOWS\SYSTEM32\ntdll.dll(0x00007FFA4A7B0000) + 0x5AF28 byte(s), RtlUserThreadStart() + 0x28 byte(s)
scons: *** [bin\godot.windows.template_release.x86_64.llvm.exe] Error 3221225501
scons: building terminated because of errors.
[Time elapsed: 00:20:24.52]

@akien-mga
Copy link
Member

Oof. Then maybe we should prevent using lto=full with clang-cl, with a comment explaining it doesn't seem to be properly supported yet. And either bail out, or fall back to lto=thin?

@akien-mga
Copy link
Member

Note that:

LLVM ERROR: Associative COMDAT symbol '?tls_data@?$SafeBinaryMutex@$00@@0UTLSData@1@A' does not exist.

may be a sign of mixing object files compiled with different settings.

Did you try a scratch build with lto=full or tried it on top of a previous no-LTO or lto=thin build? Confirming how it behaves with a build from scratch might be good if you want to waste another 30 min waiting for the linker :P

@Repiteo
Copy link
Contributor Author

Repiteo commented Sep 11, 2024

I tried a from-scratch build, though it's possible that some lingering remnants stuck around somewhere. It's something I'll dig into later, as it's an insane timesink to even attempt to debug

@akien-mga
Copy link
Member

Yeah and honestly, given current findings on LLVM "full" LTO, I'd be tempted to say we might not even want to offer it as an option. Maybe we should just have lto=yes and that uses normal LTO on GCC and ThinLTO on LLVM. But we need to complete the evaluation of the impact of different flags in #96851 first.

@akien-mga akien-mga merged commit 648b21b into godotengine:master Sep 23, 2024
20 checks passed
@akien-mga
Copy link
Member

Thanks!

@Repiteo Repiteo deleted the scons/fix-clang-cl-flags branch September 23, 2024 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants