linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* any hints using gcc 3.4.3 for 2.4.25 kernel?
@ 2005-02-21 14:12 Wojciech Kromer
  2005-02-21 14:28 ` Ralph Siemsen
  2005-02-23 14:54 ` Gerhard Jaeger
  0 siblings, 2 replies; 5+ messages in thread
From: Wojciech Kromer @ 2005-02-21 14:12 UTC (permalink / raw)
  To: linuxppc-embedded

a)first i have:
- 2.4.25 kernel (from denx cvs)
- eldk with 2.95.4 compiler
this one set works fine :)

b)then, i've tried  to same sources with:
gcc-3.4.3 , self build from uClibc buildroot
new hernel hangs just after decompressing :(

any tricks?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: any hints using gcc 3.4.3 for 2.4.25 kernel?
  2005-02-21 14:12 any hints using gcc 3.4.3 for 2.4.25 kernel? Wojciech Kromer
@ 2005-02-21 14:28 ` Ralph Siemsen
  2005-02-23 14:54 ` Gerhard Jaeger
  1 sibling, 0 replies; 5+ messages in thread
From: Ralph Siemsen @ 2005-02-21 14:28 UTC (permalink / raw)
  To: Wojciech Kromer; +Cc: linuxppc-embedded

Wojciech Kromer wrote:
> a)first i have:
> - 2.4.25 kernel (from denx cvs)
> - eldk with 2.95.4 compiler
> this one set works fine :)
> 
> b)then, i've tried  to same sources with:
> gcc-3.4.3 , self build from uClibc buildroot
> new hernel hangs just after decompressing :(

I haven't tried this on PPC, but under similar circumstances on ARM what 
I learned was: there are several places in the kernel where lists are 
generated by some linker tricks.  For example all of the device 
initialization functions are assembled into a list, so they can be 
conveniently called in sequence.

The semantics for getting the linker to fill this list have changed.  In 
2.4 days they used ELF sections marked as "unnused", which were simply 
ignored but passed through.

Newer toolchains now drop unnused sections, so the initialization tables 
are not present in your kernel, which leads to the crash.  I was able 
kludge around this by changing in <asm/setup.h> and <linux/init.h>, 
search for __attribute__((unused, ...) and change to "used" instead. 
There are about half dozen occurrences, in the __init* and __exit* 
macros.  You then need some ugly casts in <linux/module.h> to match.

Of course the same thing could happen in other places/drivers, so really 
  the above is not a good solution.  New 2.6 kernels handle this sort of 
thing in a different way.  Best solution is to keep an older gcc for 
older kernels, and a newer one for 2.6...

-Ralph

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: any hints using gcc 3.4.3 for 2.4.25 kernel?
  2005-02-21 14:12 any hints using gcc 3.4.3 for 2.4.25 kernel? Wojciech Kromer
  2005-02-21 14:28 ` Ralph Siemsen
@ 2005-02-23 14:54 ` Gerhard Jaeger
  2005-02-23 15:38   ` Bryan O'Donoghue
  1 sibling, 1 reply; 5+ messages in thread
From: Gerhard Jaeger @ 2005-02-23 14:54 UTC (permalink / raw)
  To: linuxppc-embedded; +Cc: Wojciech Kromer

On Monday 21 February 2005 15:12, Wojciech Kromer wrote:
> a)first i have:
> - 2.4.25 kernel (from denx cvs)
> - eldk with 2.95.4 compiler
> this one set works fine :)
> 
> b)then, i've tried  to same sources with:
> gcc-3.4.3 , self build from uClibc buildroot
> new hernel hangs just after decompressing :(
> 
> any tricks?
> 

you can use the include/linux/init.h and compiler.h from 2.4.29
kernel + patching some header files, where the inlining does not
work any longer. I also suggest comparing with 2.4.29 kernel.

ciao,
Gerhard

-- 
Gerhard Jaeger <gjaeger@sysgo.com>            
SYSGO AG                      Embedded and Real-Time Software
www.sysgo.com | www.elinos.com | www.pikeos.com | www.osek.de 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: any hints using gcc 3.4.3 for 2.4.25 kernel?
  2005-02-23 14:54 ` Gerhard Jaeger
@ 2005-02-23 15:38   ` Bryan O'Donoghue
  2005-02-23 15:42     ` Gerhard Jaeger
  0 siblings, 1 reply; 5+ messages in thread
From: Bryan O'Donoghue @ 2005-02-23 15:38 UTC (permalink / raw)
  To: Gerhard Jaeger; +Cc: Wojciech Kromer, linuxppc-embedded

Gerhard Jaeger wrote:
> On Monday 21 February 2005 15:12, Wojciech Kromer wrote:
> 
>>a)first i have:
>>- 2.4.25 kernel (from denx cvs)
>>- eldk with 2.95.4 compiler
>>this one set works fine :)
>>
>>b)then, i've tried  to same sources with:
>>gcc-3.4.3 , self build from uClibc buildroot
>>new hernel hangs just after decompressing :(
>>
>>any tricks?
>>
> 
> 
> you can use the include/linux/init.h and compiler.h from 2.4.29
> kernel + patching some header files, where the inlining does not
> work any longer. I also suggest comparing with 2.4.29 kernel.
> 
> ciao,
> Gerhard
> 

If all you want is a cross compiler to make a kernel why not try this 
procedure ?

Tested with :

gcc-3.4.2
binutils-2.15.90.0.3
dietlibc-0.28 or dietlibc cvs

1
untar all sources

2
binutils:

./configure --prefix=/usr/local/powerpc-linux --target=powerpc-linux

make
make install

3
gcc:

./configure --prefix=/usr/local/powerpc-linux --target=powerpc-linux 
--with-ecos --disable-nls --enable-threads=posix --disable-shared 
--enable-languages=c --with-headers=../dietlibc/include

make
make install

There might be a little error in gcc/unwind-dw2-fde-glibc.c and 
gcc/unwind-dw2-fde.h

I can't remember the exact errors in those two files, but, hopefully 
those should be easy enough to fix.

Once you work around the slight inconsistency between dietlibc & gcc in 
those two files, and make install, you should have a full toolchain in 
/usr/local/powerpc-linux

I had been thinking about making a small script for kernel people such 
as yourself, who wanted just a toolchain for kernel cross compiles.
Maybe I'll do that.

But, in any case, the above procedure gives me a 3.4.2 which is quite 
happy to compile a 2.4.28-rc3 (though I haven't tried out the denx 
2.4.25... but, I can't see why that would fail).

Hope this helps.

--
Bryan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: any hints using gcc 3.4.3 for 2.4.25 kernel?
  2005-02-23 15:38   ` Bryan O'Donoghue
@ 2005-02-23 15:42     ` Gerhard Jaeger
  0 siblings, 0 replies; 5+ messages in thread
From: Gerhard Jaeger @ 2005-02-23 15:42 UTC (permalink / raw)
  To: Bryan O'Donoghue; +Cc: Wojciech Kromer, linuxppc-embedded

On Wednesday 23 February 2005 16:38, Bryan O'Donoghue wrote:
> Gerhard Jaeger wrote:
> > On Monday 21 February 2005 15:12, Wojciech Kromer wrote:
> > 
> >>a)first i have:
> >>- 2.4.25 kernel (from denx cvs)
> >>- eldk with 2.95.4 compiler
> >>this one set works fine :)
> >>
> >>b)then, i've tried  to same sources with:
> >>gcc-3.4.3 , self build from uClibc buildroot
> >>new hernel hangs just after decompressing :(
> >>
> >>any tricks?
> >>
> > 
> > 
> > you can use the include/linux/init.h and compiler.h from 2.4.29
> > kernel + patching some header files, where the inlining does not
> > work any longer. I also suggest comparing with 2.4.29 kernel.
> > 
> > ciao,
> > Gerhard
> > 
> 
> If all you want is a cross compiler to make a kernel why not try this 
> procedure ?
> 
> Tested with :
> 
> gcc-3.4.2
> binutils-2.15.90.0.3
> dietlibc-0.28 or dietlibc cvs
> 
> 1
> untar all sources
> 
> 2
> binutils:
> 
> ./configure --prefix=/usr/local/powerpc-linux --target=powerpc-linux
> 
> make
> make install
> 
> 3
> gcc:
> 
> ./configure --prefix=/usr/local/powerpc-linux --target=powerpc-linux 
> --with-ecos --disable-nls --enable-threads=posix --disable-shared 
> --enable-languages=c --with-headers=../dietlibc/include
> 
> make
> make install
> 
> There might be a little error in gcc/unwind-dw2-fde-glibc.c and 
> gcc/unwind-dw2-fde.h
> 
> I can't remember the exact errors in those two files, but, hopefully 
> those should be easy enough to fix.
> 
> Once you work around the slight inconsistency between dietlibc & gcc in 
> those two files, and make install, you should have a full toolchain in 
> /usr/local/powerpc-linux
> 
> I had been thinking about making a small script for kernel people such 
> as yourself, who wanted just a toolchain for kernel cross compiles.
> Maybe I'll do that.
> 
> But, in any case, the above procedure gives me a 3.4.2 which is quite 
> happy to compile a 2.4.28-rc3 (though I haven't tried out the denx 
> 2.4.25... but, I can't see why that would fail).
> 
> Hope this helps.

I'm pretty sure, that it won't help on a 2.4.25 kernel. The 2.4.28-rc3 already
has the needed patches/changes applied, that's why it works for you ;)

ciao,
Gerhard

-- 
Gerhard Jaeger <gjaeger@sysgo.com>            
SYSGO AG                      Embedded and Real-Time Software
www.sysgo.com | www.elinos.com | www.pikeos.com | www.osek.de 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-02-23 15:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-21 14:12 any hints using gcc 3.4.3 for 2.4.25 kernel? Wojciech Kromer
2005-02-21 14:28 ` Ralph Siemsen
2005-02-23 14:54 ` Gerhard Jaeger
2005-02-23 15:38   ` Bryan O'Donoghue
2005-02-23 15:42     ` Gerhard Jaeger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).