Keil Logo

ARMCC: VARIABLES GET LOCATED TO RW RATHER THAN ZI


Information in this article applies to:

  • RealView MDK-ARM 3.1 and above

QUESTION

For the following example code:

char test_array[8];

The linker reports these memory sizes RW data = 8 and ZI data = 0

While for:

char test_array[9];

The linker reports these memory sizes RW data = 0 and ZI data = 9.

Why is the latter in the ZI section but the former isn't? Is there a way to change the linker behaviour?

ANSWER

Data objects smaller than 9 bytes get moved to the RW region for optimization reasons. This threshold can be controlled by the bss_threshold compiler switch. To enable this option in µVision please add the compiler switch in Options for Target — C/C++ — Misc Controls field.

Example:

--bss_threshold=0

Note:

  • Changing the bss_threshold setting might result in increased code size.

SEE ALSO

FORUM THREADS

The following Discussion Forum threads may provide information related to this topic.

Last Reviewed: Wednesday, January 25, 2017


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

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.