9.56.1 Command-line Options

--text-section-literals | --no-text-section-literals

Control the treatment of literal pools. The default is ‘--no-text-section-literals’, which places literals in separate sections in the output file. This allows the literal pool to be placed in a data RAM/ROM. With ‘--text-section-literals’, the literals are interspersed in the text section in order to keep them as close as possible to their references. This may be necessary for large assembly files, where the literals would otherwise be out of range of the L32R instructions in the text section. Literals are grouped into pools following .literal_position directives or preceding ENTRY instructions. These options only affect literals referenced via PC-relative L32R instructions; literals for absolute mode L32R instructions are handled separately. See literal.

--auto-litpools | --no-auto-litpools

Control the treatment of literal pools. The default is ‘--no-auto-litpools’, which in the absence of ‘--text-section-literals’ places literals in separate sections in the output file. This allows the literal pool to be placed in a data RAM/ROM. With ‘--auto-litpools’, the literals are interspersed in the text section in order to keep them as close as possible to their references, explicit .literal_position directives are not required. This may be necessary for very large functions, where single literal pool at the beginning of the function may not be reachable by L32R instructions at the end. These options only affect literals referenced via PC-relative L32R instructions; literals for absolute mode L32R instructions are handled separately. When used together with ‘--text-section-literals’, ‘--auto-litpools’ takes precedence. See literal.

--absolute-literals | --no-absolute-literals

Indicate to the assembler whether L32R instructions use absolute or PC-relative addressing. If the processor includes the absolute addressing option, the default is to use absolute L32R relocations. Otherwise, only the PC-relative L32R relocations can be used.

--target-align | --no-target-align

Enable or disable automatic alignment to reduce branch penalties at some expense in code size. See Automatic Instruction Alignment. This optimization is enabled by default. Note that the assembler will always align instructions like LOOP that have fixed alignment requirements.

--longcalls | --no-longcalls

Enable or disable transformation of call instructions to allow calls across a greater range of addresses. See Function Call Relaxation. This option should be used when call targets can potentially be out of range. It may degrade both code size and performance, but the linker can generally optimize away the unnecessary overhead when a call ends up within range. The default is ‘--no-longcalls’.

--transform | --no-transform

Enable or disable all assembler transformations of Xtensa instructions, including both relaxation and optimization. The default is ‘--transform’; ‘--no-transform’ should only be used in the rare cases when the instructions must be exactly as specified in the assembly source. Using ‘--no-transform’ causes out of range instruction operands to be errors.

--rename-section oldname=newname

Rename the oldname section to newname. This option can be used multiple times to rename multiple sections.

--trampolines | --no-trampolines

Enable or disable transformation of jump instructions to allow jumps across a greater range of addresses. See Jump Trampolines. This option should be used when jump targets can potentially be out of range. In the absence of such jumps this option does not affect code size or performance. The default is ‘--trampolines’.

--abi-windowed | --abi-call0

Choose ABI tag written to the .xtensa.info section. ABI tag indicates ABI of the assembly code. A warning is issued by the linker on an attempt to link object files with inconsistent ABI tags. Default ABI is chosen by the Xtensa core configuration.