2000-11-09 17:16:02

by Rick Hohensee

[permalink] [raw]
Subject: Incorrectness for fun and profit


In 2.4 init/main.c we have...

* Versions of gcc older than that listed below may actually compile
* and link okay, but the end product can have subtle run time bugs.
* To avoid associated bogus bug reports, we flatly refuse to compile
* with a gcc that is known to be too old from the very beginning.
*/
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 1)
#error Sorry, your GCC is too old. It builds incorrect kernels.
#endif

Note that I've elided the 9 from the minor version number. I also tweaked
the #define asmlinkage in whereveritis.h to look a bit more like 2.2, got
rid of the arch=bla switch to gcc, and built the kernel I'm using at the
moment with gcc 2.7.2.3. I'm looking for "subtle run time bugs". OK, I'm
desparate for entertainment. That's a given. Where should I look?
Everything I'm cognizant of so far is real pretty. I WANT BUGS! WHERE ARE
THE BUGS?

This is not a bogus bug report. This is a repeatable bug request.


Incorrectly yours,

Rick Hohensee
:; cLIeNUX0 /dev/tty12 12:43:36 /
:;get /Linux/version
Linux version 2.4.0-test10 (@cLIeNUX) (gcc version 2.7.2.3) #10 Thu Nov 9
03:11:45 2000
:; cLIeNUX0 /dev/tty12 13:03:02 /
:;





2000-11-09 21:44:44

by Keith Owens

[permalink] [raw]
Subject: Re: Incorrectness for fun and profit

On Thu, 9 Nov 100 12:15:19 -0500 (EST),
Rick Hohensee <[email protected]> wrote:
>built the [2.4] kernel I'm using at the
>moment with gcc 2.7.2.3. I'm looking for "subtle run time bugs". OK, I'm
>desparate for entertainment. That's a given. Where should I look?

2.4.0-test10 kernel/module.c

static struct module kernel_module =
{
size_of_struct: sizeof(struct module),
name: "",
uc: {ATOMIC_INIT(1)},
flags: MOD_RUNNING,
syms: __start___ksymtab,
ex_table_start: __start___ex_table,
ex_table_end: __stop___ex_table

gcc 2.7.2.3 miscompiles structures that have internal labeled structure
initializers. uc gets misaligned, ex_table_start is then misaligned
and the exception table handling fails.