<div dir="rtl"><div dir="ltr">This has nothing to do with exception handling nor with clang specifically. This is a DLL dependency created for a program compiled with mingw 32 bits dwarf exception, dynamic linking to libgcc. The usual solution is to bundle the above DLLs along with clang*.exe at the same directory clang*.exe is. Another alternative is to build clang with the flags <span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">-static-libgcc </span><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">-static-libstdc++</span><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif"><font size="3"> </font>so that clang.exe will include a static copy of libgcc. Google "</font></span><font color="#000000" face="arial, helvetica, sans-serif">mingw static-libgcc dependency" for more explainations and examples.</font></div><div dir="ltr"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div dir="ltr"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div dir="ltr"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div dir="ltr">2015-08-25 15:02 GMT+03:00 Edward Diener via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span>:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 8/25/2015 6:30 AM, Edward Diener via cfe-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 8/25/2015 2:41 AM, Yaron Keren via cfe-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
That looks likea collision between the 32 bit and 64 bit versions of<br>
mingw.<br>
Which version of 32 bit and 64 bit versions exactly do you, could you<br>
provide download links?<br>
I ask because there are several mingw distributions around and they are<br>
different.<br>
</blockquote>
<br>
The 32-bit version of mingw-64/gcc I am using is:<br>
<br>
i686-5.1.0-posix-dwarf-rt_v4-rev0<br>
<br>
The 64-bit version of mingw-64/gcc I am using is:<br>
<br>
x86_64-5.1.0-posix-seh-rt_v4-rev0<br>
<br>
I use the mingw-64 installer called 'mingw-w64-install.exe' to install<br>
various flavors of mingw-64.<br>
<br>
If I run dependency walker on the 32-bit version of clang I have built<br>
from source with the 32-bit version of mingw-64/gcc above it shows a<br>
dependency in the clang++.exe on:<br>
<br>
c:\utilities\mingw-w64\i686-5.1.0-posix-dwarf-rt_v4-rev0\mingw32\bin\LIBGCC_S_DW2-1.DLL<br>
<br>
c:\utilities\mingw-w64\i686-5.1.0-posix-dwarf-rt_v4-rev0\mingw32\bin\LIBSTDC++-6.DLL<br>
<br>
<br>
This means that the build of clang from source is linking to<br>
mingw-64/gcc 32-bit DLLs needed to run clang. So the build constrains<br>
clang to run only with the version of mingw-64/gcc with which it was built.<br>
</blockquote>
<br></span>
I want to correct this. It does not mean that the build constrains clang to run only with the version of mingw-64/gcc with which it was built. But it does mean that when this clang runs it must find a LIBGCC_S_DW2-1.DLL and a LIBSTDC++-6.DLL in its PATH which it can use. Unfortunately the 64-bit versions of mingw-64/gcc do not support dwarf exception handling, which is where I think the dependency on LIBGCC_S_DW2-1.DLL comes from for the 32-bit version. The only common exception handling between the 32-bit and 64-bit versions of mingw-64/gcc is 'sjlj'. I will try building clang with a mingw-64/gcc 32-bit release that supports 'sjlj' exception handling and then see if it can run with a mingw-64/gcc 64-bit release that also supports 'sjlj' exception handling in order to create 64-bit code.<div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I did not change any of the default CMake build parameters that I know<br>
of. Is there a CMake build parameter which removes this constraint so<br>
that the version of clang is not dependent on the version of<br>
mingw-64/gcc with which it is built ?<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
2015-08-25 7:43 GMT+03:00 Edward Diener via cfe-dev<br>
<<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org</a><br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org</a>>>:<br>
<br>
    On 8/24/2015 11:38 PM, Yaron Keren via cfe-dev wrote:<br>
<br>
            Evidently to build a version of clang on Windows targeting<br>
            mingw-64/gcc, which can compile 64-bit code, one must build<br>
            clang with a 64-bit version of mingw-64/gcc. This may be<br>
            apparent to you and other clang developers but it was not<br>
            apparent to me.<br>
<br>
<br>
        clang may be built with any supported regardless the target. For<br>
        example, I'm building clang using Visual C++ 64 bit and<br>
        targetting the<br>
        32-bit version of mingw. You do need to have the target mingw<br>
        installed<br>
        for the include files, library files and linker.<br>
<br>
<br>
    Please see my other response in this thread to Ivan. My experience<br>
    is clearly that a 32-bit version of clang does not work when a<br>
    64-bit version of mingw-64/gcc is first in the Windows PATH. I also<br>
    explained this previously in my post "Clang on Windows targeting<br>
    mingw-64/gcc building 64bit code", which was unanswered.<br>
<br>
<br>
<br>
<br>
        2015-08-25 5:15 GMT+03:00 Edward Diener via cfe-dev<br>
<br>
<<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org</a><br>
<br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org</a>><br>
<br>
<br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org</a><br>
<br>
<br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMTcBkidbGgD4Q@public.gmane.orgg" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMTcBkidbGgD4Q@public.gmane.orgg</a>>>>:<br>
<br>
<br>
             On 8/24/2015 6:27 PM, Hans Wennborg via cfe-dev wrote:<br>
<br>
                 On Mon, Aug 24, 2015 at 2:36 PM, Edward Diener via<br>
cfe-dev<br>
                 <<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org</a><br>
        <mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ@public.gmane.org</a>><br>
<br>
<br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org</a><br>
<br>
<br>
<mailto:<a href="mailto:cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org" target="_blank">cfe-dev-NBbBogny7ofFcdTEL8lfRQ-XMD5yJDbdMReXY1tMh2IBg@public.gmane.org</a>>>><br>
<br>
        wrote:<br>
<br>
                     Is clang built form the latest svn source capable of<br>
                     creating 64-bit code on<br>
                     a Microsoft Windows 64-bit OS ?<br>
<br>
<br>
                 Yes. We build 64-bit Chromium on Windows with Clang<br>
        continuously.<br>
<br>
                     If yes, is this done through the -m64 option<br>
                     or do I have to build clang from source in some<br>
        particular<br>
                     way to enable the<br>
                     functionality ?<br>
<br>
<br>
                 Yes, using clang-cl -m64 is how we do it.<br>
<br>
<br>
             Evidently to build a version of clang on Windows targeting<br>
             mingw-64/gcc, which can compile 64-bit code, one must build<br>
        clang<br>
             with a 64-bit version of mingw-64/gcc. This may be apparent<br>
        to you<br>
             and other clang developers but it was not apparent to me.<br>
<br>
             I would like to add to the documentation on the clang<br>
"Getting<br>
             Started: Building and Running Clang" page at<br>
        <a href="http://clang.llvm.org/get_started.html" rel="noreferrer" target="_blank">http://clang.llvm.org/get_started.html</a> a section of documentation<br>
             following the section "Using Visual Studio" called "Using<br>
             mingw(-64)/gcc". This section would explain how to build<br>
        clang on<br>
             Windows using ninja, CMake, and a mingw(-64)/gcc<br>
        implementation and<br>
             how to run clang from the command line using a<br>
        mingw(-64)/gcc RTL. I<br>
             am willing to completely write this documentation, to be<br>
        vetted by<br>
             whatever clang developer takes care of that "Getting<br>
        Started" page,<br>
             in order to help other developers build and run clang on<br>
        Windows<br>
             with the mingw(-64)/gcc RTL.<br>
</blockquote></blockquote>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div>