ARMCC(C ++)中(i.function name)节的含义是什么?

问题描述 投票:2回答:1

构建完成后,我在映射文件中找到了(i.function名称)部分。

================================================ ======

ex)

[foo1.h] //内联函数定义和声明

__ forceinline UINT32 func1(VOID){...}

[[foo2.cpp] //使用内联函数

#include“ foo1.h”

UINT32 func2(VOID){...func1(); //编译时非内联}

[[地图文件]

foo2.o(.text)指向func1的foo2.o(i.func1)

================================================ ======

映射文件中的典型部分看起来像:(.text),(。ARM.exidx),(。data),(。constdata),(。bss),(USER Defined Section Name),...] >

经过几次构建测试后,我猜想,当定义内联但编译器未应用内联的函数在目标文件中使AREA符号成为脱机版本时,会出现(i.function name)部分。此类功能位于(i。功能名称)部分中。如果所有内联函数都是内联函数,则没有符号或(i.function名称)部分。

为什么未在该部分中直接应用内联函数?(不是.text?]

(功能名称)部分的确切含义是什么?

我查找了以下文档,但无法获得所需的答案。

  • [ARM编译器用户指南,ARM编译器参考指南,ARM Link用户指南,ARMCC用户指南,ARM体系结构的ELF

构建完成后,我在映射文件中找到了(i.function名称)部分。 ================================================== ==== ex)[foo1.h] //内联函数定义和声明...

c++ arm inline armcc
1个回答
0
投票

当包含标志--split_sectionssee here)时,编译器将为每个函数生成一个部分,这是i.functionName部分的分配名称。

请注意,由于缺少与共享资源有关的潜在优化,此标志可能会增加代码的大小。

© www.soinside.com 2019 - 2024. All rights reserved.