Force GCC to forgo zeroing certain globals
c, gcc
Solution
You can use the `gcc` attributes to store the object in another new memory section, like for example in the `.noinit` memory section.
BYTE mChunkSpace[SIZE_16_MB] __attribute__ ((section (".noinit")));
Problem
Is there any way to tell GCC to not initialize a particular global array to zero? I want to reserve a large chunk of memory for storing a large data structure that my code manages, so I say: ``` #define SIZE_16_MB 0x01000000 BYTE mChunkSpace[SIZE_16_MB]; ``` The problem is that crtinit() takes a million years to initialize this space to zero, and it is not at all necessary. Is there any way I can force it not to initialize that space? Currently I am hard-coding a memory address that is outside what the linker knows about, but that is not a particularly robust way of doing things. Additionally, this is a slow embedded proc (50MHz Microblaze), so don't assume that i am talking about a PC. It really does take a long time to zero that space.