(1) describe -relax
(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.
This commit is contained in:
parent
400943fbac
commit
1c48127ed7
677
ld/ld.texinfo
677
ld/ld.texinfo
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue