Non-Confidential | ![]() | DUI0803J | ||
| ||||
Home > Accessing and Managing Symbols with armlink > About mapping symbols |
Mapping symbols are generated by the compiler and assembler to identify various inline transitions.
For Arm®v7‑A, inline transitions can be between:
For Armv8‑A, inline transitions can be between:
For Armv6‑M, Armv7‑M, and Armv8‑M, inline transitions can be between code and data at literal pool boundaries.
The mapping symbols available for each architecture are:
Symbol | Description | Architecture |
---|---|---|
$a |
Start of a sequence of Arm/A32 instructions. | All |
$t |
Start of a sequence of Thumb/T32 instructions. | All |
$t.x |
Start of a sequence of ThumbEE instructions. | Armv7‑A |
$d |
Start of a sequence of data items, such as a literal pool. | All |
$x |
Start of A64 code. | Armv8‑A |
armlink generates the $d.realdata
mapping symbol to
communicate to fromelf that the data is from a non-executable section.
Therefore, the code and data sizes output by fromelf -z
are the same as the output from armlink --info sizes
,
for example:
Code (inc. data) RO Data x y z
In this example, the y
is marked with $d
, and RO
Data
is marked with $d.realdata
.
$v
are mapping symbols related to VFP and might be output when
building for a target with VFP. Avoid using symbols beginning with $v
in your source code.Be aware that modifying an executable image with the fromelf
--elf --strip=localsymbols
command removes all mapping symbols from the
image.