Mapping symbols are generated by the compiler and assembler to identify various inline transitions.
For Arm®v7‑A, inline transitions can be between:
Code and data at literal pool boundaries.
Arm code and Thumb® code, such as Arm and Thumb interworking
veneers.
For Armv8‑A, inline transitions can be between:
Code and data at literal pool boundaries.
A32 code and T32 code, such as A32/T32 interworking veneers.
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.
Note:
Symbols beginning with the characters $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.
Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers of your data.