From: Adrian Bunk For the kernel, it would be logical to use -ffreestanding. The kernel is not a hosted environment with a standard C library. The gcc option -ffreestanding is supported by both gcc 2.95 and 3.4, which covers the whole range of currently supported compilers. Regarding changes caused by this patch: Andi Kleen reported: Newer gcc rewrites sprintf(buf,"%s",str) to strcpy(buf,str) transparently. This is only true with unit-at-a-time (disabled on i386 but enabled on x86_64). The Linux kernel doesn't offer a standard C library, and such transparent replacements of kernel functions with builtins are quite fragile. Even with -ffreestanding, it's still possilble to explicitely use a gcc builtin if desired. Signed-off-by: Adrian Bunk Signed-off-by: Andrew Morton --- 25-akpm/Makefile | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN Makefile~compile-with-ffreestanding Makefile --- 25/Makefile~compile-with-ffreestanding 2004-12-01 23:38:56.089392824 -0800 +++ 25-akpm/Makefile 2004-12-01 23:38:56.093392216 -0800 @@ -349,7 +349,8 @@ LINUXINCLUDE := -Iinclude \ CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \ - -fno-strict-aliasing -fno-common + -fno-strict-aliasing -fno-common \ + -ffreestanding AFLAGS := -D__ASSEMBLY__ export VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION KERNELRELEASE \ _