In both of the recent GCC 4.5.0 releases, the fstreams library in libstdc++ will only use 32-bit pointers for all file operations, limiting usable file sizes to 2Gb in a majority of cases. This holds true for both 32-bit and 64-bit targets (the latter running under WOW64, of course). I've attached a testcase that demonstrates this limitation for seek functionality. When operating correctly, it will create an ~3Gb file and print the correct seek offset each line; when this bug appears, it will cap out at 2Gb and print "-1" as the seek offset thereafter.
I've also attached a patch that fixes the problem. It's been tested to work as expected in recent TDM-GCC releases. Rather than fixing the configury's LFS support detection, which might be a fairly involved process, it merely makes libstdc++ use different functions on the MINGW32 platform.
Log in to post a comment.