构建完成后,我在映射文件中找到了 (i.function name) 部分。
==================================================== ====
前任)
[foo1.h] // 内联函数定义和声明
__forceinline UINT32 func1(VOID) { ... }
[foo2.cpp] // 使用的内联函数
#include "foo1.h"
UINT32 func2(VOID) { ... func1(); // 编译时非内联 }
[地图文件]
foo2.o(.text) 指的是 foo2.o(i.func1) 的 func1
==================================================== ====
映射文件中的典型部分如下所示:(.text)、(.ARM.exidx)、(.data)、(.constdata)、(.bss)、(USER Defined Section Name)、...
经过几次构建测试后,我猜 (i.function name) 部分出现在定义内联但编译器不应用内联的函数使目标文件中的 AREA 符号成为行外版本时。而这样的函数位于 (i.function name) 部分。如果所有内联函数都是内联的,则没有符号或(i.function name)部分。
为什么非内联应用的内联函数位于该部分?(不是.text?)
(i.function name) 部分的确切含义是什么?
我查阅了以下文档,但无法得到我想要的关于内容的答案。
- ARM 编译器用户指南、ARM 编译器参考指南、ARM Link 用户指南、ARMCC 用户指南、用于 ARM 架构的 ELF