다음을 실행 objdump -T
하여 생성된 출력의 다음 조각을 확인하세요 libc.so.6
.
000000000009f8a0 g DF .text 000000000000001d (GLIBC_2.2.5) aio_write64
0000000000119d00 g DF .text 0000000000000034 GLIBC_PRIVATE __pread64_nocancel
000000000009aae0 g DF .text 00000000000003c0 GLIBC_2.34 pthread_rwlock_timedwrlock
0000000000133db0 g DF .text 0000000000000354 GLIBC_2.2.5 __backtrace_symbols
00000000001184f0 w DF .text 00000000000006c2 GLIBC_2.23 fts64_read
000000000009aae0 g DF .text 00000000000003c0 (GLIBC_2.2.5) pthread_rwlock_timedwrlock
출력의 1행과 4행은 동일한 GLIBC
버전 문자열을 갖지만 하나는 괄호로 묶여 있고 다른 하나는 그렇지 않습니다. 나는 objdump
다른 많은 바이너리 elf
의 출력에서 이러한 차이를 관찰했습니다 . (GLIBC_2.2.5)
출력 GLIBC_2.2.5
사이에 미묘한 차이가 있습니까 objdump
?
답변1
바라보다-T
옵션 설명:
버전이 기호에 대한 버전이 지정되지 않은 참조를 확인할 때 사용되는 기본 버전인 경우 그대로 표시하고, 그렇지 않으면 괄호 안에 넣습니다.
따라서 라이브러리는 버전 2.2.5를 제공 aio_write64
하지만 이전 버전과의 호환성을 위해서만 기본적으로 다른 버전이 사용됩니다. 이번에도 기본 pthread_rwlock_timedwrlock
버전은 2.34이지만 2.2.5도 제공됩니다.