Ubuntu 18.04
ELF64
Cソースからコンパイルされ、共有オブジェクトに関連付けられた単純なバイナリがあります。確認してみましたが、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