Domain/ARM 2007.03.18 19:47
".init_array" Section ".fini_array"
.init_array contains pointers to blocks of code that need to be executed when an application is being initialized (before main() is called). It is used for a number of things, but the primary use is in C++ for running static constructors; a secondary use that is sometimes used is to initialize IO systems in the C library.
If you are not using C++ you may (depending on your C library) be able to live without it entirely; but you'd need to hack your startup code to deal with this.
.init_array probably ends up in ram because its marked read/write -- that happens because in a dynamic linking environment the dynamic linker has to fix up all the pointers it contains before it can be used. In a static environment you might be able to get away with forcing it into a read-only section.
|[ARM] Sample code for unwinding stack with DWARF2 information. (0)||2010.04.07|
|[ARM] Sample code for unwinding stack in Thumb mode. (0)||2010.04.07|
|[ARM] Unwinding Stack. (0)||2009.09.15|
|[ARM] Long jump. (0)||2007.06.05|
|[ARM] .init_array section (0)||2007.03.18|
|[ARM] Exception generating codes... (0)||2006.05.13|