To aid users making the transition to GNU ld from the MRI
linker, ld can use MRI compatible linker scripts as an
alternative to the more general-purpose linker scripting language
described in Command Language. MRI compatible linker
scripts have a much simpler command set than the scripting language
otherwise used with ld. GNU ld supports the most
commonly used MRI linker commands; these commands are described here.
In general, MRI scripts aren't of much use with the a.out object
file format, since it only has three sections and MRI scripts lack some
features to make use of them.
You can specify a file containing an MRI-compatible script using the
`-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, ld
issues a warning message, but continues processing the script.
Lines beginning with `*' are comments.
You can write these commands using all upper-case letters, or all
lower case; for example, `chip' is the same as `CHIP'.
The following list shows only the upper-case form of each command.
ABSOLUTE secname
ABSOLUTE secname, secname, ... secname
Normally, ld includes in the output file all sections from all
the input files. However, in an MRI-compatible script, you can use the
ABSOLUTE command to restrict the sections that will be present in
your output program. If the ABSOLUTE command is used at all in a
script, then only the sections named explicitly in 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.
ALIAS out-secname, in-secname
Use this command to place the data from input section in-secname
in a section called out-secname in the linker output file.
in-secname may be an integer.
ALIGN secname = expression
Align the section called secname to expression. The
expression should be a power of two.
BASE expression
Use the value of expression as the lowest address (other than
absolute addresses) in the output file.
CHIP expression
CHIP expression, expression
This command does nothing; it is accepted only for compatibility.
END
This command does nothing whatever; it's only accepted for compatibility.
FORMAT output-format
Similar to the OUTPUT_FORMAT command in the more general linker
language, but restricted to one of these output formats:
S-records, if output-format is `S'
IEEE, if output-format is `IEEE'
COFF (the `coff-m68k' variant in BFD), if output-format is
`COFF'
LIST anything...
Print (to the standard output file) a link map, as produced by the
ld command-line option `-M'.
The keyword LIST may be followed by anything on the
same line, with no change in its effect.
LOAD filename
LOAD filename, filename, ... filename
Include one or more object file filename in the link; this has the
same effect as specifying filename directly on the ld
command line.
NAME output-name
output-name is the name for the program produced by ld; the
MRI-compatible command NAME is equivalent to the command-line
option `-o' or the general script language command OUTPUT.
ORDER secname, secname, ... secname
ORDER secnamesecnamesecname
Normally, ld orders the sections in its output file in the
order in which they first appear in the input files. In an MRI-compatible
script, you can override this ordering with the ORDER command. The
sections you list with ORDER will appear first in your output
file, in the order specified.
PUBLIC name=expression
PUBLIC name,expression
PUBLIC nameexpression
Supply a value (expression) for external symbol
name used in the linker input files.
SECT secname, expression
SECT secname=expression
SECT secnameexpression
You can use any of these three forms of the SECT command to
specify the start address (expression) for section secname.
If you have more than one SECT statement for the same
secname, only the first sets the start address.