Re: huge gcc 4.1.{0,1} __weak problem

Vegard Nossum
2008-05-02T07:18:22Z

Hey :)

On Fri, May 2, 2008 at 1:59 AM, Andrew Morton <akpm@linux-foundation.org> wrote:
>
> On Thu, 1 May 2008 16:24:47 -0700
> Tom Rini <trini@kernel.crashing.org> wrote:
>
> > On Thu, May 01, 2008 at 03:33:49PM -0700, Andrew Morton wrote:
> > > On Thu, 1 May 2008 15:27:26 -0700 (PDT)
> > > Linus Torvalds <torvalds@linux-foundation.org> wrote:
> > >
> > > > On Thu, 1 May 2008, Andrew Morton wrote:
> > > > > >
> > > > > > I see only the following choices:
> > > > > > - remove __weak and replace all current usages
> > > > > > - move all __weak functions into own files, and ensure that also happens
> > > > > > for future usages
> > > > > > - #error for gcc 4.1.{0,1}
> > > > >
> > > > > Can we detect the {0,1}? __GNUC_EVEN_MORE_MINOR__?
> > > >
> > > > It's __GNUC_PATCHLEVEL__, I believe.
> > > >
> > > > So yes, we can distinguish 4.1.2 (good, and very common) from 4.1.{0,1}
> > > > (bad, and rather uncommon).
> > > >
> > > > And yes, considering that 4.1.1 (and even more so 4.1.0) should be rare to
> > > > begin with, I think it's better to just not support it.
> > > >
> > >
> > > Drat. There go my alpha, i386, m68k, s390, sparc and powerpc
> > > cross-compilers. Vagard, save me!
> > >
> > > Meanwhile I guess I can locally unpatch that patch.
> >
> > I know I'll come off as an ass, but you can't make new ones with 4.1.2?
> > It's not like we're talking about gcc 2.95/96 fun here :)

It's true; crosstool hasn't been much of a trouble (for me anyway). A
couple of combinations that I tried failed.

> Honestly, I nearly died when I built all those cross-compilers. Sooooooo
> many combinations of gcc/binutils/glibc refused to work for obscure
> reasons. Compilation on x86_64 just didn't work at all and I ended up
> having to build everything on a slow i386 box, etc, etc. The stream of
> email to Dan got increasingly strident ;)
>
> I think crosstool has become a lot better since then, judging from the ease
> with which Jens was able to spin up the powerpc compiler, but the trauma
> was a life-long thing.
>
> Vegard has been making noises about (finally!) preparing and maintaining a
> decent set of cross-compilers for us. It would be a great service (begs).

Noises? Heh...

So I've only just begun that work. For i386 host we have the following targets:
alpha, arm, ia64, sparc64, sparc, x86_64

though these are largely untested with Linux Kernel. Most of them are
gcc 3.4.5 (this should in theory compile the kernel correctly), though
I found an e-mail from Ingo saying that you need the -tls versions for
stackprotector to work correctly. This might be a good time to ask if
I should be making gcc 4.1.2s instead. I need to recompile in either
case.

In other words, we are NOT fully operational yet :-)

Though H. Peter gave me a directory to stuff it in, you could try it
out if you're impatient:

http://www.kernel.org/pub/tools/crosstool/

(Hm, it seems that all my .asc files disappeared in the transition.. Oh well.)

Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036