objdump 동적 기호 테이블에서 Base는 무엇을 의미합니까?

objdump 동적 기호 테이블에서 Base는 무엇을 의미합니까?

동적 기호 테이블 항목을 인쇄하는 objdump -TGNU 유틸리티에서 실행되는 다음의 잘린 출력을 고려하십시오 .ls

/usr/bin/ls:     file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.3)  __ctype_toupper_loc
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) getenv
0000000000000000      DO *UND*  0000000000000000 (GLIBC_2.2.5) __progname
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) sigprocmask
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.3.4) __snprintf_chk
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) raise
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.34) __libc_start_main
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) abort
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) __errno_location
0000000000000000      DF *UND*  0000000000000000 (GLIBC_2.2.5) strncmp
0000000000000000  w   D  *UND*  0000000000000000  Base        _ITM_deregisterTMCloneTable

Base마지막 행과 열 6은 무엇을 의미하나요? 예를 들어, 이것이 함수 버전 (GLIBC_2.2.5)이라는 것이 분명합니다 . 그러나 이러한 함수는 어떤 외부 라이브러리에 정의되어 있습니까? 이것을 이해하는 데 도움이 될 것입니다.glibcstrncmpBase

답변1

Base기호와 연관된 버전이 없음을 의미합니다.ls기호를 제공하는 라이브러리 는 여러 버전(또는 기호 자체의 경우 ls단일 버전)을 제공하지 않습니다. ls를 사용하여 사용된 라이브러리를 볼 수 있습니다 ldd /bin/ls.

바라보다ldd 출력에 여러 GLIBC 버전이 있다는 것은 무엇을 의미합니까?더 알아보기.

관련 정보