From: Adrian Bunk <bunk@stusta.de>

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 <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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 \
_