Re: [2.4 patch] document that gcc 4 is not supported

From: Willy Tarreau
Date: Fri Jan 06 2006 - 16:13:26 EST


Hi Adrian,

On Fri, Jan 06, 2006 at 09:37:27PM +0100, Adrian Bunk wrote:
> gcc 4 is not supported for compiling kernel 2.4, and I don't see any
> compelling reason why kernel 2.4 should ever be adapted to gcc 4.
>
> This patch documents this fact.
>
> Without this patch, your screen is flooded with warnings and errors when
> accidentially trying to compile kernel 2.4 with gcc 4.
>
> With this patch, the same happens, but the last lines contain the
> explanation
> #error Sorry, your GCC is too recent for kernel 2.4

Well, why not putting this into include/linux/compiler.h instead ? It
would shout earlier and will be easier to find.

> If someone makes a patch to fix all issues with gcc 4, adding the
> removal of this #error should be the most trivial part of the patch.
>
>
> Signed-off-by: Adrian Bunk <bunk@xxxxxxxxx>
>
> ---
>
> Documentation/Changes | 2 ++
> README | 1 +
> init/main.c | 7 +++++++
> 3 files changed, 10 insertions(+)
>
> --- linux-2.4.31-rc1-full/init/main.c.old 2005-05-30 21:20:00.000000000 +0200
> +++ linux-2.4.31-rc1-full/init/main.c 2005-05-30 21:21:19.000000000 +0200
> @@ -84,6 +84,13 @@
> #error Sorry, your GCC is too old. It builds incorrect kernels.
> #endif
>
> +/*
> + * gcc >= 4 is not supported by kernel 2.4
> + */
> +#if __GNUC__ > 3
> +#error Sorry, your GCC is too recent for kernel 2.4
> +#endif
> +
> extern char _stext, _etext;
> extern char *linux_banner;
>
> --- linux-2.4.31-rc1-full/README.old 2005-05-30 21:21:29.000000000 +0200
> +++ linux-2.4.31-rc1-full/README 2005-05-30 21:21:59.000000000 +0200
> @@ -152,6 +152,7 @@
>
> - Make sure you have gcc 2.95.3 available. gcc 2.91.66 (egcs-1.1.2) may
> also work but is not as safe, and *gcc 2.7.2.3 is no longer supported*.
> + gcc 4 is *not* supported.

I would even explicitly state that gcc-3.3 and 3.4 should work in most
cases, while gcc 4 will definitely not work. It's important IMHO to
give the answers that most users will be looking for, and 3.3/3.4 are
fairly common.

> Also remember to upgrade your binutils package (for as/ld/nm and company)
> if necessary. For more information, refer to ./Documentation/Changes.
>
> --- linux-2.4.31-rc1-full/Documentation/Changes.old 2005-05-30 21:22:10.000000000 +0200
> +++ linux-2.4.31-rc1-full/Documentation/Changes 2005-05-30 21:22:41.000000000 +0200
> @@ -91,6 +91,8 @@
> You should ensure you use gcc-2.96-74 or later. gcc-2.96-54 will not build
> the kernel correctly.
>
> +gcc 4 is not supported.
> +

Same here.

> In addition, please pay attention to compiler optimization. Anything
> greater than -O2 may not be wise. Similarly, if you choose to use gcc-2.95.x
> or derivatives, be sure not to use -fstrict-aliasing (which, depending on
>

Thanks,
Willy

-
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/