Restore docn for -N, now reintroduced into this generation of linker.

This commit is contained in:
Roland Pesch
1992-08-08 00:31:17 +00:00
parent ae475b39b2
commit 246504a5c4

View File

@ -1,6 +1,5 @@
\input texinfo \input texinfo
@setfilename ld.info @setfilename ld.info
@c $Id$
@syncodeindex ky cp @syncodeindex ky cp
@c @smallbook @c @smallbook
@c @cropmarks @c @cropmarks
@ -14,7 +13,7 @@ END-INFO-DIR-ENTRY
@end ifinfo @end ifinfo
@ifinfo @ifinfo
This file documents the GNU linker GLD. This file documents the GNU linker LD.
Copyright (C) 1991, 1992 Free Software Foundation, Inc. Copyright (C) 1991, 1992 Free Software Foundation, Inc.
@ -45,12 +44,12 @@ original English.
@iftex @iftex
@finalout @finalout
@setchapternewpage odd @setchapternewpage odd
@settitle GLD, the GNU linker @settitle Using LD, the GNU linker
@titlepage @titlepage
@title gld @title Using ld
@subtitle The GNU linker @subtitle The GNU linker
@sp 1 @sp 1
@subtitle Second Edition---@code{gld} version 2.0 @subtitle Second Edition---@code{ld} version 2.0
@subtitle January 1992 @subtitle January 1992
@author Steve Chamberlain and Roland Pesch @author Steve Chamberlain and Roland Pesch
@author Cygnus Support @author Cygnus Support
@ -62,7 +61,7 @@ original English.
{\parskip=0pt {\parskip=0pt
\hfill Cygnus Support\par \hfill Cygnus Support\par
\hfill steve\@cygnus.com, pesch\@cygnus.com\par \hfill steve\@cygnus.com, pesch\@cygnus.com\par
\hfill {\it GLD, the GNU linker}, \manvers\par \hfill {\it Using LD, the GNU linker}, \manvers\par
\hfill \TeX{}info \texinfoversion\par \hfill \TeX{}info \texinfoversion\par
} }
\global\parindent=0pt % Steve likes it this way. \global\parindent=0pt % Steve likes it this way.
@ -88,7 +87,7 @@ into another language, under the above conditions for modified versions.
@node Top, Overview, (dir), (dir) @node Top, Overview, (dir), (dir)
@ifinfo @ifinfo
This file documents the GNU linker gld. This file documents the GNU linker ld.
@end ifinfo @end ifinfo
@menu @menu
@ -134,12 +133,12 @@ SECTIONS Command
Machine Dependent Features Machine Dependent Features
* H8/300:: @code{gld} and the H8/300 * H8/300:: @code{ld} and the H8/300
* i960:: @code{gld} and the Intel 960 family * i960:: @code{ld} and the Intel 960 family
* m68k:: @code{gld} and the Motorola 68000 family * m68k:: @code{ld} and the Motorola 68000 family
* m88k:: @code{gld} and the Motorola 880x0 family * m88k:: @code{ld} and the Motorola 880x0 family
@code{gld} and the Intel 960 family @code{ld} and the Intel 960 family
* i960-arch:: Linking for a Specific i960 Architecture * i960-arch:: Linking for a Specific i960 Architecture
* i960-emulation:: Emulating Other i960 Linkers * i960-emulation:: Emulating Other i960 Linkers
@ -157,16 +156,16 @@ BFD
@cindex GNU linker @cindex GNU linker
@cindex what is this? @cindex what is this?
@code{gld} combines a number of object and archive files, relocates @code{ld} combines a number of object and archive files, relocates
their data and ties up symbol references. Often the last step in their data and ties up symbol references. Often the last step in
building a new compiled program to run is a call to @code{gld}. building a new compiled program to run is a call to @code{ld}.
@code{gld} accepts Linker Command Language files written in @code{ld} accepts Linker Command Language files written in
a superset of AT&T's Link Editor Command Language syntax, a superset of AT&T's Link Editor Command Language syntax,
to provide explicit and total control over the linking process. to provide explicit and total control over the linking process.
This version of @code{gld} uses the general purpose BFD libraries This version of @code{ld} uses the general purpose BFD libraries
to operate on object files. This allows @code{gld} to read, combine, and to operate on object files. This allows @code{ld} to read, combine, and
write object files in many different formats---for example, COFF or write object files in many different formats---for example, COFF or
@code{a.out}. Different formats may be linked together to produce any @code{a.out}. Different formats may be linked together to produce any
available kind of object file. @xref{BFD} for a list of formats available kind of object file. @xref{BFD} for a list of formats
@ -175,13 +174,13 @@ supported on various architectures.
Aside from its flexibility, the GNU linker is more helpful than other Aside from its flexibility, the GNU linker is more helpful than other
linkers in providing diagnostic information. Many linkers abandon linkers in providing diagnostic information. Many linkers abandon
execution immediately upon encountering an error; whenever possible, execution immediately upon encountering an error; whenever possible,
@code{gld} continues executing, allowing you to identify other errors @code{ld} continues executing, allowing you to identify other errors
(or, in some cases, to get an output file in spite of the error). (or, in some cases, to get an output file in spite of the error).
@node Invocation, Commands, Overview, Top @node Invocation, Commands, Overview, Top
@chapter Invocation @chapter Invocation
The GNU linker @code{gld} is meant to cover a broad range of situations, The GNU linker @code{ld} is meant to cover a broad range of situations,
and to be as compatible as possible with other linkers. As a result, and to be as compatible as possible with other linkers. As a result,
you have many choices to control its behavior through the command line, you have many choices to control its behavior through the command line,
and through environment variables. and through environment variables.
@ -196,18 +195,18 @@ and through environment variables.
@cindex command line @cindex command line
@cindex options @cindex options
Here is a sketch of the options you can use on the @code{gld} command Here is a sketch of the options you can use on the @code{ld} command
line: line:
@smallexample @smallexample
gld [-o @var{output} ] @var{objfiles}@dots{} ld [-o @var{output} ] @var{objfiles}@dots{}
[ -A@var{architecture} ] [ -b @var{input-format} ] [ -Bstatic ] [ -A@var{architecture} ] [ -b @var{input-format} ] [ -Bstatic ]
[ -c @var{MRI-commandfile} ] [ -d | -dc | -dp ] [ -c @var{MRI-commandfile} ] [ -d | -dc | -dp ]
[ -defsym @var{symbol} = @var{expression} ] [ -defsym @var{symbol} = @var{expression} ]
[ -e @var{entry} ] [ -F ] [ -F @var{format} ] [ -e @var{entry} ] [ -F ] [ -F @var{format} ]
[ -format @var{input-format} ] [ -g ] [ -i ] [ -format @var{input-format} ] [ -g ] [ -i ]
[ -l@var{ar} ] [ -L@var{searchdir} ] [ -M | -m ] [ -l@var{ar} ] [ -L@var{searchdir} ] [ -M | -m ]
[ -n ] [ -noinhibit-exec ] [ -R @var{filename} ] [ -relax ] [ -n | -N ] [ -noinhibit-exec ] [ -R @var{filename} ] [ -relax ]
[ -r | -Ur ] [ -S ] [ -s ] [ -T @var{commandfile} ] [ -r | -Ur ] [ -S ] [ -s ] [ -T @var{commandfile} ]
[ -Ttext @var{textorg} ] [ -Tdata @var{dataorg} ] [ -Tbss @var{bssorg} ] [ -Ttext @var{textorg} ] [ -Tdata @var{dataorg} ] [ -Tbss @var{bssorg} ]
[ -t ] [ -u @var{sym}] [-v] [ -X ] [ -x ] [ -t ] [ -u @var{sym}] [-v] [ -X ] [ -x ]
@ -217,18 +216,18 @@ gld [-o @var{output} ] @var{objfiles}@dots{}
This plethora of command-line options may seem intimidating, but in This plethora of command-line options may seem intimidating, but in
actual practice few of them are used in any particular context. actual practice few of them are used in any particular context.
@cindex standard Unix system @cindex standard Unix system
For instance, a frequent use of @code{gld} is to link standard Unix For instance, a frequent use of @code{ld} is to link standard Unix
object files on a standard, supported Unix system. On such a system, to object files on a standard, supported Unix system. On such a system, to
link a file @code{hello.o}: link a file @code{hello.o}:
@example @example
$ gld -o output /lib/crt0.o hello.o -lc $ ld -o output /lib/crt0.o hello.o -lc
@end example @end example
This tells @code{gld} to produce a file called @code{output} as the This tells @code{ld} to produce a file called @code{output} as the
result of linking the file @code{/lib/crt0.o} with @code{hello.o} and result of linking the file @code{/lib/crt0.o} with @code{hello.o} and
the library @code{libc.a} which will come from the standard search the library @code{libc.a} which will come from the standard search
directories. directories.
The command-line options to @code{gld} may be specified in any order, and The command-line options to @code{ld} may be specified in any order, and
may be repeated at will. For the most part, repeating an option with a may be repeated at will. For the most part, repeating an option with a
different argument will either have no further effect, or override prior different argument will either have no further effect, or override prior
occurrences (those further to the left on the command line) of an occurrences (those further to the left on the command line) of an
@ -261,14 +260,14 @@ The object files @var{objfiles} to be linked.
@cindex architectures @cindex architectures
@kindex -A@var{arch} @kindex -A@var{arch}
@item -A@var{architecture} @item -A@var{architecture}
In the current release of @code{gld}, this option is useful only for the In the current release of @code{ld}, this option is useful only for the
Intel 960 family of architectures. In that @code{gld} configuration, the Intel 960 family of architectures. In that @code{ld} configuration, the
@var{architecture} argument identifies the particular architecture in @var{architecture} argument identifies the particular architecture in
the 960 family, enabling some safeguards and modifying the the 960 family, enabling some safeguards and modifying the
archive-library search path. @xref{i960-arch,,,Linking for a Specific archive-library search path. @xref{i960-arch,,,Linking for a Specific
i960 Architecture}, for details. i960 Architecture}, for details.
Future releases of @code{gld} may support similar functionality for Future releases of @code{ld} may support similar functionality for
other architecture families. other architecture families.
@cindex binary input format @cindex binary input format
@ -278,7 +277,7 @@ other architecture families.
@cindex input format @cindex input format
Specify the binary format for input object files that follow this option Specify the binary format for input object files that follow this option
on the command line. You don't usually need to specify this, as on the command line. You don't usually need to specify this, as
@code{gld} is configured to expect as a default input format the most @code{ld} is configured to expect as a default input format the most
usual format on each machine. @var{input-format} is a text string, the usual format on each machine. @var{input-format} is a text string, the
name of a particular format supported by the BFD libraries. @xref{BFD}. name of a particular format supported by the BFD libraries. @xref{BFD}.
@code{-format @var{input-format}} has the same effect.@refill @code{-format @var{input-format}} has the same effect.@refill
@ -296,7 +295,7 @@ format from a script, using the command @code{TARGET}.
@kindex -Bstatic @kindex -Bstatic
@item -Bstatic @item -Bstatic
This flag is accepted for command-line compatibility with the SunOS linker, This flag is accepted for command-line compatibility with the SunOS linker,
but has no effect on @code{gld}. but has no effect on @code{ld}.
@kindex -c @var{MRI-cmdfile} @kindex -c @var{MRI-cmdfile}
@cindex compatibility, MRI @cindex compatibility, MRI
@ -359,7 +358,7 @@ there is a gap between explicitly specified section addresses
@itemx -F@var{format} @itemx -F@var{format}
Some older linkers used this option throughout a compilation toolchain Some older linkers used this option throughout a compilation toolchain
for specifying object-file format for both input and output object for specifying object-file format for both input and output object
files. @code{gld}'s mechanisms (the @code{-b} or @code{-format} options files. @code{ld}'s mechanisms (the @code{-b} or @code{-format} options
for input files, the @code{TARGET} command in linker scripts for output for input files, the @code{TARGET} command in linker scripts for output
files, the @code{GNUTARGET} environment variable) are more flexible, but files, the @code{GNUTARGET} environment variable) are more flexible, but
but it accepts (and ignores) the @code{-F} option flag for compatibility but it accepts (and ignores) the @code{-F} option flag for compatibility
@ -390,11 +389,11 @@ specified.
@kindex -L@var{dir} @kindex -L@var{dir}
@item -L@var{searchdir} @item -L@var{searchdir}
This command adds path @var{searchdir} to the list of paths that This command adds path @var{searchdir} to the list of paths that
@code{gld} will search for archive libraries. You may use this option @code{ld} will search for archive libraries. You may use this option
any number of times. any number of times.
The default set of paths searched (without being specified with The default set of paths searched (without being specified with
@code{-L}) depends on what emulation mode @code{gld} is using, and in @code{-L}) depends on what emulation mode @code{ld} is using, and in
some cases also on how it was configured. @xref{Environment}. The some cases also on how it was configured. @xref{Environment}. The
paths can also be specified in a link script with the @code{SEARCH_DIR} paths can also be specified in a link script with the @code{SEARCH_DIR}
command. command.
@ -408,8 +407,6 @@ Print (to the standard output file) a link map---diagnostic information
about where symbols are mapped by @code{ld}, and information on global about where symbols are mapped by @code{ld}, and information on global
common storage allocation. common storage allocation.
@ignore
@c -N in older GNU linker, not in new
@kindex -N @kindex -N
@cindex read/write from cmd line @cindex read/write from cmd line
@kindex OMAGIC @kindex OMAGIC
@ -417,7 +414,9 @@ common storage allocation.
specifies readable and writable @code{text} and @code{data} sections. If specifies readable and writable @code{text} and @code{data} sections. If
the output format supports Unix style magic numbers, the output is the output format supports Unix style magic numbers, the output is
marked as @code{OMAGIC}. marked as @code{OMAGIC}.
@end ignore
When you use the @samp{-N} option, the linker does not page-align the
data segment.
@item -n @item -n
@kindex -n @kindex -n
@ -453,7 +452,7 @@ programs.
@cindex synthesizing linker @cindex synthesizing linker
@cindex relaxing addressing modes @cindex relaxing addressing modes
An option with machine dependent effects. Currently this option is only 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}. supported on the H8/300; see @ref{H8/300,,@code{ld} and the H8/300}.
On some platforms, use this option to perform global optimizations that On some platforms, use this option to perform global optimizations that
become possible when the linker resolves addressing in your program, such become possible when the linker resolves addressing in your program, such
@ -468,7 +467,7 @@ has no effect.
@cindex relocatable output @cindex relocatable output
@kindex -r @kindex -r
Generates relocatable output---i.e., generate an output file that can in Generates relocatable output---i.e., generate an output file that can in
turn serve as input to @code{gld}. This is often called @dfn{partial turn serve as input to @code{ld}. This is often called @dfn{partial
linking}. As a side effect, in environments that support standard Unix linking}. As a side effect, in environments that support standard Unix
magic numbers, this option also sets the output file's magic number to magic numbers, this option also sets the output file's magic number to
@code{OMAGIC}. @code{OMAGIC}.
@ -515,8 +514,8 @@ Use @var{org} as the starting address for---respectively---the
@itemx -T@var{commandfile} @itemx -T@var{commandfile}
@kindex -T @var{script} @kindex -T @var{script}
@cindex script files @cindex script files
Directs @code{gld} to read link commands from the file Directs @code{ld} to read link commands from the file
@var{commandfile}. These commands will completely override @code{gld}'s @var{commandfile}. These commands will completely override @code{ld}'s
default link format (rather than adding to it); @var{commandfile} must default link format (rather than adding to it); @var{commandfile} must
specify everything necessary to describe the target format. specify everything necessary to describe the target format.
@xref{Commands}. @xref{Commands}.
@ -545,13 +544,13 @@ arguments to enter additional undefined symbols.
@cindex constructors @cindex constructors
For anything other than C++ programs, this option is equivalent to For anything other than C++ programs, this option is equivalent to
@code{-r}: it generates relocatable output---i.e., an output file that can in @code{-r}: it generates relocatable output---i.e., an output file that can in
turn serve as input to @code{gld}. When linking C++ programs, @code{-Ur} turn serve as input to @code{ld}. When linking C++ programs, @code{-Ur}
@emph{will} resolve references to constructors, unlike @code{-r}. @emph{will} resolve references to constructors, unlike @code{-r}.
@item -v @item -v
@kindex -v @kindex -v
@cindex version @cindex version
Display the version number for @code{gld}. Display the version number for @code{ld}.
@item -X @item -X
@kindex -X @kindex -X
@ -589,7 +588,7 @@ See description of @code{-N}.
@node Environment, , Options, Invocation @node Environment, , Options, Invocation
@section Environment Variables @section Environment Variables
You can change the behavior of @code{gld} with two environment You can change the behavior of @code{ld} with two environment
variables: @code{GNUTARGET} and @code{LDEMULATION}. Depending on the variables: @code{GNUTARGET} and @code{LDEMULATION}. Depending on the
setting of the latter, other environment variables may be used as well. setting of the latter, other environment variables may be used as well.
@ -598,7 +597,7 @@ setting of the latter, other environment variables may be used as well.
@code{GNUTARGET} determines the input-file object format if you don't @code{GNUTARGET} determines the input-file object format if you don't
use @code{-b} (or its synonym @code{-format}). Its value should be one use @code{-b} (or its synonym @code{-format}). Its value should be one
of the BFD names for an input format (@pxref{BFD}). If there is no of the BFD names for an input format (@pxref{BFD}). If there is no
@code{GNUTARGET} in the environment, @code{gld} uses the natural format @code{GNUTARGET} in the environment, @code{ld} uses the natural format
of the host. If @code{GNUTARGET} is set to @code{default} then BFD attempts to discover the of the host. If @code{GNUTARGET} is set to @code{default} then BFD attempts to discover the
input format by examining binary input files; this method often input format by examining binary input files; this method often
succeeds, but there are potential ambiguities, since there is no method succeeds, but there are potential ambiguities, since there is no method
@ -610,8 +609,8 @@ so ambiguities are resolved in favor of convention.
@kindex LDEMULATION @kindex LDEMULATION
@cindex emulation @cindex emulation
@cindex environment vars @cindex environment vars
@code{LDEMULATION} controls some aspects of @code{gld}'s dominant @code{LDEMULATION} controls some aspects of @code{ld}'s dominant
personality. Although @code{gld} is flexible enough to permit its use personality. Although @code{ld} is flexible enough to permit its use
in many contexts regardless of configuration, you can use this variable in many contexts regardless of configuration, you can use this variable
to make it act more like one or another older linker by default. to make it act more like one or another older linker by default.
@ -648,7 +647,7 @@ setting the default BFD machine as @code{m68k}.
@item LDEMULATION=gld960 @item LDEMULATION=gld960
@itemx LDEMULATION=lnk960 @itemx LDEMULATION=lnk960
Emulate older linkers for the i960 family; see @ref{i960,,@code{gld} and Emulate older linkers for the i960 family; see @ref{i960,,@code{ld} and
the Intel 960 family}, for details. the Intel 960 family}, for details.
@item LDEMULATION=gldm88kbcs @item LDEMULATION=gldm88kbcs
@ -659,9 +658,9 @@ Configure the linker for the Motorola 88K family.
@kindex vanilla @kindex vanilla
@cindex emulation, disabling @cindex emulation, disabling
@cindex disabling emulation @cindex disabling emulation
This is the least specific setting for @code{gld}. You can set This is the least specific setting for @code{ld}. You can set
@code{LDEMULATION=vanilla} to disable emulation of other linkers. This @code{LDEMULATION=vanilla} to disable emulation of other linkers. This
setting makes @code{gld} take the default machine from the BFD setting makes @code{ld} take the default machine from the BFD
configuration on your system; @code{a.out-generic-big} is the default configuration on your system; @code{a.out-generic-big} is the default
target. No other defaults are specified. target. No other defaults are specified.
@end table @end table
@ -692,7 +691,7 @@ an ordinary file. If the linker opens a file which it cannot recognize
as a supported object or archive format, it tries to interpret the file as a supported object or archive format, it tries to interpret the file
as a command file. as a command file.
You can also include a script directly on the @code{gld} command line, You can also include a script directly on the @code{ld} command line,
delimited by the characters @samp{@{} and @samp{@}}. delimited by the characters @samp{@{} and @samp{@}}.
@menu @menu
@ -706,7 +705,7 @@ delimited by the characters @samp{@{} and @samp{@}}.
@node Scripts, Expressions, Commands, Commands @node Scripts, Expressions, Commands, Commands
@section Linker Scripts @section Linker Scripts
The @code{gld} command language is a collection of statements; some are The @code{ld} command language is a collection of statements; some are
simple keywords setting a particular flag, some are used to select and simple keywords setting a particular flag, some are used to select and
group input files or name output files; and two particular statement group input files or name output files; and two particular statement
types have a fundamental and pervasive impact on the linking process. types have a fundamental and pervasive impact on the linking process.
@ -715,7 +714,7 @@ types have a fundamental and pervasive impact on the linking process.
@cindex commands, fundamental @cindex commands, fundamental
@cindex output file layout @cindex output file layout
@cindex layout of output file @cindex layout of output file
The most fundamental command of the @code{gld} command language is the The most fundamental command of the @code{ld} command language is the
@code{SECTIONS} command (@pxref{SECTIONS}). Every meaningful command @code{SECTIONS} command (@pxref{SECTIONS}). Every meaningful command
script must have a @code{SECTIONS} command: it specifies a script must have a @code{SECTIONS} command: it specifies a
``picture'' of the output file's layout, in varying degrees of detail. ``picture'' of the output file's layout, in varying degrees of detail.
@ -723,7 +722,7 @@ No other command is required in all cases.
The @code{MEMORY} command complements @code{SECTIONS} by describing the The @code{MEMORY} command complements @code{SECTIONS} by describing the
available memory in the target architecture. This command is optional; available memory in the target architecture. This command is optional;
if you don't use a @code{MEMORY} command, @code{gld} assumes sufficient if you don't use a @code{MEMORY} command, @code{ld} assumes sufficient
memory is available in a contiguous block for all output. memory is available in a contiguous block for all output.
@xref{MEMORY}. @xref{MEMORY}.
@ -973,7 +972,7 @@ symbols, using any of the C assignment operators:
@itemx @var{symbol} /= @var{expression} ; @itemx @var{symbol} /= @var{expression} ;
@end table @end table
Two things distinguish assignment from other operators in @code{gld} Two things distinguish assignment from other operators in @code{ld}
expressions. expressions.
@itemize @bullet @itemize @bullet
@item @item
@ -990,7 +989,7 @@ statement.
Assignment statements may appear: Assignment statements may appear:
@itemize @bullet @itemize @bullet
@item @item
as commands in their own right in a @code{gld} script; or as commands in their own right in an @code{ld} script; or
@item @item
as independent statements within a @code{SECTIONS} command; or as independent statements within a @code{SECTIONS} command; or
@item @item
@ -1209,7 +1208,7 @@ names. Use distinct names to specify multiple regions.
@item (@var{attr}) @item (@var{attr})
@cindex memory region attributes @cindex memory region attributes
is an optional list of attributes, permitted for compatibility with the is an optional list of attributes, permitted for compatibility with the
AT&T linker but not used by @code{gld} beyond checking that the AT&T linker but not used by @code{ld} beyond checking that the
attribute list is valid. Valid attribute lists must be made up of the attribute list is valid. Valid attribute lists must be made up of the
characters ``@code{LIRWX}''. If you omit the attribute list, you may characters ``@code{LIRWX}''. If you omit the attribute list, you may
omit the parentheses around it as well. omit the parentheses around it as well.
@ -1319,7 +1318,7 @@ formats which only support a limited number of sections, such as
with numbers and not names (as is the case for Oasys), the name should be with numbers and not names (as is the case for Oasys), the name should be
supplied as a quoted numeric string. A section name may consist of any supplied as a quoted numeric string. A section name may consist of any
sequence characters, but any name which does not conform to the standard sequence characters, but any name which does not conform to the standard
@code{gld} symbol name syntax must be quoted. @code{ld} symbol name syntax must be quoted.
@node Section Contents, Section Options, Section Definition, SECTIONS @node Section Contents, Section Options, Section Definition, SECTIONS
@subsection Section Contents @subsection Section Contents
@ -1372,7 +1371,7 @@ section names by either commas or whitespace.
@cindex input sections to output section @cindex input sections to output section
@kindex *(@var{section}) @kindex *(@var{section})
Instead of explicitly naming particular input files in a link control Instead of explicitly naming particular input files in a link control
script, you can refer to @emph{all} files from the @code{gld} command script, you can refer to @emph{all} files from the @code{ld} command
line: use @samp{*} instead of a particular filename before the line: use @samp{*} instead of a particular filename before the
parenthesized input-file section list. parenthesized input-file section list.
@ -1414,7 +1413,7 @@ uninitialized data from all input files (so far as it is not yet
allocated); @var{filename}@code{(COMMON)} refers to uninitialized data allocated); @var{filename}@code{(COMMON)} refers to uninitialized data
from a particular file. Both are special cases of the general from a particular file. Both are special cases of the general
mechanisms for specifying where to place input-file sections: mechanisms for specifying where to place input-file sections:
@code{gld} permits you to refer to uninitialized data as if it @code{ld} permits you to refer to uninitialized data as if it
were in an input-file section named @code{COMMON}, regardless of the were in an input-file section named @code{COMMON}, regardless of the
input file's format. input file's format.
@end table @end table
@ -1504,7 +1503,7 @@ int abss;
@end example @end example
@noindent @noindent
@samp{gld -M sample a.o b.o c.o d.o} would create a map like this, @samp{ld -M sample a.o b.o c.o d.o} would create a map like this,
containing symbols matching the object file names: containing symbols matching the object file names:
@example @example
00000000 A __DYNAMIC 00000000 A __DYNAMIC
@ -1716,7 +1715,7 @@ command-line options.
@itemx NOFLOAT @itemx NOFLOAT
@kindex NOFLOAT @kindex NOFLOAT
These keywords were used in some older linkers to request a particular These keywords were used in some older linkers to request a particular
math subroutine library. @code{gld} doesn't use the keywords, assuming math subroutine library. @code{ld} doesn't use the keywords, assuming
instead that any necessary subroutines are in libraries specified using instead that any necessary subroutines are in libraries specified using
the general mechanisms for linking to archives; but to permit the use of the general mechanisms for linking to archives; but to permit the use of
scripts that were written for the older linkers, the keywords scripts that were written for the older linkers, the keywords
@ -1776,7 +1775,7 @@ input files.@refill
@kindex SEARCH_DIR ( @var{path} ) @kindex SEARCH_DIR ( @var{path} )
@cindex path for libraries @cindex path for libraries
@cindex search path, libraries @cindex search path, libraries
Add @var{path} to the list of paths where @code{gld} looks for Add @var{path} to the list of paths where @code{ld} looks for
archive libraries. @code{SEARCH_DIR(@var{path})} has the same archive libraries. @code{SEARCH_DIR(@var{path})} has the same
effect as @code{-L@var{path})} on the command line. effect as @code{-L@var{path})} on the command line.
@ -1792,15 +1791,15 @@ process.
Change the input-file object code format (like the command-line option Change the input-file object code format (like the command-line option
@code{-b} or its synonym @code{-format}). The argument @var{format} is @code{-b} or its synonym @code{-format}). The argument @var{format} is
one of the strings used by BFD to name binary formats. In the current one of the strings used by BFD to name binary formats. In the current
@code{gld} implementation, if @code{TARGET} is specified but @code{ld} implementation, if @code{TARGET} is specified but
@code{OUTPUT_FORMAT} is not, the last @code{TARGET} argument is also @code{OUTPUT_FORMAT} is not, the last @code{TARGET} argument is also
used as the default format for the @code{gld} output file. used as the default format for the @code{ld} output file.
@xref{BFD}.@refill @xref{BFD}.@refill
@kindex GNUTARGET @kindex GNUTARGET
If you don't use the @code{TARGET} command, @code{gld} uses the value of If you don't use the @code{TARGET} command, @code{ld} uses the value of
the environment variable @code{GNUTARGET}, if available, to select the the environment variable @code{GNUTARGET}, if available, to select the
output file format. If that variable is also absent, @code{gld} uses output file format. If that variable is also absent, @code{ld} uses
the default format configured for your machine in the BFD libraries. the default format configured for your machine in the BFD libraries.
@end table @end table
@ -1809,28 +1808,28 @@ the default format configured for your machine in the BFD libraries.
@chapter Machine Dependent Features @chapter Machine Dependent Features
@cindex machine dependencies @cindex machine dependencies
@code{gld} has additional features on some platforms; the following @code{ld} has additional features on some platforms; the following
sections describe them. Machines where @code{gld} has no additional sections describe them. Machines where @code{ld} has no additional
functionality are not listed. functionality are not listed.
@menu @menu
* H8/300:: @code{gld} and the H8/300 * H8/300:: @code{ld} and the H8/300
* i960:: @code{gld} and the Intel 960 family * i960:: @code{ld} and the Intel 960 family
* m68k:: @code{gld} and the Motorola 68000 family * m68k:: @code{ld} and the Motorola 68000 family
* m88k:: @code{gld} and the Motorola 880x0 family * m88k:: @code{ld} and the Motorola 880x0 family
@end menu @end menu
@node H8/300, i960, Machine Dependent, Machine Dependent @node H8/300, i960, Machine Dependent, Machine Dependent
@section @code{gld} and the H8/300 @section @code{ld} and the H8/300
@cindex H8/300 support @cindex H8/300 support
For the H8/300, @code{gld} can perform these global optimizations when For the H8/300, @code{ld} can perform these global optimizations when
you specify the @samp{-relax} command-line option. you specify the @samp{-relax} command-line option.
@table @emph @table @emph
@item relaxing address modes @item relaxing address modes
@cindex relaxing on i960 @cindex relaxing on i960
@code{gld} finds all @code{jsr} and @code{jmp} instructions whose @code{ld} finds all @code{jsr} and @code{jmp} instructions whose
targets are within eight bits, and turns them into eight-bit targets are within eight bits, and turns them into eight-bit
program-counter relative @code{bsr} and @code{bra} instructions, program-counter relative @code{bsr} and @code{bra} instructions,
respectively. respectively.
@ -1838,7 +1837,7 @@ respectively.
@item synthesizing instructions @item synthesizing instructions
@cindex synthesizing on i960 @cindex synthesizing on i960
@c FIXME: specifically mov.b, or any mov instructions really? @c FIXME: specifically mov.b, or any mov instructions really?
@code{gld} finds all @code{mov.b} instructions which use the @code{ld} finds all @code{mov.b} instructions which use the
sixteen-bit absolute address form, but refer to the top sixteen-bit absolute address form, but refer to the top
page of memory, and changes them to use the eight-bit address form. 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 (That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into
@ -1847,7 +1846,7 @@ top page of memory).
@end table @end table
@node i960, m68k, H8/300, Machine Dependent @node i960, m68k, H8/300, Machine Dependent
@section @code{gld} and the Intel 960 family @section @code{ld} and the Intel 960 family
@cindex i960 support @cindex i960 support
@menu @menu
@ -1866,7 +1865,7 @@ linker's search strategy for archive libraries, to support the use of
libraries specific to each particular architecture, by including in the libraries specific to each particular architecture, by including in the
search loop names suffixed with the string identifying the architecture. search loop names suffixed with the string identifying the architecture.
For example, if your @code{gld} command line included @w{@samp{-ACA}} as For example, if your @code{ld} command line included @w{@samp{-ACA}} as
well as @w{@samp{-ltry}}, the linker would look (in its built-in search 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 paths, and in any paths you specify with @code{-L}) for a library with
the names the names
@ -1889,7 +1888,7 @@ specifies a library.
@subsection Emulating Other i960 Linkers @subsection Emulating Other i960 Linkers
You can set the @code{LDEMULATION} environment variable You can set the @code{LDEMULATION} environment variable
(@pxref{Environment,,Environment Variables}) to make (@pxref{Environment,,Environment Variables}) to make
@code{gld} more compatible with two older Intel 960 linkers: @code{ld} more compatible with two older Intel 960 linkers:
@table @code @table @code
@item LDEMULATION=gld960 @item LDEMULATION=gld960
@ -1907,7 +1906,7 @@ format, for this emulation.
@kindex GNU960 @kindex GNU960
This emulation can behave slightly differently depending on the setting This emulation can behave slightly differently depending on the setting
of the @code{gld} compile-time switch @code{GNU960}. If @code{gld} is of the @code{ld} compile-time switch @code{GNU960}. If @code{ld} is
compiled with @code{GNU960} defined, then an additional environment compiled with @code{GNU960} defined, then an additional environment
variable---@code{GNUTARGET}---is available; its value, if available, variable---@code{GNUTARGET}---is available; its value, if available,
specifies some other default output format than @code{b.out.big}. specifies some other default output format than @code{b.out.big}.
@ -1917,7 +1916,7 @@ specifies some other default output format than @code{b.out.big}.
@cindex i960 @cindex i960
@cindex Architectures, i960 family @cindex Architectures, i960 family
Emulate the Intel linker @code{lnk960}. The default output format is Emulate the Intel linker @code{lnk960}. The default output format is
@code{coff-Intel-big}. With this emulation, @code{gld} @code{coff-Intel-big}. With this emulation, @code{ld}
supports the additional script commands @code{HLL} and @code{SYSLIB} for supports the additional script commands @code{HLL} and @code{SYSLIB} for
specification of library archives. This is the only emulation with specification of library archives. This is the only emulation with
extensive support for the @code{-A} (architecture) command-line option. extensive support for the @code{-A} (architecture) command-line option.
@ -1945,18 +1944,18 @@ selected; the core library @file{cg} is always included, but the library
Like @code{gld960}, this emulation uses additional environment variables Like @code{gld960}, this emulation uses additional environment variables
to set the default library search paths. Also like @code{gld960}, the to set the default library search paths. Also like @code{gld960}, the
behavior of this emulation is slightly different depending on whether behavior of this emulation is slightly different depending on whether
@code{gld} itself was compiled with @code{GNU960} defined. @code{ld} itself was compiled with @code{GNU960} defined.
@kindex G960BASE @kindex G960BASE
@kindex G960LIB @kindex G960LIB
@kindex I960BASE @kindex I960BASE
If your @code{gld} was compiled with @code{GNU960} defined, the default If your @code{ld} was compiled with @code{GNU960} defined, the default
paths are taken from all three of @code{G960LIB}, @code{G960BASE}, and paths are taken from all three of @code{G960LIB}, @code{G960BASE}, and
@code{I960BASE}. For the first two, paths you supply are automatically @code{I960BASE}. For the first two, paths you supply are automatically
suffixed with @samp{/lib/libcoff}; for the last, your path is suffixed with @samp{/lib/libcoff}; for the last, your path is
automatically suffixed with @samp{/lib}. automatically suffixed with @samp{/lib}.
If your @code{gld} was @emph{not} compiled with @code{GNU960} defined, If your @code{ld} was @emph{not} compiled with @code{GNU960} defined,
the default paths are taken from @code{I960BASE}, and @code{G960BASE} is the default paths are taken from @code{I960BASE}, and @code{G960BASE} is
only consulted if @code{I960BASE} is undefined. In this case only consulted if @code{I960BASE} is undefined. In this case
@code{G960LIB} is not used at all. @code{G960LIB} is not used at all.
@ -1965,7 +1964,7 @@ only consulted if @code{I960BASE} is undefined. In this case
@node i960-commands, , i960-emulation, i960 @node i960-commands, , i960-emulation, i960
@subsection Command Language Extensions for i960 @subsection Command Language Extensions for i960
@code{gld} understands the following additional commands when @code{ld} understands the following additional commands when
@code{LDEMULATION} is set to @samp{lnk960}: @code{LDEMULATION} is set to @samp{lnk960}:
@table @code @table @code
@ -1978,7 +1977,7 @@ Using @code{HLL(@var{file}} in a linker script is equivalent to
including @code{-l}@var{file} on the command line. including @code{-l}@var{file} on the command line.
@cindex @code{lnk960} command @code{HLL} @cindex @code{lnk960} command @code{HLL}
The @code{HLL} command is only supported when @code{gld} emulates The @code{HLL} command is only supported when @code{ld} emulates
@code{lnk960}, as specified by the @code{LDEMULATION} environment @code{lnk960}, as specified by the @code{LDEMULATION} environment
variable. variable.
@ -1989,14 +1988,14 @@ Use the named @var{file}s as binary input files, searching for them in
the same list of paths as archives. the same list of paths as archives.
@cindex @code{lnk960} command @code{SYSLIB} @cindex @code{lnk960} command @code{SYSLIB}
The @code{SYSLIB} command is only supported when @code{gld} emulates The @code{SYSLIB} command is only supported when @code{ld} emulates
@code{lnk960}, as specified by the @code{LDEMULATION} environment @code{lnk960}, as specified by the @code{LDEMULATION} environment
variable. variable.
@end table @end table
@node m68k, m88k, i960, Machine Dependent @node m68k, m88k, i960, Machine Dependent
@section @code{gld} and the Motorola 680x0 family @section @code{ld} and the Motorola 680x0 family
@cindex m68k support @cindex m68k support
You can set the environment variable @code{LDEMULATION} to @samp{gld68k} You can set the environment variable @code{LDEMULATION} to @samp{gld68k}
@ -2006,7 +2005,7 @@ only differs in specifically setting the default BFD machine as
@code{m68k}. @xref{Environment,,Environment Variables}. @code{m68k}. @xref{Environment,,Environment Variables}.
@node m88k, , m68k, Machine Dependent @node m88k, , m68k, Machine Dependent
@section @code{gld} and the Motorola 880x0 family @section @code{ld} and the Motorola 880x0 family
@cindex m88k support @cindex m88k support
@kindex gldm88kbcs @kindex gldm88kbcs
@ -2259,7 +2258,7 @@ defined. This ensures that each symbol points to its containing
section. Each symbol also has a varying amount of hidden data to contain section. Each symbol also has a varying amount of hidden data to contain
private data for the BFD back end. Since the symbol points to the private data for the BFD back end. Since the symbol points to the
original file, the private data format for that symbol is accessible. original file, the private data format for that symbol is accessible.
@code{gld} can operate on a collection of symbols of wildly different @code{ld} can operate on a collection of symbols of wildly different
formats without problems. formats without problems.
Normal global and simple local symbols are maintained on output, so an Normal global and simple local symbols are maintained on output, so an