在GNU ld映射文件中包含静态符号?

时间:2014-02-10 14:33:10

标签: c map static linker ld

将模块局部符号定义为静态(假设为C)是一种很好的编程习惯。不幸的是,这会干扰对结果对象/二进制文件的分析。例如,GNU ld映射文件(-Map = ...)不包含静态符号,因此错过了重要信息(例如,模块中确实有多少个符号,每个函数的大小定义等)

有没有办法让GNU ld在地图文件中包含静态符号,而无需修改原始源代码? (很明显,人们可以使静态修饰符成为条件,但在分析第三方项目时,这是一项非常繁琐的工作。)

1 个答案:

答案 0 :(得分:3)

虽然链接器映射文件和nm不包含没有extern链接的符号,但objdump会执行(只要调试信息可用)。您需要-t选项。

请参阅this related answer