0x0000000149ab0d2c < 0000> jmpq * 0x1e04b6(%RIP)#0x149c911e8为什么jmpq可以跳到与Mac OS X上的GDB提示不同的地址?
(GDB)P $ RIP $ 1 =(无效(*)(无效))0x149ab0d2c
(GDB)P $ RIP + 6 + 0x1e04b6 $ 4 =(无效(*)(无效))0x149c911e8
步骤1之后:(它应该是在0x149c911e8然后,然而...)
(GDB)p $ RIP $ 5 =( void(*)(void))0x148c46d4a
顺便说一句,我的环境是Mac OS X 10.6.4。该程序加载2个dylib,这两个dylib链接到使用-fPIC选项编译的相同静态库。这个问题混淆了dylib,并让其中一个在另一个调用函数,这不应该,因为它们实际上是相互独立的。
您的意思是_indirect_? – ninjalj 2011-04-15 22:14:51