-*- text -*-

Changes in 2.10:

Support for the Motorolla MCore 210 processor added.

A new pseudo-op .intel_syntax has been implemented to allow gas to parse i386 assembly
programs with intel syntax.

New pseudo-ops .func,.endfunc to aid in debugging user-written assembler code.

Full 16-bit mode support for i386.

Greatly improved instruction operand checking for i386.  This change will
produce errors or warnings on incorrect assembly code that previous versions of
gas accepted.  If you get unexpected messages from code that worked with older
versions of gas, please double check the code before reporting a bug.

Weak symbol support added for COFF targets.

Mitsubishi D30V support added.

Texas Instruments c80 (tms320c80) support added.

Changes in 2.9:

Texas Instruments c30 (tms320c30) support added.

The assembler now optimizes the exception frame information generated by egcs
and gcc 2.8.  The new --traditional-format option disables this optimization.

Added --gstabs option to generate stabs debugging information.

The -a option takes a new suboption, m (e.g., -alm) to expand macros in a
listing.

Added -MD option to print dependencies.

Changes in 2.8:

BeOS support added.

MIPS16 support added.

Motorola ColdFire 5200 support added (configure for m68k and use -m5200).

Alpha/VMS support added.

m68k options --base-size-default-16, --base-size-default-32,
--disp-size-default-16, and --disp-size-default-32 added.

The alignment directives now take an optional third argument, which is the
maximum number of bytes to skip.  If doing the alignment would require skipping
more than the given number of bytes, the alignment is not done at all.

The ELF assembler has a new pseudo-op, .symver, used for symbol versioning.

The -a option takes a new suboption, c (e.g., -alc), to skip false conditionals
in listings.

Added new pseudo-op, .equiv; it's like .equ, except that it is an error if the
symbol is already defined.

Changes in 2.7:

The PowerPC assembler now allows the use of symbolic register names (r0, etc.)
if -mregnames is used.  Symbolic names preceded by a '%' (%r0, etc.) can be
used any time.  PowerPC 860 move to/from SPR instructions have been added.

Alpha Linux (ELF) support added.

PowerPC ELF support added.

m68k Linux (ELF) support added.

i960 Hx/Jx support added.

i386/PowerPC gnu-win32 support added.

SCO ELF support added.  For OpenServer 5 targets (i386-unknown-sco3.2v5) the
default is to build COFF-only support.  To get a set of tools that generate ELF
(they'll understand both COFF and ELF), you must configure with
target=i386-unknown-sco3.2v5elf.

m88k-motorola-sysv3* support added.

Changes in 2.6:

Gas now directly supports macros, without requiring GASP.

Gas now has an MRI assembler compatibility mode.  Use -M or --mri to select MRI
mode.  The pseudo-op ``.mri 1'' will switch into the MRI mode until the ``.mri
0'' is seen; this can be convenient for inline assembler code.

Added --defsym SYM=VALUE option.

Added -mips4 support to MIPS assembler.

Added PIC support to Solaris and SPARC SunOS 4 assembler.

Changes in 2.4:

Converted this directory to use an autoconf-generated configure script.

ARM support, from Richard Earnshaw.

Updated VMS support, from Pat Rankin, including considerably improved debugging
support.

Support for the control registers in the 68060.

Handles (ignores) a new directive ".this_GCC_requires_the_GNU_assembler", to
provide for possible future gcc changes, for targets where gas provides some
features not available in the native assembler.  If the native assembler is
used, it should become obvious pretty quickly what the problem is.

Usage message is available with "--help".

The GNU Assembler Preprocessor (gasp) is included.  (Actually, it was in 2.3
also, but didn't get into the NEWS file.)

Weak symbol support for a.out.

A bug in the listing code which could cause an infinite loop has been fixed.
Bugs in listings when generating a COFF object file have also been fixed.

Initial i386-svr4 PIC implementation from Eric Youngdale, based on code by Paul
Kranenburg.

Improved Alpha support.  Immediate constants can have a much larger range now.
Support for the 21164 has been contributed by Digital.

Updated ns32k (pc532-mach, netbsd532) support from Ian Dall.

Changes in 2.3:

Mach i386 support, by David Mackenzie and Ken Raeburn.

RS/6000 and PowerPC support by Ian Taylor.

VMS command scripts (make-gas.com, config-gas.com) have been worked on a bit,
based on mail received from various people.  The `-h#' option should work again
too.

HP-PA work, by Jeff Law.  Note, for the PA, gas-2.3 has been designed to work
with gdb-4.12 and gcc-2.6.  As gcc-2.6 has not been released yet, a special
version of gcc-2.5.8 has been patched to work with gas-2.3.  You can retrieve
this special version of gcc-2.5.8 via anonymous ftp from jaguar.cs.utah.edu
in the "dist" directory.

Vax support in gas fixed for BSD, so it builds and seems to run a couple simple
tests okay.  I haven't put it through extensive testing.  (GNU make is
currently required for BSD 4.3 builds.)

Support for the DEC Alpha, running OSF/1 (ECOFF format).  The gas support is
based on code donated by CMU, which used an a.out-based format.  I'm afraid the
alpha-a.out support is pretty badly mangled, and much of it removed; making it
work will require rewriting it as BFD support for the format anyways.

Irix 5 support.

The test suites have been fixed up a bit, so that they should work with a
couple different versions of expect and dejagnu.

Symbols' values are now handled internally as expressions, permitting more
flexibility in evaluating them in some cases.  Some details of relocation
handling have also changed, and simple constant pool management has been added,
to make the Alpha port easier.

New option "--statistics" for printing out program run times.  This is intended
to be used with the gcc "-Q" option, which prints out times spent in various
phases of compilation.  (You should be able to get all of them printed out with
"gcc -Q -Wa,--statistics", I think.)

----------------------------------------------------------------

Changes in 2.2:

RS/6000 AIX and MIPS SGI Irix 5 support has been added.

Configurations that are still in development (and therefore are convenient to
have listed in configure.in) still get rejected without a minor change to
gas/Makefile.in, so people not doing development work shouldn't get the
impression that support for such configurations is actually believed to be
reliable.

The program name (usually "as") is printed when a fatal error message is
displayed.  This should prevent some confusion about the source of occasional
messages about "internal errors".

ELF support is falling into place.  Support for the 386 should be working.
Support for SPARC Solaris is in.  HPPA support from Utah is being integrated.

Symbol values are maintained as expressions instead of being immediately boiled
down to add-symbol, sub-symbol, and constant.  This permits slightly more
complex calculations involving symbols whose values are not alreadey known.

DBX-style debugging info ("stabs") is now supported for COFF formats.
If any stabs directives are seen in the source, GAS will create two new
sections: a ".stab" and a ".stabstr" section.  The format of the .stab
section is nearly identical to the a.out symbol format, and .stabstr is
its string table.  For this to be useful, you must have configured GCC
to generate stabs (by defining DBX_DEBUGGING_INFO), and must have a GDB
that can use the stab sections (4.11 or later).

LynxOS, on i386 and m68k platforms, is now supported.  SPARC LynxOS
support is in progress.

----------------------------------------------------------------

Changes in 2.1:

Several small fixes for i386-aix (PS/2) support from Minh Tran-Le have been
incorporated, but not well tested yet.

Altered the opcode table split for m68k; it should require less VM to compile
with gcc now.

Some minor adjustments to add (Convergent Technologies') Miniframe support,
suggested by Ronald Cole.

HPPA support (running OSF only, not HPUX) has been contributed by Utah.  This
includes improved ELF support, which I've started adapting for SPARC Solaris
2.x.  Integration isn't completely, so it probably won't work.

HP9000/300 support, donated by HP, has been merged in.

Ian Taylor has finished the MIPS ECOFF (Ultrix, Irix) support.

Better error messages for unsupported configurations (e.g., hppa-hpux).

Test suite framework is starting to become reasonable.

----------------------------------------------------------------

Changes in 2.0:

Mostly bug fixes.

Some more merging of BFD and ELF code, but ELF still doesn't work.

----------------------------------------------------------------

Changes in 1.94:

BFD merge is partly done.  Adventurous souls may try giving configure the
"--with-bfd-assembler" option.  Currently, ELF format requires it, a.out format
accepts it; SPARC CPU accepts it.  It's the default only for OS "elf" or
"solaris".  (ELF isn't really supported yet.  It needs work.  I've got some
code from Utah for HP-PA ELF, and from DG for m88k ELF, but they're not fully
merged yet.)

The 68K opcode table has been split in half.  It should now compile under gcc
without consuming ridiculous amounts of memory.

A couple data structures have been reduced in size.  This should result in
saving a little bit of space at runtime.

Support for MIPS, from OSF and Ralph Campbell, has been merged in.  The OSF
code provided ROSE format support, which I haven't merged in yet.  (I can make
it available, if anyone wants to try it out.)  Ralph's code, for BSD 4.4,
supports a.out format.  We don't have ECOFF support in just yet; it's coming.

Support for the Hitachi H8/500 has been added.

VMS host and target support should be working now, thanks chiefly to Eric
Youngdale.

----------------------------------------------------------------

Changes in 1.93.01:

For m68k, support for more processors has been added: 68040, CPU32, 68851.

For i386, .align is now power-of-two; was number-of-bytes.

For m68k, "%" is now accepted before register names.  For COFF format, which
doesn't use underscore prefixes for C labels, it is required, so variable "a0"
can be distinguished from the register.

Last public release was 1.38.  Lots of configuration changes since then, lots
of new CPUs and formats, lots of bugs fixed.


Local variables:
fill-column: 79
End:
