9.7.1 Command-line Options
The format of the generated object files can be either ELF or
a.out, specified by the command-line options
--emulation=crisaout and --emulation=criself.
The default is ELF (criself), unless
as has been
configured specifically for a.out by using the configuration
There are two different link-incompatible ELF object file variants for CRIS, for use in environments where symbols are expected to be prefixed by a leading _ character and for environments without such a symbol prefix. The variant used for GNU/Linux port has no symbol prefix. Which variant to produce is specified by either of the options --underscore and --no-underscore. The default is --underscore. Since symbols in CRIS a.out objects are expected to have a _ prefix, specifying --no-underscore when generating a.out objects is an error. Besides the object format difference, the effect of this option is to parse register names differently (see crisnous). The --no-underscore option makes a $ register prefix mandatory.
The option --pic must be passed to
order to recognize the symbol syntax used for ELF (SVR4 PIC)
position-independent-code (see crispic). This will also
affect expansion of instructions. The expansion with
--pic will use PC-relative rather than (slightly
faster) absolute addresses in those expansions.
- All instructions and register names for any architecture variant
in the set v0...v10 are recognized. This is the
default if the target is configured as cris-*.
- Only instructions and register names for CRIS v10 (as found in
ETRAX 100 LX) are recognized. This is the default if the target
is configured as crisv10-*.
- Only instructions and register names for CRIS v32 (code name
Guinness) are recognized. This is the default if the target is
configured as crisv32-*. This value implies
--no-mul-bug-abort. (A subsequent
--mul-bug-abort will turn it back on.)
- Only instructions with register names and addressing modes with opcodes common to the v10 and v32 are recognized.
When -N is specified,
as will emit a
warning when a 16-bit branch instruction is expanded into a
32-bit multiple-instruction construct (see CRIS-Expand).
Some versions of the CRIS v10, for example in the Etrax 100 LX,
contain a bug that causes destabilizing memory accesses when a
multiply instruction is executed with certain values in the
first operand just before a cache-miss. When the
--mul-bug-abort command line option is active (the
as will refuse to assemble a file
containing a multiply instruction at a dangerous offset, one
that could be the last on a cache-line, or is in a section with
insufficient alignment. This placement checking does not catch
any case where the multiply instruction is dangerously placed
because it is located in a delay-slot. The
--mul-bug-abort command line option turns off the