<!doctype linuxdoc system>
<article>
<title>NetWinder Binary Utilities Notes
<author>Scott Bambrough, <tt>scottb@netwinder.org</tt>
<date>$Revision: 1.2 $, $Date: 1999/11/02 16:49:52 $

<abstract>
This document describes the GNU binary utilities used on the NetWinder.
</abstract>

<toc>

<sect>GNU Binary Utilities - Version 2.9.1.0.25<p>

<sect1>Introduction<p>

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.

<sect1>Known Bugs - Version 2.9.1.0.25<p>

Binutils 2.9.1.0.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
branch <tt>'b'</tt> instructions get converted to branch and link
<tt>'bl'</tt> 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.

<sect>GNU Binary Utilities - Version 2.9.5.0.xx<p>

<sect1>Introduction<p>

H.J. Lu currently maintains a set of patches against the current binutils 
source found in the latest snapshots and the binutils CVS tree from 
<url url="http://sourceware.cygnus.com">.

At the present time, no patches are required for the ARM port of this source
tree.

One change of note between binutils version 2.9.1.0.25 is the target name
used by the linker.  The current version of collect2 distributed with 
GCC 2.95.1 expects the linker to support a target of elf32arm.  The latest
binutils source has been changed to support a target of arm-linux.  This 
change is a result of the merging to disparate ELF implementations; one by 
Cygnus and the other by Phil Blundell, Pat Bierne and Rebel.com.

Another noteworthy item is the two versions of binutils produce object modules
that are not quite binary compatible.  To force binary compatibility use the
-p flag on the linker command line.

Later versions of the compiler have been modified been modified to add this
switch to their LINK_SPEC.  Thus the switch it is automatically passed to the
linker by gcc.

<sect1>Known Bugs - Version 2.9.5.0.xx<p>

There are no known problems with these binary utilities.  There are no test
suite failures.

<sect>Miscellaneous<p>

<sect1>Author<p>
The author and maintainer of the NetWinder Binary Utility Notes is Scott
Bambrough (scottb@netwinder.org).  Please send any comments,
additions, or corrections so they may be included in the next release.  The
latest version of this document may be obtained from <url
url="http://www.netwinder.org/~scottb/notes/Binutils-Notes.html">.

<sect1>History<p>

The first public release of this document was as an html web page.

October 21, 1999 (version 1.0): Converted web page to SGML, and updated
the content.

November 2, 1999: Updated content.

<sect1>Copyright Notice<p>

This document is copyright (c) Scott Bambrough, 1999.

Permission is granted to make and distribute verbatim copies of this
document.  The copyright notice and this permission notice must be preserved
on all copies.

</article>

