1

0x0000000149ab0d2c <+0000> jmpq *0x1e04b6(%rip) # 0x149c911e8

(gdb) p $rip $1 = (void (*)(void)) 0x149ab0d2c

(gdb) p $rip+6+0x1e04b6 $4 = (ボイド (*)(ボイド)) 0x149c911e8

stepiの後:(ただし、0x149c911e8にあるはずです...)

(gdb) p $rip $5 = (void (*)(void)) 0x148c46d4a

ところで、私の環境は Mac OS X 10.6.4 です。プログラムは 2 つの dylib をロードします。どちらも -fPIC オプションでコンパイルされた同じスタティック ライブラリにリンクしています。この問題は dylib を混乱させ、それらの 1 つが別の dylib の関数を呼び出さないようにします。これらは実際には互いに独立しているため、そうすべきではありません。

4

1 に答える 1

3

*、これが相対的なジャンプではなく、絶対的なジャンプであることを示しています。絶対ジャンプは、レジスタに格納されているアドレスにジャンプするか、この場合、指定された場所に格納されているアドレスにジャンプします。アドレス0x149c911e8(x/gx 0x149c911e8)の内容を読むと、おそらくアドレス0x148c46d4aが含まれていることがわかります。

于 2011-04-15T18:49:09.990 に答える