Keil™, An ARM® Company

Technical Support

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 ZI 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 bss_threshold setting might result in increased code size.

SEE ALSO

Last Reviewed: Friday, October 19, 2007


Did this article provide the answer you needed?
 
Yes
No
Not Sure