gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:42:58 28 4
gpt4 key购买 nike

如果我在 (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 只是为链接器放入的 stub (有四个字节的零可供链接器放入正确的地址)。

有没有办法在没有实际链接的情况下获得已解析函数名称的汇编列表?我不关心最终会用到的地址,只关心函数的名字。该信息必须在 .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

关于linux - objdump 和解析本地函数调用的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992938/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com