I use the S32DS_power v1.1 and v1.2 to new a project of MPC5606B. However, there are different in the .map files. The v1.2 project add the libgcc, crtbegin, crtend etc. library in the .text and .init file, while the v1.1 project does not have it.
Could you please help to explain this issue? Customer concerns that it will increase the size of the .init and .text sections. And it is the black box for customer.
Original Attachment has been moved to: MPC5606B_TEST_V1.2.zip
Original Attachment has been moved to: MPC5606B_TEST_V1.1.zip
Original Attachment has been moved to: MPC5606B_TEST_V1.2.map.zip
Original Attachment has been moved to: MPC5606B_TEST_V1.1.map.zip
S32DS power v1.2 includes the new version of gcc which is now fully EABI compliant (in contrast to previous versions).
There are new mandatory linker sections required which are btw. also present in GCC version for ARM.
If these sections and related initialization routines are missing it basically causes some EABI compliance issues:
Therefore an extra code to preform global object initialization (e.g. Constructor/Destructor init) which applies to both C and C++ project has been added. This is a static code size that doesn't grow with the project.
Several sections are just placeholders for C++ projects and has zero size for C project (.fini_array, init_array ... sections) so you don't have to worry about the code size.
Hope it helps
Thanks for your reply. It is very useful for us.
Could you please help to explain each of the crtbegin, crtend, libgcc, ecrti, ecrtn files used for? Or any document for us to study?
Customer also have a question that if they can put the static code together in the end of the code?If yes, How to do it?