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.