Hi,
During the link, if you have activated the "Per Function Sections" compiler option and "Remove Unused Sections" linker option, or if you are using libraries, then the linker will only take the code that is really called. This is a standard optimization that most compile chains are able to perform. That explains why most final applications are much smaller than the sum of the sizes of the object codes they are made from.
Considering that you are using a library and Circle_Mgr (which links using the "Remove Unused Sections" option), my guess is it's the explanation in your case.
Please refer to the GettingStartedARM (Raisonance), gcc and lc (GNU) documentations for more informations on the way the linker uses libraries, and on the two options mentionned above.
I hope it helps.
Best Regards,
Vincent