c++keiltypeinfoarmcc

Keil armcc generates typeinfo names even with --no_rtti_data


I'm using ARM Compiler 5 (ARMCC) in Keil 5.25. I'm using c++11.

I'm using c++11 with self-made analogue of std::function (since there is no std::function in STL provided with armcc). Recently I noticed that my binary contains several strange-looking strings like N8callback14DelegateLambdaIZN5tasks13BatteryTask_t6worker and so on.

I looked for their addresses in linker .map file and found that these are "typeinfo names" for some of my lambdas.

I'm pretty sure that I don't need this names and don't use them. But compiler still generates them even with --no_rtti and --no_rtti_data and linker doesn't throw them away even with --feedback.

How can I get rid of them? They tend to take quite a lot of space.


Solution

  • I contacted ARM support and got the answer (not exact quote) that this is an issue with the compiler itself and, since armcc is now under maintenance support, this will not likely to be fixed soon.

    As a workaround they suggested to use compiler option --no_vfe but that can lead to increase of code size (and didn't work at all in my case).

    For better support of c++11 migration to armclang is advised.