-*- text -*-

Changes in binutils 2.10:

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

* 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:
