Re: spinlocks() are severely broken in 2.2.X and 2.4.X for modules

From: Russell King (rmk@arm.linux.org.uk)
Date: Sun Jul 02 2000 - 03:05:54 EST


Andi Kleen writes:
> I had it happen to me in the past too for my sysctl rewrite. In this
> case it happened in the main kernel for a .sysctl -> .data relocation.
> It happened in the main vmlinux. It seems to require some complex
> input to trigger (it is not as simple as intersegment relocation does not
> work). In my case I had a few hundred relocations and one was wrong
> and caused crashes.
>
> binutils was 2.9.1.0.23 (hj lu version)

I noticed this too on binutils 2.9.1 under ARM - I use several different
sections during the startup of the kernel. What I noticed was that very
frequently, binutils 2.9.1.0.xx used to get the relocations just plain
and simply *wrong*. For this reason, ARM didn't support the .text.init
section for a very long time (until recently in fact).

This was easy to spot, since it was very localised, and had the general
effect of leaving you without a bootable kernel.

Since then, I have a makefile which refuses to compile Linux with any version
of binutils older than 2.9.4. Certainly binutils 2.9.5 seems to always
get the relocations correct.

I'd strongly suggest to Jeff that he tries upgrading to binutils 2.9.5 to
see if this fixes his problem.

If in fact this is the problem, then I think that the same thing should be
done with the x86 makefile - refuse to compile if binutils version < 2.9.4
   _____
  |_____| ------------------------------------------------- ---+---+-
  | | Russell King rmk@arm.linux.org.uk --- ---
  | | | | http://www.arm.linux.org.uk/~rmk/aboutme.html / / |
  | +-+-+ --- -+-
  / | THE developer of ARM Linux |+| /|\
 / | | | --- |
    +-+-+ ------------------------------------------------- /\\\ |

-
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/



This archive was generated by hypermail 2b29 : Fri Jul 07 2000 - 21:00:10 EST