Hi Michael,
If the problem is definitively a system header problem, can you create a mostly-empty *.c file that has the two includes to demonstrate the problem? I can try to reproduce it on my machine at home. Also, if you have the time, can you check the headers themselves for #ifdefs or something (not sure how proficient you are with C and C preprocessor) that might guard double inclusion? Check if other architectures use similar definitions?
/usr/include/sparc-linux-gnu/asm/termbits.h:12:25
/usr/include/sparc-linux-gnu/bits/termios.h:25:22
On the system that builds OK, can you copy those two files and compare it to the system that doesn't work? Also, checking the gcc predefined macros (gcc -dM -E - < /dev/null) for each environment may help, especially if the tcflag_t type is selected based on something like the "bitness" (32 / 64) of the target. Finally, if it isn't just your system, a bug report would be really helpful with as much information and detective work as possible.
Patrick