On Thu, 10 Apr 2025, Jeremy Drake wrote:

> We (@mati865 and I) just managed to get llvm/clang 20.1.2 building and
> targeting Cygwin over at MSYS2, and I was wondering if you had anyone
> interested in these patches to update the package(s) in Cygwin?  I'm not
> particularly interested in taking on more responsibilities, but I guess I
> could take a look at this if nobody else wants to.
>
> MSYS2 package:
> https://github.com/msys2/MSYS2-packages/tree/master/llvm
>
> Note that we wound up punting on LLD support for Cygwin targets: there's
> currently no way to tell the difference in the LLD driver between Cygwin
> and MinGW targets, and trying to adapt to Cygwin broke the ability to use
> that LLD for MinGW cross-compiling.  Given that it was all pretty hacky
> anyway, it seemed better to keep the working MinGW cross-compiling support
> than trade it in for still-somewhat-broken Cygwin support when we can just
> keep using GNU ld for the Cygwin target.
>

I tried building on Cygwin (updating one patch to -pc-cygwin from -pc-msys
when looking for c++ include dirs), and while the initial build succeeded,
rebuilding with clang and dynamic libs fails quickly in llvm-min-tblgen.
I have no idea why this would work on MSYS2 but fail in Cygwin (I tried
with both the stable gcc 12 and 13.3.1 to better match MSYS2's 13.3.0.
Also the 'abort' seems to go away if I build with -DCMAKE_BUILD_TYPE=Debug)

(gdb) bt
#0  0x00007ffdf19b0f34 in ntdll!ZwWaitForMultipleObjects ()
   from /cygdrive/c/Windows/SYSTEM32/ntdll.dll
#1  0x00007ffdeea76479 in WaitForMultipleObjectsEx ()
   from /cygdrive/c/Windows/System32/KERNELBASE.dll
#2  0x00007ffdeea7637e in WaitForMultipleObjects ()
   from /cygdrive/c/Windows/System32/KERNELBASE.dll
#3  0x00007ffda33e688c in cygwait (object=<optimized out>,
    timeout=timeout@entry=0x7ffffc480, mask=mask@entry=32)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/cygwait.cc:79
#4  0x00007ffda345b7d7 in cygwait (mask=32, howlong=60000, h=<optimized out>)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/local_includes/cygwait.h:45
#5  sig_send (p=<optimized out>, p@entry=0x1a0020000, si=...,
    tls=tls@entry=0x0)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/sigproc.cc:846
#6  0x00007ffda34579fe in _pinfo::kill (this=0x1a0020000, si=...)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/signal.cc:269
#7  0x00007ffda3457dd9 in kill0 (si=..., pid=836)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/signal.cc:335
#8  kill (pid=836, sig=<optimized out>)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/signal.cc:346
#9  0x00007ffda3457f92 in raise (sig=sig@entry=6)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/signal.cc:307
#10 0x00007ffda35a8d28 in abort ()
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/signal.cc:409
#11 0x00007ffda35a8e55 in dlfree (mem=<optimized out>)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/mm/malloc.cc:4780
#12 0x00007ffda3510f9a in free (
    p=0x100557010 <std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_Rep::_S_empty_rep_storage>)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/mm/malloc_wrapper.cc:78
#13 0x00007ffda352ca54 in _sigfe () at sigfe.s:35
#14 0x00000003fb09c960 in cygstdc++-6!_ZNSs6assignERKSs ()
   from /usr/bin/cygstdc++-6.dll
#15 0x00000001004e3ab4 in std::basic_string<char, 
std::char_traits<char>,std::allocator<char> >::operator= (this=0x3, __str="-")
    at /usr/lib/gcc/x86_64-pc-cygwin/13/include/c++/bits/cow_string.h:728
#16 llvm::cl::opt_storage<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, false, true>::setValue<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > (this=0x3, V="-", initial=true)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1376
#17 llvm::cl::opt<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, false, llvm::cl::parser<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >::setInitialValue (
    this=0x100557f20 <OutputFilename>, V="-")
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1487
#18 llvm::cl::initializer<char 
[2]>::apply<llvm::cl::opt<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, false, llvm::cl::parser<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > > (
    this=<optimized out>, O=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:433
#19 0x00000007ffffcb58 in ?? ()
#20 0x000000010043c8a7 in llvm::cl::getGeneralCategory ()
    at /cygdrive/d/S/llvm/src/llvm/lib/Support/CommandLine.cpp:2664
#21 0x00000001004e210e in llvm::cl::applicator<llvm::cl::initializer<char [2]> 
>::opt<llvm::cl::opt<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, false, llvm::cl::parser<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > > (M=..., O=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1261
#22 llvm::cl::apply<llvm::cl::opt<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, false, 
llvm::cl::parser<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > >, llvm::cl::initializer<char [2]> >
    (O=0x100557f20 <OutputFilename>, M=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1315
#23 llvm::cl::apply<llvm::cl::opt<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, false, 
llvm::cl::parser<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > >, llvm::cl::value_desc, llvm::cl::initializer<char 
[2]> > (O=0x100557f20 <OutputFilename>, M=..., Ms=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1311
#24 llvm::cl::apply<llvm::cl::opt<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, false, 
llvm::cl::parser<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > >, llvm::cl::desc, llvm::cl::value_desc, 
llvm::cl::initializer<char [2]> > (O=0x100557f20 <OutputFilename>, M=...,
    Ms=..., Ms=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1311
#25 llvm::cl::apply<llvm::cl::opt<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, false, 
llvm::cl::parser<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > >, char [2], llvm::cl::desc, llvm::cl::value_desc, 
llvm::cl::initializer<char [2]> > (
    O=0x100557f20 <OutputFilename>, M=..., Ms=..., Ms=..., Ms=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1311
#26 llvm::cl::opt<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, false, llvm::cl::parser<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >::opt<char [2], 
llvm::cl::desc, llvm::cl::value_desc, llvm::cl::initializer<char [2]> > 
(this=0x100557f20 <OutputFilename>,
    Ms=..., Ms=..., Ms=..., Ms=...)
    at /cygdrive/d/S/llvm/src/llvm/include/llvm/Support/CommandLine.h:1500
#27 0x00007ffda3440b5a in verifyable_object_isvalid (
    objectptr=<optimized out>, magic=<optimized out>,
    static_ptr1=<optimized out>, static_ptr2=<optimized out>, static_ptr3=0x0)
    at 
/usr/src/debug/cygwin-3.7.0-0.55.g1c530c37fd63/winsup/cygwin/thread.cc:151

Reply via email to