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

TDM-GCC

2010-09-03 New TDM-GCC 4.5.1 with LTO support (32-bit or 32/64-bit) [core patch 2, runtime svn3485]

Development

Local fixes and changes

  • 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.
  • 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.
  • TDM64 edition only: Includes a patch to remove a leading underscore from the 64-bit cygwin.asm symbols "__chkstk" and "_alloca", allowing them to be exported with the same rule as the 32-bit versions after underscoring rules are applied.
  • 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.4 series:
  • Includes a patch to disable the swprintf and vswprintf decls in when __STRICT_ANSI__ is defined (this was causing errors when -std=c++0x was used). See TDM-GCC artifact 2786113.

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.