您好!
由于 TI 编译器当前与 A15内核不兼容、 因此它使用的工具链是基于 GNU 的工具链。
在编译 A15时、工具链对一些符号有一些假设、似乎需要正确设置它们。
例如、end 符号应指示堆的开始、并假设堆栈段紧随其后(在堆之后)。
我注意到在映射文件中有一个名为 .arm.exidx 的段,有人能简单地解释一下这是什么,如果需要考虑到对其位置的任何假设吗?
我是否应该注意并注意内核/工具链的任何其他特殊符号(从链接器的角度来看,在列表中-内存分配以确保它们不会导致内存损坏)?
我还看到了我的映射文件
arm.exidx 0x4032428 0x8
arm.exidx 0x40324028 0x8 C:/..../gcc-arm-none-eabi-4_9-2015q3/lib/gcc/arm-none-eabi/4.9.3/fpu libgcc.A (_divdi3.o)
arm.exidx 0x4032430 0x0 C:/..../gcc-arm-none-eabi-4_9-2015q3/lib/gcc/arm-none-eabi/4.9.3/fpu/libgcc.a (_divdi3.o)
0x8 (放松前的大小)
您能否解释一下在放松之前它的尺寸是什么意思? 它实际上是否占用内存空间?
我还看到过零大小的部分,在本例中,为什么它们显示在地图文件上-我使用- GC 段、因此应将它们抛出、在这种情况下、映射文件为什么仍会列出它们(不在已丢弃的段下、而是在常规已分配的段部分下)。
谢谢