You copied the Doc URL to your clipboard.

ARM Compiler armlink User Guide : --strict_symbols, --no_strict_symbols

--strict_symbols, --no_strict_symbols

Checks whether or not a mapping symbol type matches an ABI symbol type.


The option --strict_symbols checks that the mapping symbol type matches ABI symbol type. The linker displays a warning if the types do not match.

mismatch can occur only if you have hand-coded your own assembler.


The default is --no_strict_symbols.


In the following assembler code the symbol sym has type STT_FUNC and is A32 (ARM):

    .section mycode,"x"
    .word sym + 4
    .code 32
    .type sym, "function"
    mov  r0, r0
    .code 16
    mov  r0, r0

The difference in behavior is the meaning of .word sym + 4:

  • In pre-ABI linkers the state of the symbol is the state of the mapping symbol at that location. In this example, the state is T32 (Thumb).
  • In ABI linkers the type of the symbol is the state of the location of symbol plus the offset.