Go to the first, previous, next, last section, table of contents.

# MRI Compatible Script Files

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 section 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:
  1. S-records, if output-format is ``S'`
  2. IEEE, if output-format is ``IEEE'`
  3. 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 secname secname secname`
  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 name expression`
  Supply a value (expression) for external symbol name used in the linker input files.
`SECT secname, expression`
`SECT secname=expression`
`SECT secname expression`
  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.

Go to the first, previous, next, last section, table of contents.