[2.6 patch] compile with -ffreestanding
From: Adrian Bunk
Date: Wed Dec 01 2004 - 18:42:35 EST
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
Signed-off-by: Adrian Bunk <bunk@xxxxxxxxx>
--- linux-2.6.10-rc1-mm4-full-ffreestanding/Makefile.old 2004-11-09 22:27:06.000000000 +0100
+++ linux-2.6.10-rc1-mm4-full-ffreestanding/Makefile 2004-11-09 22:27:47.000000000 +0100
@@ -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 \
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/