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>

그러나 한 섹션에서만 기호를 인쇄하면 plt출력이 나오지 않습니다.

$ objdump -t -j .plt bin

bin:     file format elf64-x86-64

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

분해시 왜 plt이 부분에 대한 기호가 인쇄되어 있지 않습니까?objdump -t

관련 정보