离职的同事没有留下可用的源代码,害的我不得不去跟object文件作斗争,elf格式不是一般的复杂,一时半会儿不能完全掌握。但我想获知的主要是其中的初始化函数完成了哪些工作,因此获得它调用了哪些函数比较重要,而完成这一点可以借助objdump来完成,具体过程如下:
-
d:\Tornado-2.2-xscale\host\x86-win32\bin\torVars.bat
,设置环境变量 -
objdumparm -d xx.o>xx.s
得到汇编代码 -
objdumparm -r xx.o>rel.txt
得到relocation信息
汇编代码中的函数调用在源程序中统统为0xebfffffe,是需要在link的时候重定位的,所以需要对照rel.txt,可以得到实际调用的函数名称,如下面的例子所示:
-
xx.s
be1c: ebfffffe bl 0
-
rel.txt
0000be1c R_ARM_PC24 ipAttach
我们就可以知道,在0000be1c处调用了ipAttach函数。