I found out (i.function name) section in map file after build completion.
======================================================
ex)
[foo1.h] // inline function definition and declaration
__forceinline UINT32 func1(VOID) { ... }
[foo2.cpp] // inline function used
#include "foo1.h"
UINT32 func2(VOID) { ... func1(); // Non-inline in compile time }
[Map File]
foo2.o(.text) refers to foo2.o(i.func1) for func1
======================================================
A typical section in the map file looks like: (.text), (.ARM.exidx), (.data), (.constdata), (.bss), (USER Defined Section Name), ...
After several build tests, I guess (i.function name) section appears when the function that defined inline but compiler does not apply inline makes AREA symbol in object file to make out-of line version. And such a function is located in (i.function name) section. If all inline functions are inline, there is no symbol or (i.function name) section.
Why is the inline function that is not inline applied located in that section?(Not .text?)
What is the exact meaning of (i.function name) section?
I looked up the following documents but could not get the answer I wanted about the content.
- ARM Compiler User Guide, ARM Compiler Reference Guide, ARM Link User Guide, ARMCC User Guide, ELF for the ARM Architecture