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バージョン文字列を持ちますが、1つは括弧で囲まれ、もう1つはそうではありません。私は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も付属しています。

おすすめ記事