LD: MRI

Next: GNU Free Documentation License, Previous: Reporting Bugs, Up: Top [Contents][Index]

## Appendix A 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 Scripts. 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.

Next: GNU Free Documentation License, Previous: Reporting Bugs, Up: Top [Contents][Index]