Skip to contentSkip to conversation

compile with -ffreestanding

PATCH New Adrian Bunk 1 participant 1 message Dec 1, 2004 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 compile with -ffreestanding

Hi Andrew,

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.

I'm currently running a 2.6.10-rc2-mm4 with this patch applied and compiled with gcc 2.95 and haven't yet observed any problems.

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.

Could you add the patch below to the next -mm to see whether there are any problems I didn't find?

TIA
Adrian

Makefile renamed from Makefile.old +2 -1
@@ -349,7 +349,8 @@
 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 \