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?
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.