objdump -T에서 동일한 버전 문자열의 일부 인스턴스가 괄호 안에 포함되는 이유는 무엇입니까?

objdump -T에서 동일한 버전 문자열의 일부 인스턴스가 괄호 안에 포함되는 이유는 무엇입니까?

다음을 실행 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도 제공됩니다.

관련 정보