From: JonY <jo...@us...> - 2012-10-26 01:07:32
|
On 10/26/2012 02:19, Kai Tietz wrote: > Helle Simson, > > this list seems to me more like good content to our FAQ-section in > Wiki. Some of those points might be defining general goals we wanna > to define, or decline for mingw-w64 in general. > Most of those points are looking like something desirable, but on a > technical POV it shows that some of those points aren't implementable > due missing definitions in specification, simple vendor differences, > and misunderstandings in general goals. I will try to give brief > answers to your questions, and maybe somebody thinks it is worth to > add those answers to FAQ in our Wiki. > > 2012/10/25 Simson Garfinkel >> I've been on this mailing list for some time now and use mingw (both the 32-bit and 64-bit versions) for several production systems. What I would like to see is not a commitment to a release schedule but a document that clearly states the commitment to specific principles. For example: >> >> * Can compile the same source code as MSC VC++ (is this true?) > > As long as source doesn't use vendor-specific extension, this is > possible. We invested some efforts to add new features to gcc/g++ to > implement some compliant-features (eg x64 SEH exception in 4.8, > push_macro/pop_macro pragma, __int128, etc) which are vendor specific > VC extensions. Also there were recently spend some efforts for g++ to > make call-ABI in class-member functions more compatible to that what > MS defines by its 32-bit ABI. Additionally we provide tools - like > gendef, genidl, widl, genpe, etc - which are trying to fill some gaps > in standard-toolchain. Nevertheless we won't be able to make both > compilers feature-identical and this can't be a serious goal as > official documentation and papers about those features aren't > available for us. > Yes, this is a valid goal for us. >> * No Microsoft copyrighted headers in the build tree (so reimplementation) > > Sure, this is a primary goal for us. This doesn't mean that user > can't use for her/him-self additional SDKs provided by MS within our > toolchain. As far as I learned are some user using for example the > DIA SDK successful. > Yes, MSDN comes into play a lot here. >> * Uses Microsoft DLLs, rather than GNU DLLs, for key functions (is this true anymore?) > > For platform-functions we have to use OS provided DLLs, which are of > course provided by MS. For C-runtime we are using by default the > msvcrt.dll - this is a big subject and might need additional comments > as there are huge version-differences present - version. But of course > it is possible to build applications using different MS runtimes, like > msvcr100.dll, msvcr80.dll, etc. We don't use those DLLs by default, as > they aren't part of the standard-OS DLL set. > There are additional DLLs - and were ever for gcc/g++ based toolchains > - which are provided by the toolchain. Typical libraries provided by > gcc are libgcc, libgfortran, libstdc++, libquadmath, libssp. > Those DLLs can be used, but you have then of course to redistribute > them to end-user for running your build app. A way to avoid this is > to use static version of those libraries. This avoids dependencies to > none-system DLLs in general - see -static options. > If you plan to use a different runtime DLL, you might be in need to > rebuild those gcc-target libraries, as they are build by most > pre-compiled toolchains only using msvcrt.dll (Side note that static > versions of gcc's libraries don't need to be rebuild here). > Microsoft DLLs when possible, eg msvcrt.dll, though it is not possible unless you stick strictly to C. Like Kai says, C++ support comes from GCC libstdc++, fortran support from libgfortran etc. You should have no legal problems distributing these DLLs with your programs in anyway. >> * Compiles both Windows Threads and POSIX threads (true?) > > Yes, that true if you are using a pthread library. There is > pthreads-win32 venture, or you can use winpthread - a mingw-w64 owned > sub-project - for this. By using winpthread you are able to build > gcc's target-libraries in POSIX-way. > Kai means the openMP implementation, yes you still can choose between win32 threads and Posix threads in your applications if you use them directly, though it is not a good idea to mix them. >> * Equally produces static-linked and dynamic-linked binaries (this is VITAL for incident response. The problem is that many of the packets in the repositories include dynamic versions but not static versions) > > Sure, dynamic and static libraries are provided. The issue about > static-version is in some cases the used license for them. For gcc's > runtime-libraries there aren't any issues, as there is a > runtime-exception present, but for other libraries there might be > problems inflicted by license. Eg (L)GPL's viral effect on license. > I think this is more of a buildsystem issue rather than something mingw-w64 specific. Look at autotools and libtool, they handle shared libraries and DLLs fine, for most parts. >> * Compiled code supports both gdb and Microsoft debugger tools (true?) > > Well, that is technical not really possible, as gdb doesn't supports > pdb-format (not offical documented as most of MS' debugging stuff), > and windbg doesn't supports dwarf-2 debugging information. You should > be able to debug with both debuggers any application, but you won't be > able to see further debugging-info. Like Kai says, gdb can't understand MS debug format, neither can MS tools understand GNU debug format. It's a long long way to understand MS debug format due to lack of documentation, but it won't stop you from using a debugger from MS if you don't mind looking at the assembly level instructions. |