1

Consider the following truncated output from running objdump -T (Prints dynamic symbol table entries) on the GNU ls utility.

/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

What does Base mean in the last line 6th column? For example, It is apparent that (GLIBC_2.2.5) is the glibc version for strncmp function. However, in which external libraries are the Base functions defined? Any pointers in understanding this would be helpful.

Harsh
  • 151

1 Answers1

2

Base means that there is no version associated with the symbol, i.e. the libraries which provide the symbols don’t provide multiple versions (or in the case of symbols in ls itself, ls contains a single version). The libraries used by ls can be seen using ldd /bin/ls.

See What do the multiple GLIBC versions mean in the output of ldd? for details.

Stephen Kitt
  • 434,908