-*- text -*-

* New command line switches added to objcopy to allow symbols to be kept as
  global symbols, and also to specify files containing lists of such symbols.
  by Honda Hiroki.

Changes in binutils 2.11:

* Add support for ARM v5t and v5te architectures and Intel's XScale ARM
  extenstions.

* Add --srec-len and --srec-forceS3 command line switch to objcopy.
  By Luciano Gemme.
  
* Support for the MIPS32, by Anders Norlander.

* Support for the i860, by Jason Eckhardt.

* Support for CRIS (Axis Communications ETRAX series).

Changes in binutils 2.10:

* Support for 64-bit ELF on HPPA.

* New command line switch to objdump --file-start-context which shows the
  entire file contents up to the source line first encountered for a given
  file. 

* New command line switch to objdump -M (or --disassembler-options) which takes
  a parameter which can then be interpreted on a per-target basis by the
  disassembler.  Used by ARM targets to select register name sets, ISA, APCS or
  raw verions.
  
* objdump support for -mi386:intel which causes disassembly to be displayed
  with intel syntax.

* New program: readelf.  This displays the contents of ELF format files,
  regardless of target machine.

* objcopy now takes --change-section-lma, --change-section-vma, and
  --change-section-address options.  The old --adjust-section-vma option is
  equivalent to --change-section-address.  The other --adjust-* options are now
  renamed to --change-*, although --adjust-* continues to work.

* objcopy has a --redefine-sym option that lets you rename symbols.

* objcopy now takes a -j/--only-section option to copy only the specified
  sections.

* dlltool now supports the IMPORTS command.

* dlltool now takes --export-all-symbols, --no-export-all-symbols,
  --exclude-symbols, and --no-default-excludes options.

Changes in binutils 2.9:

* Added windres program, which can be used to manipulate resources in WIN32
  files as used on Windows 95 and Windows NT.

* The objcopy --gap-fill and --pad-to options operate on the LMA rather than
  the VMA of the sections.

* Added S modifier to ar to not build a symbol table.

Changes in binutils 2.8:

* The objdump disassembly format has been changed, and hopefully improved.  Use
  the new --prefix-addresses option to get the old format.  There are also new
  --disassemble-zeroes and --no-show-raw-insn options which affect disassembler
  output.

* Formats may now be specified as configuration triplets.  For example,
  objdump -b i386-pc-linux.  The triplets are not passed through config.sub,
  so they must be in canonical form.

* Added new addr2line program.  This uses the debugging information to convert
  an address into a file name and line number within a program.

* Added --change-leading-char argument to objcopy.

* Added --weaken argument to objcopy.

* objdump --dynamic-reloc now works on ELF executables and shared libraries.

* Added --adjust-vma option to objdump.

* Added -C/--demangle option to objdump.

* Added -p/--preserve-dates option to strip and objcopy.

Changes in binutils 2.7:

* Added --enable-shared and --enable-commonbfdlib options to configure.

* Added --debugging argument to objdump and objcopy.

* Added --defined-only argument to nm.

* Added --remove-leading-char argument to objcopy.

* The objdump --line-numbers option is now meaningful with --reloc.

* Added --line-numbers option to nm.

* Added --endian/-EB/-EL option to objdump.

* Added support for Alpha OpenVMS/AXP.

Changes in binutils 2.6:

* Added -N/--strip-symbol and -K/--keep-symbol arguments to strip and objcopy.

* Added several arguments to objcopy to provide some control over how the new
  file is laid out in memory.  Also added binary output format to BFD to permit
  generating plain binary files.

* Added --start-address and --stop-address options to objdump.

* ar and ranlib now work on AIX.  The tools are now built by default on AIX.

Changes in binutils 2.5:

* Changed objdump -dr to dump the relocs interspersed with the assembly
  listing, for a more useful listing of relocateable files.

* Changed objdump -d/--disassemble to only disassemble SEC_CODE sections.
  Added -D/--disassemble-all option to disassemble all sections.

* Added --size-sort option to nm.

* strip and objcopy should now be able to handle dynamically linked ELF
  executables.

Changes in binutils 2.4:

* Support for HP-PA (by Jeff Law), i386 Mach (by David Mackenzie), RS/6000 and
  PowerPC (except ar and ranlib; by Ian Taylor).

* Support for Irix 5.

* Programs `strip' and `objcopy' will not attempt to write dynamically linked
  ELF output files, since BFD currently can't create them properly.

Changes in binutils 2.3:

* A new --stabs argument has been added to objdump to dump stabs sections in
  ELF and COFF files.

* A new program, nlmconv, has been added.  It can convert object files into
  Novell NetWare Loadable Modules.

* The strings program has been added.

Changes in binutils 2.2:

* The 'copy' program has been renamed to 'objcopy', for consistency with
  'objdump', and because 'copy' might more plausibly be used as a synonym for
  'cp'.

* The new stand-alone program c++filt is a filter that converts encoded
  (mangled) C++ assembly-level identifiers to user-level names.  (Note: This
  may get moved to the gcc distribution.)

* nm -o on an archive now prefixes each line with the archive name, matching
  the output from BSD nm.

* ar (and ld) can now read (but not write) BSD4.4-style archives.

* New support for H8500, Z8000, and the Hitach SH.

* Dis-assembler interface changed to allow sharing with gdb.

* There is new Elf code, but it is not yet ready for general use.

* There is the beginnings of a test suite.

Changes in binutils 2.1:

* There is now support for writing ECOFF files, so ld and the other utilities
  should work on Risc/Ultrix and Irix.  Please let us know how well this works.

* ar now automatically creates a symbol table (a __.SYMDEF member, in the BSD
  version), if there are any object files in the archive.  So running ranlib is
  now redundant (unless the non-standard q command is used).  This is required
  for Posix.2 conformance.

* The archive-reading code now reads both BSD-style and SYSV-style archives
  independently of the selected target format.  This is to encourage people to
  switch to SYSV-format, which has a number of advantages.

* The strip and copy programs now have options to remove debug-symbols only
  and/or local symbols only.  They now also support long options.


Local variables:
fill-column: 79
End:
