Seems that when compiling a file ending in ".S", gcc-2.95.3 does not expand __GNUC__ at all. This causes the compiler version check to fail when building vsyscall.S. arch/i386/kernel/vsyscall.S | 0 include/linux/compiler.h | 2 ++ 2 files changed, 2 insertions(+) diff -puN arch/i386/kernel/vsyscall.S~init_h-needs-compiler_h-fix arch/i386/kernel/vsyscall.S diff -puN include/linux/compiler.h~init_h-needs-compiler_h-fix include/linux/compiler.h --- 25/include/linux/compiler.h~init_h-needs-compiler_h-fix 2003-11-11 22:19:42.000000000 -0800 +++ 25-akpm/include/linux/compiler.h 2003-11-11 22:19:59.000000000 -0800 @@ -9,6 +9,7 @@ # define __kernel #endif +#ifndef __ASSEMBLY__ #if __GNUC__ > 3 # include /* catch-all for GCC 4, 5, etc. */ #elif __GNUC__ == 3 @@ -18,6 +19,7 @@ #else # error Sorry, your compiler is too old/not recognized. #endif +#endif /* Intel compiler defines __GNUC__. So we will overwrite implementations * coming from above header files here _