(1) describe -relax
authorRoland Pesch <pesch@cygnus>
Fri, 24 Jan 1992 03:38:02 +0000 (03:38 +0000)
committerRoland Pesch <pesch@cygnus>
Fri, 24 Jan 1992 03:38:02 +0000 (03:38 +0000)
(2) restructure machine dependencies into separate chapter
(3) replace pretty, but quick to become obsolete, graph of BFD platforms
    vs architectures with extended excerpt from (and ref to ) objdump -i.

ld/ld.texinfo

index a698fc8bb1106b60921e4d35fffa12a95aa127a0..a7030323becffec3535c5c9eb5ad00e932492878 100644 (file)
@@ -2,8 +2,17 @@
 @setfilename ld.info
 @c $Id$
 @syncodeindex ky cp
-@c @smallbook
+@smallbook
 @c @cropmarks
+
+@ifinfo
+@format
+START-INFO-DIR-ENTRY
+* Ld: (ld).                    The GNU linker.
+END-INFO-DIR-ENTRY
+@end format
+@end ifinfo
+
 @ifinfo
 This file documents the GNU linker GLD.
 
@@ -83,49 +92,63 @@ This file documents the GNU linker gld.
 @end ifinfo
 
 @menu
-* Overview::                    Overview
-* Invocation::                  Invocation
-* Commands::                    Command Language
-* BFD::                         BFD
-* Index::                       Index
+* Overview::                   Overview
+* Invocation::                 Invocation
+* Commands::                   Command Language
+* Machine Dependent::          Machine Dependent Features
+* BFD::                                BFD
+* Index::                      Index
 
  --- The Detailed Node Listing ---
 
 Invocation
 
-* Options::                     Command Line Options
-* Environment::                 Environment Variables
+* Options::                    Command Line Options
+* Environment::                        Environment Variables
 
 Command Language
 
-* Scripts::                     Linker Scripts
-* Expressions::                 Expressions
-* MEMORY::                      MEMORY Command
-* SECTIONS::                    SECTIONS Command
-* Entry Point::                 The Entry Point
-* Other Commands::              Other Commands
+* Scripts::                    Linker Scripts
+* Expressions::                        Expressions
+* MEMORY::                     MEMORY Command
+* SECTIONS::                   SECTIONS Command
+* Entry Point::                        The Entry Point
+* Other Commands::             Other Commands
 
 Expressions
 
-* Integers::                    Integers
-* Symbols::                     Symbol Names
-* Location Counter::            The Location Counter
-* Operators::                   Operators
-* Evaluation::                  Evaluation
-* Assignment::                  Assignment: Defining Symbols
-* Built-ins::                   Built-In Functions
+* Integers::                   Integers
+* Symbols::                    Symbol Names
+* Location Counter::           The Location Counter
+* Operators::                  Operators
+* Evaluation::                 Evaluation
+* Assignment::                 Assignment: Defining Symbols
+* Built-ins::                  Built-In Functions
 
 SECTIONS Command
 
-* Section Definition::          Section Definitions
-* Section Contents::            Section Contents
-* Section Options::             Optional Section Attributes
+* Section Definition::         Section Definitions
+* Section Contents::           Section Contents
+* Section Options::            Optional Section Attributes
+
+Machine Dependent Features
+
+* H8/300::                     @code{gld} and the H8/300
+* i960::                       @code{gld} and the Intel 960 family
+* m68k::                       @code{gld} and the Motorola 68000 family
+* m88k::                       @code{gld} and the Motorola 880x0 family
+
+@code{gld} and the Intel 960 family
+
+* i960-arch::                  Linking for a Specific i960 Architecture
+* i960-emulation::             Emulating Other i960 Linkers
+* i960-commands::              Command Language Extensions for i960
 
 BFD
 
-* BFD outline::                 How it works: an outline of BFD
-* BFD information loss::        Information Loss
-* Mechanism::                   Mechanism 
+* BFD outline::                        How it works: an outline of BFD
+* BFD information loss::       Information Loss
+* Mechanism::                  Mechanism 
 @end menu
 
 @node Overview, Invocation, Top, Top
@@ -163,8 +186,8 @@ you have many choices to control its behavior through the command line,
 and through environment variables.
 
 @menu
-* Options::                     Command Line Options
-* Environment::                 Environment Variables
+* Options::                    Command Line Options
+* Environment::                        Environment Variables
 @end menu
 
 @node Options, Environment, Invocation, Invocation
@@ -181,13 +204,9 @@ gld [-o @var{output} ] @var{objfiles}@dots{}
     [ -c @var{commandfile} ]  [ -d | -dc | -dp ]  
     [ -defsym @var{symbol} = @var{expression} ]
     [ -e @var{entry} ]  [ -F ]  [ -F @var{format} ]
-@c -f was in old GNU linker, not currently in new
-@c   [ -f @var{fill} ]
     [ -format @var{input-format} ]  [ -g ]  [ -i ]
     [ -l@var{ar} ]  [ -L@var{searchdir} ]  [ -M | -m ]  
-    [ -n ]  [ -noinhibit-exec ]  [ -R @var{filename} ]
-@c -N and -z were alternatives to -n in old GNU linker, not curr in new
-@c    [ -N | -n | -z ]  [ -noinhibit-exec ]  [ -R @var{filename} ]
+    [ -n ]  [ -noinhibit-exec ]  [ -R @var{filename} ]  [ -relax ]
     [ -r | -Ur ]  [ -S ]  [ -s ]  [ -T @var{commandfile} ]  
     [ -Ttext @var{textorg} ]  [ -Tdata @var{dataorg} ]  [ -Tbss @var{bssorg} ]
     [ -t ]  [ -u @var{sym}]  [-v]  [ -X ]  [ -x ] 
@@ -243,36 +262,14 @@ The object files @var{objfiles} to be linked.
 @item -A@var{architecture}
 In the current release of @code{gld}, this option is useful only for the
 Intel 960 family of architectures.  In that @code{gld} configuration, the
-@var{architecture} argument is one of the two-letter names identifying
-members of the 960 family; the option specifies the desired output
-target, and warns of any incompatible instructions in the input files.
-It also modifies the linker's search strategy for archive libraries, to
-support the use of libraries specific to each particular
-architecture, by including in the search loop names suffixed with the
-string identifying the architecture.
-
-For example, if your @code{gld} command line included @w{@samp{-ACA}} as
-well as @w{@samp{-ltry}}, the linker would look (in its built-in search
-paths, and in any paths you specify with @code{-L}) for a library with
-the names
-@example
-try
-libtry.a
-tryca
-libtryca.a
-@end example
-@noindent
-The first two possibilities would be considered in any event; the last
-two are due to the use of @w{@samp{-ACA}}.
+@var{architecture} argument identifies the particular architecture in
+the 960 family, enabling some safeguards and modifying the
+archive-library search path.  @xref{i960-arch,,,Linking for a Specific
+i960 Architecture}, for details.
 
 Future releases of @code{gld} may support similar functionality for
 other architecture families.
 
-You can meaningfully use @code{-A} more than once on a command line, if
-an architecture family allows combination of target architectures; each
-use will add another pair of name variants to search for when @w{@code{-l}}
-specifies a library.
-
 @cindex binary input format
 @kindex -b @var{format}
 @cindex input format
@@ -451,6 +448,21 @@ relocate it or include it in the output.  This allows your output file
 to refer symbolically to absolute locations of memory defined in other
 programs.
 
+@item -relax
+@kindex -relax
+@cindex synthesizing linker
+@cindex relaxing addressing modes
+An option with machine dependent effects.  Currently this option is only
+supported on the H8/300; see @ref{H8/300,,@code{gld} and the H8/300}.
+
+On some platforms, use this option to perform global optimizations that
+become possible when the linker resolves addressing in your program, such
+as relaxing address modes and synthesizing new instructions in the
+output object file.  
+
+On platforms where this is not supported, @samp{-relax} is accepted, but
+has no effect.
+
 @item -r 
 @cindex partial link
 @cindex relocatable output
@@ -570,9 +582,9 @@ See description of @code{-N}.
 @node Environment,  , Options, Invocation
 @section Environment Variables
 
-@code{gld} always consults two environment variables: @code{GNUTARGET}
-and @code{LDEMULATION}.  Depending on the setting of the latter, other
-environment variables may be used as well.
+You can condition the behavior of @code{gld} with two environment
+variables: @code{GNUTARGET} and @code{LDEMULATION}.  Depending on the
+setting of the latter, other environment variables may be used as well.
 
 @kindex GNUTARGET
 @cindex default input format
@@ -628,84 +640,13 @@ A variant of the @code{gld} emulation; only differs in specifically
 setting the default BFD machine as @code{m68k}.
 
 @item LDEMULATION=gld960
-@kindex gld960
-@kindex G960LIB
-@kindex G960BASE
-@cindex i960
-Emulate the Intel port of the older @code{gld} for the i960
-architectures.  The default library search paths are taken from two
-other environment variables, @code{G960LIB} and @code{G960BASE}.  The
-default architecture is @code{i960}.  The default output format is set
-to @code{b.out.big}, and in fact the default output file name (if
-@code{-o} is not specified) is @code{b.out}, to reflect this variant
-format, for this emulation.
-
-@kindex GNU960
-This emulation can behave slightly differently depending on the setting
-of the @code{gld} compile-time switch @code{GNU960}.  If @code{gld} is
-compiled with @code{GNU960} defined, then an additional environment
-variable---@code{GNUTARGET}---is available; its value, if available,
-specifies some other default output format than @code{b.out.big}.
+@itemx LDEMULATION=lnk960
+Emulate older linkers for the i960 family; see @ref{i960,,@code{gld} and
+the Intel 960 family}, for details. 
 
 @item LDEMULATION=gldm88kbcs
-@kindex gldm88kbcs
-@cindex m88k
-Sets the output format to @code{m88kbcs} and the architecture to
-@code{m88k}.  Default library search paths are
-@example
-/lib
-/usr/lib
-/usr/local/lib
-@end example
-
-@item LDEMULATION=lnk960
-@kindex lnk960
-@cindex i960
-@cindex Architectures, i960 family
-Emulate the Intel linker @code{lnk960}.  The default output format is
-@code{coff-Intel-big}.  With this emulation, @code{gld}
-supports the additional script commands @code{HLL} and @code{SYSLIB} for
-specification of library archives.  This is the only emulation with
-extensive support for the @code{-A} (architecture) command-line option.
-By default, the architecture @code{CORE} is assumed, but you can choose
-additional features from the i960 architecture family by using one of
-the following with @code{-A} (or by using the @code{OUTPUT_ARCH} command
-from a script):
-@example
-CORE
-KB
-SB
-MC
-XA
-CA
-KA
-SA
-@end example
-
-The default libraries are chosen with some attention to the architecture
-selected; the core library @file{cg} is always included, but the library
-@code{fpg} is also used if you've specified any of the architectures
-@code{KA}, @code{SA}, or @code{CA}.
-
-@kindex GNU960
-Like @code{gld960}, this emulation uses additional environment variables
-to set the default library search paths.  Also like @code{gld960}, the
-behavior of this emulation is slightly different depending on whether
-@code{gld} itself was compiled with @code{GNU960} defined.
-
-@kindex G960BASE
-@kindex G960LIB
-@kindex I960BASE
-If your @code{gld} was compiled with @code{GNU960} defined, the default
-paths are taken from all three of @code{G960LIB}, @code{G960BASE}, and
-@code{I960BASE}.  For the first two, paths you supply are automatically
-suffixed with @samp{/lib/libcoff}; for the last, your path is
-automatically suffixed with @samp{/lib}.
-
-If your @code{gld} was @emph{not} compiled with @code{GNU960} defined,
-the default paths are taken from @code{I960BASE}, and @code{G960BASE} is
-only consulted if @code{I960BASE} is undefined.  In this case
-@code{G960LIB} is not used at all.
+Configure the linker for the Motorola 88K family.
+@xref{m88k,,@code{gld} and the Motorola 880x0 family}, for details.
 
 @item LDEMULATION=vanilla
 @kindex vanilla
@@ -716,10 +657,9 @@ This is the least specific setting for @code{gld}.  You can set
 setting makes @code{gld} take the default machine from the BFD
 configuration on your system; @code{a.out-generic-big} is the default
 target.  No other defaults are specified.
-
 @end table
 
-@node Commands, BFD, Invocation, Top
+@node Commands, Machine Dependent, Invocation, Top
 @chapter Command Language
 
 @cindex command files
@@ -749,12 +689,12 @@ You can also include a script directly on the @code{gld} command line,
 delimited by the characters @samp{@{} and @samp{@}}.
 
 @menu
-* Scripts::                     Linker Scripts
-* Expressions::                 Expressions
-* MEMORY::                      MEMORY Command
-* SECTIONS::                    SECTIONS Command
-* Entry Point::                 The Entry Point
-* Other Commands::              Other Commands
+* Scripts::                    Linker Scripts
+* Expressions::                        Expressions
+* MEMORY::                     MEMORY Command
+* SECTIONS::                   SECTIONS Command
+* Entry Point::                        The Entry Point
+* Other Commands::             Other Commands
 @end menu
 
 @node Scripts, Expressions, Commands, Commands
@@ -807,13 +747,13 @@ You may call special purpose built-in functions.
 @end itemize
 
 @menu
-* Integers::                    Integers
-* Symbols::                     Symbol Names
-* Location Counter::            The Location Counter
-* Operators::                   Operators
-* Evaluation::                  Evaluation
-* Assignment::                  Assignment: Defining Symbols
-* Built-ins::                   Built-In Functions
+* Integers::                   Integers
+* Symbols::                    Symbol Names
+* Location Counter::           The Location Counter
+* Operators::                  Operators
+* Evaluation::                 Evaluation
+* Assignment::                 Assignment: Defining Symbols
+* Built-ins::                  Built-In Functions
 @end menu
 
 @node Integers, Symbols, Expressions, Expressions
@@ -1335,9 +1275,9 @@ for example, the order of sections in the output file will match the
 order in the first input file.
 
 @menu
-* Section Definition::          Section Definitions
-* Section Contents::            Section Contents
-* Section Options::             Optional Section Attributes
+* Section Definition::         Section Definitions
+* Section Contents::           Section Contents
+* Section Options::            Optional Section Attributes
 @end menu
 
 @node Section Definition, Section Contents, SECTIONS, SECTIONS
@@ -1782,19 +1722,6 @@ This command has the same effect as the @code{-d} command-line option:
 to make @code{ld} assign space to common symbols even if a relocatable
 output file is specified (@code{-r}).
 
-@item HLL ( @var{file}, @var{file}, @dots{} )
-@kindex HLL ( @var{files} )
-@itemx HLL ( @var{file} @var{file} @dots{} )
-@itemx HLL ( )
-Include ``high-level libraries'' or archives as input files in the link.
-Using @code{HLL(@var{file}} in a linker script is equivalent to
-including @code{-l}@var{file} on the command line.  
-
-@cindex @code{lnk960} command @code{HLL}
-The @code{HLL} command is only supported when @code{gld} emulates
-@code{lnk960}, as specified by the @code{LDEMULATION} environment
-variable.
-
 @item INPUT ( @var{file}, @var{file}, @dots{} )
 @kindex INPUT ( @var{files} )
 @itemx INPUT ( @var{file} @var{file} @dots{} )
@@ -1852,17 +1779,6 @@ effect as @code{-L@var{path})} on the command line.
 Ensure that @var{filename} is the first input file used in the link
 process. 
 
-@item SYSLIB ( @var{file}, @var{file}, @dots{} )
-@kindex SYSLIB ( @var{file}, @var{file}, @dots{} )
-@itemx SYSLIB ( @var{file} @var{file} @dots{} )
-Use the named @var{file}s as binary input files, searching for them in
-the same list of paths as archives.
-
-@cindex @code{lnk960} command @code{SYSLIB}
-The @code{SYSLIB} command is only supported when @code{gld} emulates
-@code{lnk960}, as specified by the @code{LDEMULATION} environment
-variable.
-
 @item TARGET ( @var{format} )
 @cindex input file format
 @kindex TARGET ( @var{format} )
@@ -1882,7 +1798,225 @@ the default format configured for your machine in the BFD libraries.
 
 @end table
 
-@node BFD, Index, Commands, Top
+@node Machine Dependent, BFD, Commands, Top
+@chapter Machine Dependent Features
+
+@cindex machine dependencies
+@code{gld} has additional features on some platforms; the following
+sections describe them.  Machines where @code{gld} has no additional
+functionality are not listed.
+
+@menu
+* H8/300::                     @code{gld} and the H8/300
+* i960::                       @code{gld} and the Intel 960 family
+* m68k::                       @code{gld} and the Motorola 68000 family
+* m88k::                       @code{gld} and the Motorola 880x0 family
+@end menu
+
+@node H8/300, i960, Machine Dependent, Machine Dependent
+@section @code{gld} and the H8/300
+
+@cindex H8/300 support
+For the H8/300, @code{gld} can perform these global optimizations when
+you specify the @samp{-relax} command-line option.
+
+@table @emph
+@item relaxing address modes
+@cindex relaxing on i960
+@code{gld} finds all @code{jsr} and @code{jmp} instructions whose
+targets are within eight bits, and turns them into eight-bit
+program-counter relative @code{bsr} and @code{bra} instructions,
+respectively.
+
+@item synthesizing instructions
+@cindex synthesizing on i960
+@c FIXME: specifically mov.b, or any mov instructions really?
+@code{gld} finds all @code{mov.b} instructions which use the
+sixteen-bit absolute address form, but refer to the top
+page of memory, and changes them to use the eight-bit address form.
+(That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into
+@samp{mov.b @code{@@}@var{aa}:8} whenever the address @var{aa} is in the
+top page of memory).
+@end table
+
+@node i960, m68k, H8/300, Machine Dependent
+@section @code{gld} and the Intel 960 family
+
+@cindex i960 support
+@menu
+* i960-arch::                  Linking for a Specific i960 Architecture
+* i960-emulation::             Emulating Other i960 Linkers
+* i960-commands::              Command Language Extensions for i960
+@end menu
+
+@node i960-arch, i960-emulation, i960, i960
+@subsection Linking for a Specific i960 Architecture
+You can use the @samp{-A@var{architecture}} command line option to
+specify one of the two-letter names identifying members of the 960
+family; the option specifies the desired output target, and warns of any
+incompatible instructions in the input files.  It also modifies the
+linker's search strategy for archive libraries, to support the use of
+libraries specific to each particular architecture, by including in the
+search loop names suffixed with the string identifying the architecture.
+
+For example, if your @code{gld} command line included @w{@samp{-ACA}} as
+well as @w{@samp{-ltry}}, the linker would look (in its built-in search
+paths, and in any paths you specify with @code{-L}) for a library with
+the names
+@example
+try
+libtry.a
+tryca
+libtryca.a
+@end example
+@noindent
+The first two possibilities would be considered in any event; the last
+two are due to the use of @w{@samp{-ACA}}.
+
+You can meaningfully use @code{-A} more than once on a command line, since
+the 960 architecture family allows combination of target architectures; each
+use will add another pair of name variants to search for when @w{@code{-l}}
+specifies a library.
+
+@node i960-emulation, i960-commands, i960-arch, i960
+@subsection Emulating Other i960 Linkers
+You can set the @code{LDEMULATION} environment variable
+(@pxref{Environment,,Environment Variables}) to make
+@code{gld} more compatible with two older Intel 960 linkers:
+
+@table @code
+@item LDEMULATION=gld960
+@kindex gld960
+@kindex G960LIB
+@kindex G960BASE
+@cindex i960
+Emulate the Intel port of the older @code{gld} for the i960
+architectures.  The default library search paths are taken from two
+other environment variables, @code{G960LIB} and @code{G960BASE}.  The
+default architecture is @code{i960}.  The default output format is set
+to @code{b.out.big}, and in fact the default output file name (if
+@code{-o} is not specified) is @code{b.out}, to reflect this variant
+format, for this emulation.
+
+@kindex GNU960
+This emulation can behave slightly differently depending on the setting
+of the @code{gld} compile-time switch @code{GNU960}.  If @code{gld} is
+compiled with @code{GNU960} defined, then an additional environment
+variable---@code{GNUTARGET}---is available; its value, if available,
+specifies some other default output format than @code{b.out.big}.
+
+@item LDEMULATION=lnk960
+@kindex lnk960
+@cindex i960
+@cindex Architectures, i960 family
+Emulate the Intel linker @code{lnk960}.  The default output format is
+@code{coff-Intel-big}.  With this emulation, @code{gld}
+supports the additional script commands @code{HLL} and @code{SYSLIB} for
+specification of library archives.  This is the only emulation with
+extensive support for the @code{-A} (architecture) command-line option.
+By default, the architecture @code{CORE} is assumed, but you can choose
+additional features from the i960 architecture family by using one of
+the following with @code{-A} (or by using the @code{OUTPUT_ARCH} command
+from a script):
+@example
+CORE
+KB
+SB
+MC
+XA
+CA
+KA
+SA
+@end example
+
+The default libraries are chosen with some attention to the architecture
+selected; the core library @file{cg} is always included, but the library
+@code{fpg} is also used if you've specified any of the architectures
+@code{KA}, @code{SA}, or @code{CA}.
+
+@kindex GNU960
+Like @code{gld960}, this emulation uses additional environment variables
+to set the default library search paths.  Also like @code{gld960}, the
+behavior of this emulation is slightly different depending on whether
+@code{gld} itself was compiled with @code{GNU960} defined.
+
+@kindex G960BASE
+@kindex G960LIB
+@kindex I960BASE
+If your @code{gld} was compiled with @code{GNU960} defined, the default
+paths are taken from all three of @code{G960LIB}, @code{G960BASE}, and
+@code{I960BASE}.  For the first two, paths you supply are automatically
+suffixed with @samp{/lib/libcoff}; for the last, your path is
+automatically suffixed with @samp{/lib}.
+
+If your @code{gld} was @emph{not} compiled with @code{GNU960} defined,
+the default paths are taken from @code{I960BASE}, and @code{G960BASE} is
+only consulted if @code{I960BASE} is undefined.  In this case
+@code{G960LIB} is not used at all.
+@end table
+
+@node i960-commands,  , i960-emulation, i960
+@subsection Command Language Extensions for i960
+
+@code{gld} understands the following additional commands when
+@code{LDEMULATION} is set to @samp{lnk960}:
+
+@table @code
+@item HLL ( @var{file}, @var{file}, @dots{} )
+@itemx HLL ( @var{file} @var{file} @dots{} )
+@itemx HLL ( )
+@kindex HLL ( @var{files} )
+Include ``high-level libraries'' or archives as input files in the link.
+Using @code{HLL(@var{file}} in a linker script is equivalent to
+including @code{-l}@var{file} on the command line.  
+
+@cindex @code{lnk960} command @code{HLL}
+The @code{HLL} command is only supported when @code{gld} emulates
+@code{lnk960}, as specified by the @code{LDEMULATION} environment
+variable.
+
+@item SYSLIB ( @var{file}, @var{file}, @dots{} )
+@itemx SYSLIB ( @var{file} @var{file} @dots{} )
+@kindex SYSLIB ( @var{file}, @var{file}, @dots{} )
+Use the named @var{file}s as binary input files, searching for them in
+the same list of paths as archives.
+
+@cindex @code{lnk960} command @code{SYSLIB}
+The @code{SYSLIB} command is only supported when @code{gld} emulates
+@code{lnk960}, as specified by the @code{LDEMULATION} environment
+variable.
+
+@end table
+
+@node m68k, m88k, i960, Machine Dependent
+@section @code{gld} and the Motorola 680x0 family
+
+@cindex m68k support
+You can set the environment variable @code{LDEMULATION} to @samp{gld68k}
+for closer compatibility with the older GNU linker on Motorola 680x0
+platforms.  This emulation is a variant of the @code{gld} emulation; it
+only differs in specifically setting the default BFD machine as
+@code{m68k}.  @xref{Environment,,Environment Variables}.
+
+@node m88k,  , m68k, Machine Dependent
+@section @code{gld} and the Motorola 880x0 family
+
+@cindex m88k support
+@kindex gldm88kbcs
+You can configure the linker to conform to the Motorola 88K BCS by
+setting the environment variable @code{LDEMULATION} to @samp{gldm88kbcs}.
+This sets the output format to @code{m88kbcs} and the architecture to
+@code{m88k}.  Default library search paths are
+@example
+/lib
+/usr/lib
+/usr/local/lib
+@end example
+
+For other settings of @code{LDEMULATION}, consult
+@ref{Environment,,Environment Variables}.
+
+@node BFD, Index, Machine Dependent, Top
 @chapter BFD
 
 @cindex back end
@@ -1891,83 +2025,109 @@ The linker accesses object and archive files using the BFD libraries.
 These libraries allow the linker to use the same routines to operate on
 object files whatever the object file format.  A different object file
 format can be supported simply by creating a new BFD back end and adding
-it to the library.  BFD supports the following combinations of
-architectures (row labels below) and object formats (column headings):
+it to the library.  You can use @code{objdump -i}
+(@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}) to
+list all the formats available for each architecture under BFD.  This
+was the list of formats, and of architectures supported for each format,
+as of the time this manual was prepared:
 @cindex formats available
 @cindex architectures available
-@c TEXI2ROFF-KILL
-@ifinfo
-@c END TEXI2ROFF-KILL
 @example
-               |ieee
-               |  |oasys
-               |  |  |a.out-generic-little
-               |  |  |  |a.out-generic-big
-               |  |  |  |  |m88kbcs
-               |  |  |  |  |  |srec
-               |  |  |  |  |  |  |coff-Intel-little
-               |  |  |  |  |  |  |  |coff-Intel-big
-               |  |  |  |  |  |  |  |  |b.out.little
-               |  |  |  |  |  |  |  |  |  |b.out.big
-               |  |  |  |  |  |  |  |  |  |
-           m68k|**|**|  |  |  |**|  |  |  |
-            vax|**|**|  |  |  |**|  |  |  |
-           i960|**|**|  |  |  |**|**|**|**|**
-           a29k|**|**|**|**|  |**|  |  |  |
-          sparc|**|**|**|**|  |**|  |  |  |
-           mips|**|**|  |  |  |**|  |  |  |
-           i386|**|**|**|**|  |**|  |  |  |
-          ns32k|**|**|  |  |  |**|  |  |  |
-          tahoe|**|**|  |  |  |**|  |  |  |
-           i860|**|**|  |  |  |**|  |  |  |
-           romp|**|**|  |  |  |**|  |  |  |
-        alliant|**|**|  |  |  |**|  |  |  |
-         convex|**|**|  |  |  |**|  |  |  |
-           m88k|**|**|  |  |**|**|  |  |  |
-        pyramid|**|**|  |  |  |**|  |  |  |
-         H8/300|**|**|  |  |  |**|  |  |  |
-
+BFD header file version 0.18
+a.out-i386
+ (header big endian, data big endian)
+  m68k:68020
+  a29k
+  sparc
+  i386
+a.out-sunos-big
+ (header big endian, data big endian)
+  m68k:68020
+  a29k
+  sparc
+  i386
+b.out.big
+ (header big endian, data little endian)
+  i960:core
+b.out.little
+ (header little endian, data little endian)
+  i960:core
+coff-a29k-big
+ (header big endian, data big endian)
+  a29k
+coff-h8300
+ (header big endian, data big endian)
+  H8/300
+coff-i386
+ (header little endian, data little endian)
+  i386
+coff-Intel-big
+ (header big endian, data little endian)
+  i960:core
+coff-Intel-little
+ (header little endian, data little endian)
+  i960:core
+coff-m68k
+ (header big endian, data big endian)
+  m68k:68020
+coff-m88kbcs
+ (header big endian, data big endian)
+  m88k:88100
+ecoff-bigmips
+ (header big endian, data big endian)
+  mips
+ecoff-littlemips
+ (header little endian, data little endian)
+  mips
+elf-big
+ (header big endian, data big endian)
+  m68k:68020
+  vax
+  i960:core
+  a29k
+  sparc
+  mips
+  i386
+  m88k:88100
+  H8/300
+  rs6000:6000
+elf-little
+ (header little endian, data little endian)
+  m68k:68020
+  vax
+  i960:core
+  a29k
+  sparc
+  mips
+  i386
+  m88k:88100
+  H8/300
+  rs6000:6000
+ieee
+ (header big endian, data big endian)
+  m68k:68020
+  vax
+  i960:core
+  a29k
+  sparc
+  mips
+  i386
+  m88k:88100
+  H8/300
+  rs6000:6000
+srec
+ (header big endian, data big endian)
+  m68k:68020
+  vax
+  i960:core
+  a29k
+  sparc
+  mips
+  i386
+  m88k:88100
+  H8/300
+  rs6000:6000
 @end example
-@c TEXI2ROFF-KILL
-@end ifinfo
-@tex
-\def\sqbull{\vrule height12pt width 10pt depth 4pt}
-\vskip\baselineskip
-\vbox{\offinterlineskip
-\halign
-{\strut\hfil #\ &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em
-&\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#&\hskip .5em #\hskip .5em &\vrule#\cr
-                    &&\multispan{20}\quad\vbox{\hrule}\cr
-                    &&\multispan{20}\quad\code{ieee}\hfil\cr
-                    &&  &&\multispan{18}\quad\code{oasys}\hfil\cr
-                    &&  &&  &&\multispan{16}\quad\code{a.out-generic-little}\hfil\cr
-                    &&  &&  &&  &&\multispan{14}\quad\code{a.out-generic-big}\hfil\cr
-                    &&  &&  &&  &&  &&\multispan{12}\quad\code{m88kbcs}\hfil\cr
-                    &&  &&  &&  &&  &&  &&\multispan{10}\quad\code{srec}\hfil\cr
-                    &&  &&  &&  &&  &&  &&  &&\multispan8\quad\code{coff-Intel-little}\hfil\cr
-                    &&  &&  &&  &&  &&  &&  &&  &&\multispan6\quad\code{coff-Intel-big}\hfil\cr
-                    &&  &&  &&  &&  &&  &&  &&  &&
-&&\multispan4\quad\code{b.out.little}\hfil \cr
-                    &&  &&  &&  &&  &&  &&  &&  &&  &&  &&\multispan2\quad\code{b.out.big}\hidewidth\cr
-           \code{m68k}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-            \code{vax}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{i960}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&\sqbull&&\sqbull&&\sqbull&&\sqbull  &\cr
-           \code{a29k}&&\sqbull&&\sqbull&&\sqbull&&\sqbull&&  &&\sqbull&&  &&  &&  &&  &\cr
-          \code{sparc}&&\sqbull&&\sqbull&&\sqbull&&\sqbull&&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{mips}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{i386}&&\sqbull&&\sqbull&&\sqbull&&\sqbull&&  &&\sqbull&&  &&  &&  &&  &\cr
-          \code{ns32k}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-          \code{tahoe}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{i860}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{romp}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-        \code{alliant}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-         \code{convex}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-           \code{m88k}&&\sqbull&&\sqbull&&  &&  &&\sqbull&&\sqbull&&  &&  &&  &&  &\cr
-        \code{pyramid}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-         \code{H8/300}&&\sqbull&&\sqbull&&  &&  &&  &&\sqbull&&  &&  &&  &&  &\cr
-}}
-@end tex
-@c END TEXI2ROFF-KILL
 
 @cindex BFD requirements
 @cindex requirements for BFD
@@ -1985,9 +2145,9 @@ useful information can be lost using the BFD mechanism; during
 conversion and during output. @xref{BFD information loss}.
 
 @menu
-* BFD outline::                 How it works: an outline of BFD
-* BFD information loss::        Information Loss
-* Mechanism::                   Mechanism 
+* BFD outline::                        How it works: an outline of BFD
+* BFD information loss::       Information Loss
+* Mechanism::                  Mechanism 
 @end menu
 
 @node BFD outline, BFD information loss, BFD, BFD
@@ -2121,6 +2281,7 @@ A relocation record requesting this relocation type would point
 indirectly to a routine to perform this, so the relocation may be
 performed on a byte being written to a COFF file, even though 68k COFF
 has no such relocation type.
+@c FIXME why specific reference to 68K above?
 
 @item line numbers
 Object formats can contain, for debugging purposes, some form of mapping