查看运行objdump -T
on生成的以下输出片段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。