The ARM compiler generates complete objects for linking, which means:

  • Inlined functions also have an associated out-of-line copy.
  • For templates, each generated object contains the template function as well

Functions that are defined in in headers will be present in multiple object files. These functions are put into common sections so that the linker can eliminate the sections.

Sometimes, these are not eliminated if a shared library is built with slightly different options.