4.7 ld and the MIPS family

The ‘ --insn32 ’ and ‘ --no-insn32 ’ options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If ‘ --insn32 ’ is used, then the linker only uses 32-bit instruction encodings. By default or if ‘ --no-insn32 ’ is used, all instruction encodings are used, including 16-bit ones where possible.

The ‘ --ignore-branch-isa ’ and ‘ --no-ignore-branch-isa ’ options control branch relocation checks for invalid ISA mode transitions. If ‘ --ignore-branch-isa ’ is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of BAL instructions which meet relaxation conditions and are converted to equivalent JALX instructions as the associated relocation is calculated. By default or if ‘ --no-ignore-branch-isa ’ is used a check is made causing the loss of an ISA mode transition to produce an error.