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

Linux objdump和解析本地函数调用的链接?,linux,objdump,Linux,Objdump,如果我在一个(LinuxAMD64).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

如果我在一个(LinuxAMD64).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>
90:66 89 44 24 1c移动%ax,0x1c(%rsp)
95:4489742410MOV%r14d,0x10(%rsp)
9a:e8 00 00 callq 9f
9f:83 f8 ff cmp$0xFFFFFFFFFFFFFF,%eax
a2:74 5e je 102
函数中的一个分支正确显示,但callq只是为链接器放入的存根(有四个字节的零可供链接器放入正确的地址)

有没有一种方法可以在不进行实际链接的情况下获得一个已解析函数名的程序集列表?我不关心最终将使用的地址,只关心函数的名称。该信息必须在.o文件中,因为链接器必须使用它来完成其工作

我问这个问题是因为讨论中的代码所使用的共享库大约是140Mb,在这个库上运行objdump-d需要很长时间才能获得asm转储,所有函数调用都解析为它们的实际名称

有没有一种方法可以在不进行实际链接的情况下获得一个已解析函数名的程序集列表


是:使用
objdump-dr foo.o

我已经为我的特定问题找到了解决方法。我可以运行nm来获取巨大的共享库中的函数地址,然后使用nm输出运行objdump with--start address。如果可能的话,我还是会对原问题的答案感兴趣。我喜欢<代码> ObjDIP-DRWC-Munelt/Cord>,因为<代码> -W和 -C>代码>也很好:没有线包装,也没有C++名字。(我的shell中的别名disas='objdump-drwC-Mintel')