We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
According to ARM document pasted below, __main always calls __scatterload. But I got a .elf file whose dissambly code doesn't contain the __scatterload function. Any idea in what situation the __scatterload will not be compiled and used ?
I use armclang 6 to compile the source files into the .elf.
Thanks and best regards,
Xinwei
The function __main is the entry point to the C library. Unless you change it, __main is the default entry point to the ELF image that the ARM linker (armlink) uses when creating the image. Figure 1 shows the functions called by__main during the C library startup.
Figure 1 Overview of the functions called during the C library startup
__rt_entry and the functions called by __rt_entry are described in Functions called by __rt_entry.
Application code and data can be in a root region or a non-root region. Root regions have the same load-time and execution-time addresses. Non-root regions have different load-time and execution-time addresses. The root region contains a region table output by the ARM linker.
The region table contains the addresses of the non-root code and data regions that require initialization. The region table also contains a function pointer that indicates what initialization is needed for the region, for example a copying, zeroing, or decompressing function.
__scatterload goes through the region table and initializes the various execution-time regions. The function:
__main always calls this function during startup before calling __rt_entry.