ELF部分填充

时间:2016-08-19 06:24:27

标签: gcc linker arm sections toolchain

我可能太好奇或小心,但请考虑一下:
如果我将一个数组放在某个部分 char buff[128] __attribute__((my_section)); 然后使用链接描述文件将该部分放在例如地址0x10004000处, 我可以永远确定,&buff[0]总是为0x10004000吗? (我正在考虑ARM公司的ARMCC(前RealView)以及基本的GCC工具链和GNU ARM开源。)从开始或可能某些服务(运行时,链接,特定的tollchain)可能有buff偏移量或填充量东西可以放在buff之前的0x10004000处吗? 另外,在这种情况下C和C ++之间是否有任何差异?因为C ++有“在后台做更多的事情”。 :) 我可以提供任何类型的文件以及您的知识 - 非常感谢。

1 个答案:

答案 0 :(得分:0)

是的,& buff [0]将始终为0x10004000。您可以在Keil帮助文件的“编译器用户指南”一书中看到第9.46节。

Char数组是c / c ++的内联对象。所以编译器对c / c ++做了同样的事情。