NetWinder Binary Utilities Notes

Scott Bambrough, scottb@netwinder.org

$Revision: 1.2 $, $Date: 1999/11/02 16:49:52 $
This document describes the GNU binary utilities used on the NetWinder.

1. GNU Binary Utilities - Version 2.9.1.0.25

1.1 Introduction

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.

1.2 Known Bugs - Version 2.9.1.0.25

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 '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.

2. GNU Binary Utilities - Version 2.9.5.0.xx

2.1 Introduction

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

2.2 Known Bugs - Version 2.9.5.0.xx

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

3. Miscellaneous

3.1 Author

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 http://www.netwinder.org/~scottb/notes/Binutils-Notes.html.

3.2 History

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.

3.3 Copyright Notice

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.