OK, lets say "lots of assembler constraints that cause some gcc versions
to generate bogus code".
> So Andi, don't go saying that the kernel has problems, when it is equally
> true to say that gcc has problems.
I actually don't care that much about who is to blame for the problems,
just that the problems are fixed (this is free software - no need to
blame someone :)
> > Linus what is your position on egcs 1.1 and 2.2.0 ?
>
> My problem is that I see too many egcs people that claim that the kernel
> is buggy, even though at least half the reports I ever got were egcs bugs,
> in my opinion. As such, I don't have very much faith in what the egcs
> people tell me any more.
I'm curious. Did you see any new to egcs 1.1 bug that was caused/went away
with -fno-gcse ? I would expect global CSE to move a lot of code and cause
locking problems etc. by this.
> For example, everybody in the egcs camp just decided that clobbers and
> inputs must not overlap. Nobody told me why, and why they can't just be
> automatically converted to early-clobbers inside gcc.
I can't comment one the reasons for this change. AFAIK egcs-current
does a lot more strict checking on inline assembler arguments, but that
doesn't help for the goal of a stable running 2.2 kernel that was compiled
by egcs. It seems in this this case it is easier to fix the kernel than
the compiler. If this can't be done then the kernel should at least
have get this patch until the issue is resolved:
--- linux/init/main.c-o Mon Oct 26 00:52:44 1998
+++ linux/init/main.c Mon Oct 26 00:55:18 1998
@@ -65,6 +65,14 @@
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
#error sorry, your GCC is too old. It builds incorrect kernels.
#endif
+/*
+ * Sadly newer gcc versions aren't capable to generate reliable i386
+ * kernels because of various inline assembly problems. If you know
+ * what you're doing disable this check (but think twice!)
+ */
+#if defined(__i386__) && __GNUC_MINOR__ > 7
+#error sorry, your GCC is too new. It builds incorrect kernels.
+#endif
extern char _stext, _etext;
extern char *linux_banner;
-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/