(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 はリンカ用に挿入された単なるスタブです (リンカが適切なアドレスを挿入できるように 4 バイトのゼロを使用できます)。
実際にリンクせずに、関数名が解決されたアセンブリ リストを取得する方法はありますか? 関数の名前だけで、最終的に使用されるアドレスは気にしません。リンカーはジョブを実行するためにそれを消費する必要があるため、その情報は .o ファイルにある必要があります。
問題のコードが入る共有ライブラリは約 140Mb であり、その上で objdump -d を実行して、すべての関数呼び出しが実際の名前に解決された asm ダンプを取得するには長い時間がかかるためです。