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.