哪个* .o文件或哪个库对应于objdump转储的符号?

时间:2013-10-24 00:49:36

标签: c objdump

有没有办法知道符号来自objdump的来源。

当我在我的精灵文件上objdump时,我有几个符号(如下所示):

8010864 g   F   .text   0000007c    __floatdisf

8010864 g   F   .text   0000007c    __aeabi_l2f

8010854 g   F   .text   0000008c    __floatundisf   

我不确定他们来自哪里。它们不是libm库的一部分。

2 个答案:

答案 0 :(得分:1)

这些函数是编译器插入的胶水,用于从整数到浮点类型的转换。 (floatdisf将有符号整数转换为float,floatundisf将无符号整数转换为float,aeabi_l2ffloatdisf的别名。)

LLVM中这些功能的实现可以在以下位置找到:

如路径所示,它们是compiler_rt库的一部分,根据需要自动链接。

答案 1 :(得分:0)

首先从lib.a中提取所有.o文件(在某些临时目录中) ar -x lib.a

然后使用以下命令查找哪个.o文件包含您的符号 ar -t lib.a | xargs grep "symbol" -l