标签: c gcc map-files
我在检查使用GNU链接器的-Map=mapfile选项生成的映射文件时发现了一些奇怪的东西。它列出了几个符号属于.text部分,而二进制符号表将它们列为.rodata部分的一部分。我怀疑这是一种厚颜无耻的优化,因为编译器可能确定这些符号只是被读过,但令我惊讶的是地图文件并没有反映出来。我的理解是链接几乎是编译过程的最后阶段,所有优化都在它之前发生。那是对的吗?为什么之后这些符号会被优化?
-Map=mapfile
.text
.rodata
正如您可能推断的那样,工具链是GCC。源代码用C语言编写。