Doc for MRI-compatible linker scripts.

This commit is contained in:
Roland Pesch 1992-05-05 00:52:27 +00:00
parent 20a8821836
commit 2d59b2c30e
1 changed files with 214 additions and 83 deletions

View File

@ -2,7 +2,7 @@
@setfilename ld.info
@c $Id$
@syncodeindex ky cp
@smallbook
@c @smallbook
@c @cropmarks
@ifinfo
@ -16,7 +16,7 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the GNU linker GLD.
Copyright (C) 1991 Free Software Foundation, Inc.
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -51,7 +51,7 @@ original English.
@subtitle The GNU linker
@sp 1
@subtitle Second Edition---@code{gld} version 2.0
@subtitle April 1991
@subtitle January 1992
@author Steve Chamberlain and Roland Pesch
@author Cygnus Support
@page
@ -69,7 +69,7 @@ original English.
@end tex
@vskip 0pt plus 1filll
Copyright @copyright{} 1991 Free Software Foundation, Inc.
Copyright @copyright{} 1991, 1992 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -92,63 +92,64 @@ This file documents the GNU linker gld.
@end ifinfo
@menu
* Overview:: Overview
* Invocation:: Invocation
* Commands:: Command Language
* Machine Dependent:: Machine Dependent Features
* BFD:: BFD
* Index:: Index
* Overview:: Overview
* Invocation:: Invocation
* Commands:: Command Language
* Machine Dependent:: Machine Dependent Features
* BFD:: BFD
* MRI:: MRI Compatible Script Files
* 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
* 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
* 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
@ -186,8 +187,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
@ -201,7 +202,7 @@ line:
@smallexample
gld [-o @var{output} ] @var{objfiles}@dots{}
[ -A@var{architecture} ] [ -b @var{input-format} ] [ -Bstatic ]
[ -c @var{commandfile} ] [ -d | -dc | -dp ]
[ -c @var{MRI-commandfile} ] [ -d | -dc | -dp ]
[ -defsym @var{symbol} = @var{expression} ]
[ -e @var{entry} ] [ -F ] [ -F @var{format} ]
[ -format @var{input-format} ] [ -g ] [ -i ]
@ -297,17 +298,16 @@ format from a script, using the command @code{TARGET}.
This flag is accepted for command-line compatibility with the SunOS linker,
but has no effect on @code{gld}.
@kindex -c @var{cmdfile}
@cindex script files
@item -c @var{commandfile}
Directs @code{gld} to read link commands from the file
@var{commandfile}. These commands will completely override @code{gld}'s
default link format (rather than adding to it); @var{commandfile} must
specify everything necessary to describe the target format.
@xref{Commands}.
@kindex -c @var{MRI-cmdfile}
@cindex compatibility, MRI
@item -c @var{MRI-commandfile}
For compatibility with linkers produced by MRI, @code{ld} accepts script
files written in an alternate, restricted command language, described in
@ref{MRI,,MRI Compatible Script Files}. Introduce such script files
with the option flag @samp{-c}.
You may also include a script of link commands directly in the command
line by bracketing it between @samp{@{} and @samp{@}} characters.
Use the @samp{-T} option to run linker scripts written in the general-purpose
@code{ld} scripting language.
@cindex common allocation
@kindex -d
@ -514,8 +514,15 @@ Use @var{org} as the starting address for---respectively---the
@item -T @var{commandfile}
@itemx -T@var{commandfile}
@kindex -T @var{script}
Equivalent to @code{-c @var{commandfile}}; supported for compatibility with
other tools.
@cindex script files
Directs @code{gld} to read link commands from the file
@var{commandfile}. These commands will completely override @code{gld}'s
default link format (rather than adding to it); @var{commandfile} must
specify everything necessary to describe the target format.
@xref{Commands}.
You may also include a script of link commands directly in the command
line by bracketing it between @samp{@{} and @samp{@}} characters.
@item -t
@kindex -t
@ -582,7 +589,7 @@ See description of @code{-N}.
@node Environment, , Options, Invocation
@section Environment Variables
You can condition the behavior of @code{gld} with two environment
You can change 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.
@ -680,7 +687,7 @@ placement of common blocks
@end itemize
You may supply a command file (also known as a link script) to the
linker either explicitly through the @code{-c} option, or implicitly as
linker either explicitly through the @code{-T} option, or implicitly as
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 command file.
@ -689,12 +696,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
@ -747,13 +754,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
@ -1275,9 +1282,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
@ -1807,10 +1814,10 @@ 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
* 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
@ -1844,9 +1851,9 @@ top page of memory).
@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
* 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
@ -2016,7 +2023,7 @@ This sets the output format to @code{m88kbcs} and the architecture to
For other settings of @code{LDEMULATION}, consult
@ref{Environment,,Environment Variables}.
@node BFD, Index, Machine Dependent, Top
@node BFD, MRI, Machine Dependent, Top
@chapter BFD
@cindex back end
@ -2145,9 +2152,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
@ -2296,7 +2303,131 @@ which can simply derive this information can pass it successfully
between formats (COFF, IEEE and Oasys).
@end table
@node Index, , BFD, Top
@node MRI, Index, BFD, Top
@appendix MRI Compatible Script Files
@cindex MRI compatibility
To aid users making the transition to @sc{gnu} @code{ld} from the MRI
linker, @code{ld} can use MRI compatible linker scripts as an
alternative to the more general-purpose linker scripting language
described in @ref{Commands,,Command Language}. MRI compatible linker
scripts have a much simpler command set than the scripting language
otherwise used with @code{ld}. @sc{gnu} @code{ld} supports the most
commonly used MRI linker commands; these commands are described here.
You can specify a file containing an MRI-compatible script using the
@samp{-c} command-line option.
Each command in an MRI-compatible script occupies its own line; each
command line starts with the keyword that identifies the command (though
blank lines are also allowed for punctuation). If a line of an
MRI-compatible script begins with an unrecognized keyword, @code{ld}
issues a warning message, but continues processing the script.
Lines beginning with @samp{*} are comments.
You can write these commands using all upper-case letters, or all
lower case; for example, @samp{chip} is the same as @samp{CHIP}.
The following list shows only the upper-case form of each command.
@table @code
@item ABSOLUTE @var{secname}
@item ABSOLUTE @var{secname}, @var{secname}, @dots{} @var{secname}
@cindex @code{ABSOLUTE} (MRI)
Normally, @code{ld} includes in the output file all sections from all
the input files. However, in an MRI-compatible script, you can use the
@code{ABSOLUTE} command to restrict the sections that will be present in
your output program. If the @code{ABSOLUTE} command is used at all in a
script, then only the sections named explicitly in @code{ABSOLUTE}
commands will appear in the linker output. You can still use other
input sections (whatever you select on the command line, or using
{LOAD}) to resolve addresses in the output file.
@item ALIAS @var{out-secname}, @var{in-secname}
@cindex @code{ALIAS} (MRI)
Use this command to place the data from input section @var{in-secname}
in a section called @var{out-secname} in the linker output file.
@var{in-secname} may be an integer.
@item BASE @var{expression}
@cindex @code{BASE} (MRI)
Use the value of @var{expression} as the lowest address (other than
absolute addresses) in the output file.
@item CHIP @var{expression}
@itemx CHIP @var{expression}, @var{expression}
@cindex @code{CHIP} (MRI)
This command does nothing whatever; it's only accepted for compatibility.
@item END
@cindex @code{END} (MRI)
This command does nothing whatever; it's only accepted for compatibility.
@item FORMAT @var{output-format}
@cindex @code{FORMAT} (MRI)
Similar to the @code{OUTPUT_FORMAT} command in the more general linker
language, but restricted to one of these output formats:
@enumerate
@item
S-records, if @var{output-format} is @samp{S}
@item
IEEE, if @var{output-format} is @samp{IEEE}
@item
COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is
@samp{COFF}
@end enumerate
@item LIST @var{@dots{}}
@cindex @code{LIST} (MRI)
Print (to the standard output file) a link map, as produced by the
@code{ld} command-line option @samp{-M}.
(The keyword @code{LIST} may be followed by anything whatsoever on the
same line, with no change in its effect.)
@item LOAD @var{filename}
@item LOAD @var{filename}, @var{filename}, @dots{} @var{filename}
@cindex @code{LOAD} (MRI)
Include one or more object file @var{filename} in the link; this has the
same effect as specifying @var{filename} directly on the @code{ld}
command line.
@item NAME @var{output-name}
@cindex @code{NAME} (MRI)
@var{output-name} is the name for the program produced by @code{ld}; the
MRI-compatible command @code{NAME} is equivalent to the command-line
option @samp{-o} or the general script language command @code{OUTPUT}.
@item ORDER @var{secname}, @var{secname}, @dots{} @var{secname}
@itemx ORDER @var{secname} @var{secname} @var{secname}
@cindex @code{ORDER} (MRI)
Normally, @code{ld} orders the sections in its output file in whatever
order they first appear in the input files. In an MRI-compatible
script, you can override this with the @code{ORDER} command. The
sections you list with @code{ORDER} will appear first in your output
file, in the order specified.
@item PUBLIC @var{name}=@var{expression}
@itemx PUBLIC @var{name},@var{expression}
@itemx PUBLIC @var{name} @var{expression}
@cindex @code{PUBLIC} (MRI)
This command supplies a value (@var{expression}) for an external symbol
@var{name} used in the linker input files.
@item SECT @var{secname}, @var{expression}
@itemx SECT @var{secname}=@var{expression}
@itemx SECT @var{secname} @var{expression}
@cindex @code{SECT} (MRI)
You can use any of these three forms of the @code{SECT} command to
specify the start address (@var{expression}) for section @var{secname}.
If you have more than one @code{SECT} statement for the same
@var{secname}, only the @emph{first} sets the start address.
@end table
@node Index, , MRI, Top
@unnumbered Index
@printindex cp