Kernel oops with 0.42 on ARM

Dan Kegel dank@kegel.com
Wed Mar 15 14:50:00 GMT 2006


On 3/15/06, michael.miller@prga.com <michael.miller@prga.com> wrote:
> I have a Cerf Board which happily runs kernel 2.6.15.2 when built using
> gcc 3.4.4, glibc 2.3.5 and binutils 2.16.1 via a Kegel 0.38 crosstool
> script.  The Cerf Board is a PXA 255 (ARM XScale.)  I tried upgrading to
> 0.42 crosstool with gcc 4.1.0, glibc 2.3.2 and binutils 2.16.1.  This is
> a combination that is listed as successful in Dan's Magic Matrix.  The
> toolchain and kernel built successfully but when the kernel starts I get
> an oops with an undefined instruction 0 at a pc address c01facdc that
> seems via System.map to be actually in the stuart device structure from
> generic.c in arch/arm/mach-pxa.

Three ideas:
0) turn off gcc's strict aliasing (-fno-strict-aliasing) if it's not off already
and otherwise crank down the optimization.  If that makes the
problem go away, great.  Otherwise:

1) run the gcc regression test suite
Yes, this is a pain, but so is everything else!
If this finds unexpected failures, great; file bugs for them
at gcc's bugzilla.   And/or:

2) add a debug print statement to the kernel at the very
beginning and make sure you can see it when the kernel
boots.  Then:
  a) add more print statements in the code after the last print
      statement you saw when you booted last
  b) build, reboot, go back to step a
Eventually you'll narrow down the offending code, and can
look at the problem in more detail by examining the generated code.
Once you find it, you may be able to tweak the source to avoid it.
File a bug with gcc's bugzilla with the offending code, what got generated,
and what you had to do to work around it.

Have fun!
- Dan

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list