2006-01-06 20:37:36

by Adrian Bunk

[permalink] [raw]
Subject: [2.4 patch] document that gcc 4 is not supported

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

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 <[email protected]>

---

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.
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.
+
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



2006-01-06 21:14:45

by Willy Tarreau

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

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 <[email protected]>
>
> ---
>
> 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

2006-01-06 21:54:46

by Adrian Bunk

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

On Fri, Jan 06, 2006 at 10:11:15PM +0100, Willy Tarreau wrote:
> 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.
>...

init/main.c is the first file that gets compiled, and therefore the
traditional place for such compiler checks.

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

gcc 2.95 is still the recommended compiler for kernel 2.4.

But if you want to improve the text, feel free to send a patch. :-)

> Thanks,
> Willy

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed