- User Since
- Nov 13 2016, 5:55 AM (358 w, 2 d)
Tue, Sep 12
If you use windows-gnu triples Rust will link libgcc_s or libgcc_eh directly unless you modify it's source not to do it: https://github.com/rust-lang/rust/blob/e5fedceabf4e0564231db592b6d1f35e1ca27908/compiler/rustc_target/src/spec/windows_gnu_base.rs#L64
Rust doesn't use LLVM's libunwind for mingw-w64, it relies on libgcc.
Fri, Sep 1
So no regression, but for this usecase we placed that particular user of the tool in a tricky spot
I don't have any experience with --use-temp-file so I'll trust your judgement.
Let's get this regression fixed but I'm also curious about the plan for future `--preprocessor changes.
Tue, Aug 29
Aug 24 2023
Aug 22 2023
Jul 23 2023
If we make the flag imply linker options, then it becomes much clearer to spot the error, if you enabled this but the code base still would need autoimports somewhere. (This has happened - see https://code.videolan.org/videolan/dav1d/-/merge_requests/1303#note_301859, https://code.videolan.org/videolan/dav1d/-/merge_requests/1349 and https://code.videolan.org/videolan/dav1d/-/merge_requests/1361.) If we make the flag only affect code generation, it becomes a more clear match for projects using -mcmodel=small with GCC today.
Jul 10 2023
I'm in favor of the warning. I don't know LLVM process for adding new errors for code that was previously accepted (even if wrongly) but IMO new errors should be introduced in a way that doesn't surprisingly break downstreams.
So I'd be okay if this becomes a warning in next release (N) and an error/hard error (don't think LLD threats them differently though) in release N+1 or N+2.
Jun 7 2023
May 6 2023
Apr 24 2023
Mar 25 2023
Oh, that's unfortunate.
Maybe llvm-windres should generate a warning in such case?
Feb 20 2023
Should that even be considered as supported?
Feb 16 2023
Jan 13 2023
I cannot speak much about LLVM tests but the code looks good for me.
Jan 12 2023
Jan 8 2023
I had thought we do that already so this change looks reasonable for me.
Just one thought, do we support multilib toolchains? I think in that case Clang would have to add <base>/include despite different triple.
Nov 25 2022
Oct 27 2022
Thanks, appears to fix unwinding. There are other issues preventing successful compilation but they are seem unrelated.
Oct 11 2022
It's unfortunate that MSVC doesn't distinguish static from import libs by extension but we have to adjust.
Sep 20 2022
Sep 19 2022
Sep 18 2022
Aug 25 2022
Aug 22 2022
Unfortunately I lack a lot of context here so cannot tell if there are alternative solutions.
How expensive (in terms of performance) is calling updateLinkLoop that many times?
Aug 19 2022
Aug 11 2022
Thanks, confirmed the built compiler still works (bootstrapped it twice with itself) and with all architectures enabled we are at 35289 exported symbols.
Aug 10 2022
I don't know about LLVM policy for such potentially disruptive change but regardless of what is decided here MSYS2 will almost surely backport this change, otherwise there is no way to provide shared libraries.
On the other hand even if it landed earlier it probably wouldn't have received a lot of testing anyway.
Aug 9 2022
Jul 28 2022
As the patches to LLD would be landed before, that's probably fine as long as a user doesn't update Clang without updating LLD.
Sorry, haven't noticed the approval was reset.
Jul 21 2022
Jul 20 2022
I'm a little bit concerned this could break some projects in the wild but for projects that use it properly this sounds like huge win (as your LLVM results show).
Even though the changes are small I not sure if approval from an outsider (me) should suffice here.
LGTM with minor question.
Jun 10 2022
May 30 2022
Confirmed today it solves the problem.
May 18 2022
Thank you! It will surely make building easier.
Mar 2 2022
Rebuilt Rust with this patch applied to host LLVM and it still works after stripping binaries and libraries.
Feb 10 2022
Jan 27 2022
Looking at Rust's fix over https://github.com/rust-lang/rust/commit/4f0ad1c92ca08da6e8dc17838070975762f59714 seems like there is API added in Windows 10 to solve it (I don't know how effective though).
I'm not going to work on this myself but leaving the link in case somebody else wants to give it a try.
Jan 3 2022
Jan 2 2022
There was similar differential recently: https://reviews.llvm.org/D112093
Oct 20 2021
I never had to dig into subsystem versions and what do the mean but looking at subsystem docs 4.0 stands for kernel mode drivers which looks wrong to me. They also specify 5.01 as 32-bit, 5.02 as 64-bit and 6.0 as being either 32-bit or 64-bit.
Oct 2 2021
Agree, we should promote using working and tested configuration.
Even if pthread build works it's probably affected by threading issues when built with GCC.
Aug 4 2021
Aug 2 2021
Aug 1 2021
From a quick look at the options listing, I presume most other cases of S<> and J<…=> should be changed into Eq<> too.
Jul 23 2021
Building only X86 target did the trick and it looks good:
$ ls bin/ | rg libLLVM.*dll libLLVM-13git.dll
Jul 21 2021
I had no internet during the weekend (massive storms over here) but so I returned to it yesterday.
I'm unable to build clean main branch at the moment:
` [2972/3064] Linking CXX shared library bin\libLLVM.dll FAILED: bin/libLLVM.dll lib/libLLVM.dll.a cmd.exe /C "cd . && D:\msys64\clang64\bin\c++.exe -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -ffunction-sections -fdata-sections -O3 -DNDEBUG -Wl,--gc-sections -shared -o bin\libLLVM.dll -Wl,--out-implib,lib\libLLVM.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\LLVM.rsp && cd ." lld-link: error: too many exported symbols (max 65535) `
It's simple change though, should I update diff without testing?
LGTM sorry for the delay.
Jul 16 2021
Jul 4 2021
Jul 3 2021
Jun 26 2021
LGTM once D104530 is merged.
Jun 14 2021
Feels a bit like approving myself (which is only partially true) but I don't see any issues with the patch itself.
May 28 2021
Ah, so that explains why everyone sends LGTM text.
I'll try to remember it next time.
May 27 2021
May 22 2021
Wow, I haven't expected that.
May 21 2021
Feels like a heavy hammer to me but guess there is no better option.
FWIW at MSYS2 we build LLVM with both GNU and LLVM toolchains for different "subsystems".
GNU's LLD was deadlocking a lot so we have patched it to use TerminateProcess and it worked around all deadlocks except when running tests (the patch probably needs more work on it), we don't apply it for LLVM's LLD because I thought it's a bit overkill.
May 18 2021
Funny but I've hit this deadlock (LLVM_LINK_LLVM_DYLIB, LLD_DEFAULT_LD_LLD_IS_MINGW and shared libc++) last week in single LLD unit test. It never reproduced despite dozen of LLD testsuite runs.
May 14 2021
When building with ninja, the output is buffered so the warnings appear directly after the specific build target that cause them.
But I don't know if ld.bfd actually implements the -z options for PE targets?
Fix typo and the test
I don't know when they exactly appear but look at my building log: https://reviews.llvm.org/P8263
The build was done with 16 threads so it's hard to tell which objects made it appear.
May 13 2021
Sorry I thought it's simple enough on it's own.
May 11 2021
Apr 30 2021
The change itself looks correct but cannot speak for the test.
Apr 29 2021
If compiling with GCC or linking with ld.bfd, these options have little
Apr 6 2021
I saw https://github.com/msys2/msys2-runtime/issues/36 but I have never worked with MSYS2 runtime internals so you probably know more than I do at this point.
https://github.com/dscho who maintains Git for Windows might have some insights.
Mar 5 2021
It's clear overlook from D79995, that part is perfectly reasonable to me.