jmpq怎么会在错误的地方结束?

时间:2017-02-02 22:45:22

标签: debugging assembly x86-64 intel

我正在调试llvm运行时链接器加载的代码重定位的一些问题。发生一件奇怪的事情是在调用已通过R_X86_64_PLT32重新定位的函数后发生段错误。在这种情况下,llvm在GOT(全局偏移表?)中创建一个条目并进行间接跳转。 callq指令最终到达:

0x7ffff7f12021        jmpq   *0xded21(%rip)        # 0x7ffff7ff0d48

所以我希望下一条指令位于0x7ffff7ff0d48。现在这个位置对我来说看起来不像真正的代码,但这是另一个故事。困扰我的是,经过一步,我最终到了这里:

0x3415b20       adc    %bl,0x323(%rsi) 

这是一个完全不同的位置,也是一个甚至似乎杀死gdb的段错误的来源。 jmpq怎么会在这里结束?是否有一些截断?

0 个答案:

没有答案