objdumpはシンボルのみを分解し、印刷時に他のシンボルを表示します。

objdumpはシンボルのみを分解し、印刷時に他のシンボルを表示します。

Ubuntu 18.04

ELF64Cソースからコンパイルされ、共有オブジェクトに関連付けられた単純なバイナリがあります。確認してみましたが、objdump次のような混乱が生じました。

$ objdump -d -j .plt bin

bin:     file format elf64-x86-64


Disassembly of section .plt:

00000000000006a0 <.plt>:
 6a0:   ff 35 62 09 20 00       pushq  0x200962(%rip)        # 201008 <_GLOBAL_OFFSET_TABLE_+0x8>
 6a6:   ff 25 64 09 20 00       jmpq   *0x200964(%rip)        # 201010 <_GLOBAL_OFFSET_TABLE_+0x10>
 6ac:   0f 1f 40 00             nopl   0x0(%rax)

00000000000006b0 <foo@plt>:
 6b0:   ff 25 62 09 20 00       jmpq   *0x200962(%rip)        # 201018 <foo>
 6b6:   68 00 00 00 00          pushq  $0x0
 6bb:   e9 e0 ff ff ff          jmpq   6a0 <.plt>

00000000000006c0 <dlopen@plt>:
 6c0:   ff 25 5a 09 20 00       jmpq   *0x20095a(%rip)        # 201020 <dlopen@GLIBC_2.2.5>
 6c6:   68 01 00 00 00          pushq  $0x1
 6cb:   e9 d0 ff ff ff          jmpq   6a0 <.plt>

00000000000006d0 <__printf_chk@plt>:
 6d0:   ff 25 52 09 20 00       jmpq   *0x200952(%rip)        # 201028 <__printf_chk@GLIBC_2.3.4>
 6d6:   68 02 00 00 00          pushq  $0x2
 6db:   e9 c0 ff ff ff          jmpq   6a0 <.plt>

ただし、1つのセクションでのみシンボルを印刷してもplt出力は出ません。

$ objdump -t -j .plt bin

bin:     file format elf64-x86-64

SYMBOL TABLE:
00000000000006a0 l    d  .plt   0000000000000000              .plt

分解時になぜpltこの部分のシンボルが印刷されないのですか?objdump -t

ベストアンサー1

おすすめ記事