誰かがreadelf
を使用してシンボルテーブルの表示される列を説明できますか?
以下を検討してください。
シンボルテーブル.symtab
には1203のエントリがあります:
Num: Value Size Type Bind Vis Ndx Name
310: a0008120 0 NOTYPE GLOBAL DEFAULT ABS _gp
734: a0000010 32 OBJECT GLOBAL DEFAULT 77 v
818: 9d000018 496 FUNC GLOBAL DEFAULT 71 main
849: a0000124 4 OBJECT GLOBAL DEFAULT 78 phrase
955: a0000000 9 OBJECT GLOBAL DEFAULT 77 peppers
1020: a000023c 192 OBJECT GLOBAL DEFAULT 80 bins
Num:
=シンボル番号Value
=シンボルのアドレスSize
=シンボルのサイズType
=シンボルタイプ:Func
=関数、Object
、File
(ソースファイル名)、Section
=メモリセクション、Notype
=型付けされていない絶対シンボルまたは未定義Bind
= GLOBAL
バインディングは、シンボルがファイルの外部に表示されることを意味します。 LOCAL
バインディングはファイルでのみ表示されます。 WEAK
はグローバルのようなもので、シンボルを上書きできます。Vis
=シンボルは、デフォルト、保護、非表示、または内部にすることができます。Ndx
=シンボルが含まれるセクション番号。ABSは絶対を意味します。セクションアドレスの再配置には調整されません。Name
=シンボル名次のいずれかを行うことができます。
man readelf
またはこれらのチュートリアルを見てください:
Ndxフィールドは、そのシンボルが定義されているセクション番号を示していると思います。
readelf -a <file>
、およびアドレスが特定のシンボルに対応するセクションを見つけます。
そのセクションのセクション番号がNdxフィールドに表示されると思います。