TDM Logo
A GCC / MinGW / MinGW-w64 compiler suite for 32- and 64-bit Windows

TDM-GCC

2012-11-17 DW2 core package hotfixed to include libiconv DLL -- update with the TDM-GCC installer or download the gcc-4.7.1-tdm-1-dw2-core-3 package.

Development

Local fixes and changes

  • Includes a patch to make all search paths for headers, libraries and helper executables relative to the installation directory of the driver executables -- in other words, TDM-GCC is fully relocatable and does not search any absolute system paths.
  • TDM64 edition only: Includes a patch to give 64-bit runtime DLLs a "_64" tag, allowing them to coexist with the 32-bit DLLs in the same directory.
  • Includes a patch to allow libgomp to interoperate correctly with user-generated pthreads. See TDM-GCC artifact 2921774.
  • Includes a patch which reintegrates the code from libgcc_eh.a into libgcc.a and the libgcc DLL. As long as the shared memory region is used to handle exceptions, this library is unnecessary, and it causes multiple definition errors for the symbols in it because it hasn't been added to binutils' exception libraries yet.
  • Includes a patch to re-enable large file support for C++ fstreams (LFS detection fails because there is no definition for struct stat64 in mingw-runtime). See TDM-GCC artifact 2803234.
  • Includes a patch based on the MinGW 3.4.5 shared-memory mechanism to propagate exceptions out of DLLs without the need for shared versions of libgcc and libstdc++.
  • Includes a patch to keep GCC from erroneously using the CWD as the installation directory.
  • Configured with "--enable-fully-dynamic-string", which fixes a bug when passing empty std::string objects between DLLs and EXEs.

Omitted languages

  • In building an x86_64-w64-mingw32 native bootstrap, Ada fails with undefined references to the language-specific unwind handlers in libada.
  • Java has been omitted because of libgcj's large size and the inability to build it as a working shared library. If you've managed to create a working libgcj DLL, please email me the details! (tdragon-at-tdragon-dot-net)

Build environment

TDM-GCC is currently built as a native bootstrap using the MinGW project's MSYS environment. The build process makes use of two "identity mounts", wherein the MSYS path directly corresponds to the actual path:
  • "C:\crossdev" is mounted as "/crossdev"
  • "C:\mingw" is mounted as "/mingw"
The "tdmsrc" source package for any given TDM-GCC release contains further details and build scripts.
The TDM "dragon" logo displayed on this page may not be displayed elsewhere in any manner unless expressly permitted by the author ("John E." / tdragon (at symbol) tdragon (period) net), or unless such display must be permitted due to governing fair-use laws. All other portions of this page, excluding the logo but including text, layout, and other graphical elements, are released into the public domain and may be freely reused without restriction.