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.