3.4.3 Commands Dealing with Object File Formats

A couple of linker script commands deal with object file formats.

OUTPUT_FORMAT( bfdname )
OUTPUT_FORMAT( default , big , little )
The OUTPUT_FORMAT command names the BFD format to use for the output file (see BFD ). Using OUTPUT_FORMAT( bfdname ) is exactly like using ‘ --oformat bfdname ’ on the command line (see Command Line Options ). If both are used, the command line option takes precedence.

You can use OUTPUT_FORMAT with three arguments to use different formats based on the ‘ -EB ’ and ‘ -EL ’ command line options. This permits the linker script to set the output format based on the desired endianness.

If neither ‘ -EB ’ nor ‘ -EL ’ are used, then the output format will be the first argument, default . If ‘ -EB ’ is used, the output format will be the second argument, big . If ‘ -EL ’ is used, the output format will be the third argument, little .

For example, the default linker script for the MIPS ELF target uses this command:

          OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)

This says that the default format for the output file is ‘ elf32-bigmips ’, but if the user uses the ‘ -EL ’ command line option, the output file will be created in the ‘ elf32-littlemips ’ format.

TARGET( bfdname )
The TARGET command names the BFD format to use when reading input files. It affects subsequent INPUT and GROUP commands. This command is like using ‘ -b bfdname ’ on the command line (see Command Line Options ). If the TARGET command is used but OUTPUT_FORMAT is not, then the last TARGET command is also used to set the format for the output file. See BFD .