The current version of the GNU binary utilities in use on the NetWinder is based on release 2.9.1 of the tools. H.J. Lu maintained a set of patches for Linux systems against the GNU 2.9.1 release. At this time H.J. Lu no longer actively maintains this set of patches. The ARM ELF patches in this release were put together by Phil Blundell, Pat Bierne and Rebel.com.
Binutils 188.8.131.52.25 is reported by Russell King to suffer from a case of the
random changing opcode syndrome. What seems to be happening is that certain
'b' instructions get converted to branch and link
'bl' instructions, since it appears that PC_ARM_24 relocations in a
relocatable link just have the correction added to them. ie,
eafffffe -> eb000043 instead of ea000043
This is an old and fairly common problem. It occurs mainly with inter-section branches; this is one of the reasons the .text.init thing didn't use to work too well. There is a patch in Phil Blundell's directory on netwinder.org that helps a bit with this but a better solution is just to use the newer tools.