On multi-TB storage array with XFS filesystem I have to enable 64bit inodes recently (inode64 mount option). Having test.c with:
int main(void){ return 0; } compiles fine for one file, but if i copy it to another one (several times till it got the right inode number) it produces: r...@matylda1: /mnt/data/kasparek# LC_ALL=C gcc -o test.o test-10356.c cc1: error: test-10356.c: Value too large for defined data type The only difference I believe is inode number, definitely not the content of the file: r...@matylda1: /mnt/data/kasparek# stat test.c File: `test.c' Size: 30 Blocks: 8 IO Block: 4096 regular file Device: 810h/2064d Inode: 10853690 Links: 1 r...@matylda1: /mnt/data/kasparek# stat test-10356.c File: `test-10356.c' Size: 30 Blocks: 8 IO Block: 4096 regular file Device: 810h/2064d Inode: 15447948189 Links: 1 from strace I found that cc1 is doing fstat64 call on the source code file and then finishes with this message. The first this I need to help with is how to check if the code that causes this (expect somewhere is used 32bit variable to store the inode) is from gcc itself or it is some third-party library. I checked latest version of 4.0, 4.1, 4.2, 4.3, 4.4, 4.5 branches and all behave the same. The system is x86_64 2.6.32.12 kernel on CentOS 5.4. All GCCs are 32bit binaries (with cross compiler for x86_64, mips, arm and alpha having the same behavior). Thanks in advance. -- Summary: 64bit inodes for source code causes "Value too large for defined data type" (XFS,inode64) Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kasparek at fit dot vutbr dot cz GCC build triplet: x86_64-pc-linux-gnu GCC host triplet: x86_64-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44116