加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – objdump和解析本地函数调用的链接?

发布时间:2020-12-14 02:12:41 所属栏目:Linux 来源:网络整理
导读:如果我在( linux amd64).o文件上运行objdump -d,函数调用将显示,而不会完成链接时间分辨率.例: 90: 66 89 44 24 1c mov %ax,0x1c(%rsp) 95: 44 89 74 24 10 mov %r14d,0x10(%rsp) 9a: e8 00 00 00 00 callq 9f foo+0x9f 9f: 83 f8 ff cmp $0xffffffffffffff
如果我在( linux amd64).o文件上运行objdump -d,函数调用将显示,而不会完成链接时间分辨率.例:

90:   66 89 44 24 1c          mov    %ax,0x1c(%rsp)
  95:   44 89 74 24 10          mov    %r14d,0x10(%rsp)
  9a:   e8 00 00 00 00          callq  9f <foo+0x9f>
  9f:   83 f8 ff                cmp    $0xffffffffffffffff,%eax
  a2:   74 5e                   je     102 <foo+0x102>

函数中的一个分支正确显示,但callq只是为链接器输入的存根(有四个字节的零可供链接器放入正确的地址).

有没有一种方法,没有实际链接,以获得已解决函数名称的汇编列表?我不关心最终将使用的地址,只关心函数的名称.该信息必须位于.o文件中,因为链接器必须使用它来完成其工作.

我问,因为有问题的代码进入的共享库大约是140Mb,并且需要很长时间才能运行objdump -d来获取asm转储,并将所有函数调用解析为实际名称.

解决方法

Is there a way,without actually linking,to get an assembly listing that has the function names resolved?

是的:使用objdump -dr foo.o

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读