glibc 2.0.4 contains a fatal bug. It does not declare a prototype for
the function llseek in unistd.h. As result GCC will (correctly) truncate
the 64 bit file offset and build erroneous filesystems when building
filesystems of 2GB. e2fsck will complain about read errors when trying
to read blocks from the 2GB border on. Actually I wonder why I never saw
a report about that on other mailinglists.
Quickfix: add the following prototype for llseek(2):
extern loff_t llseek (int fd, loff_t offset, int whence);