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

TDM-GCC

2011-09-23 New releases: 4.6.1-tdm-1 and 4.6.1-tdm64-1

Development

Local fixes and changes

  • TDM32 edition only: Includes a patch to allow the Ada language to build for mingw32 targets.
  • 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 which corrects backslash usage in header paths and fixes path problems when debugging.
  • 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.
The following changes are only necessary for the 4.5 series:
  • 4.5 series: Includes a patch backported from GCC 4.6 trunk to fix problems using LTO with virtual base classes in C++. (See GCC Bugzilla PR46376.)
  • 4.5 series: Includes a patch to disable the forced generation of code for inline functions. This addresses a change in the GCC 4.5 vanilla sources from previous releases, which would cause disproportionately large object files in programs that expect the old behavior. The patch restores the old behavior, until such time as a more suitable response is found. For further info, see GCC Bugzilla PR43601 and GCC SVN r147799.

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.