ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- オブジェクトファイルの選択部分のダンプ
elfdump [-cCdegGhHiklmnPrsSuvy] [-p | -w file] [-I index-expr] [-N name] [-O osabi] [-T type] filename...
elfdump ユーティリティは、指定されたオブジェクトファイルの選択部分をシンボルでダンプします。オプションを指定することにより、オブジェクトファイルの特定部分を抽出できます。
elfdump ユーティリティは、dump(1) ユーティリティと機能的に似ています。elfdump のインタフェースの方が dump よりも新しく、ユーザーフレンドリです。ただし、シェルスクリプト内で使用するような場合は、dump ユーティリティの方が適しています。
elfdump は、ar(1) で作成したアーカイブファイルの検査にも使用できます。その場合、アーカイブ内の各オブジェクトは、指定されたオプションに従って処理されます。
elfdump を使用すると、任意の ELF オブジェクトの ELF ヘッダー、プログラムヘッダーの配列、およびセクションヘッダーの配列を表示できます。また、次のタイプのセクションに含まれているデータを表示することもできます。
Category Option ELF Section Type Dynamic -d SHT_DYNAMIC Global Offset Table (GOT) -G Special. See below. Group -g SHT_GROUP Capabilities -H SHT_SUNW_cap Hash Table -h SHT_HASH Interpreter -i Special, see below. Move -m SHT_SUNW_move Note -n SHT_NOTE Relocation -r SHT_RELA SHT_REL Stack Unwind/Exceptions -u Special. See below. Syminfo -y SHT_SUNW_syminfo Symbol Sort -S SHT_SUNW_symsort SHT_SUNW_tlssort Symbol Table -s SHT_SYMTAB SHT_DYNSYM SHT_SUNW_LDYNSYM SHT_SUNW_versym Versioning -v SHT_SUNW_verdef SHT_SUNW_verneed
インタプリタおよびグローバルオフセットテーブルのセクションには特殊な ELF セクションタイプは存在せず、代わりに、既知の名前 (それぞれ、.interp と .got) を使用して SHT_PROGBITS セクションとして実装されます。elfdump は、これらの特殊なセクションを認識して表示できます。
スタックの巻き戻しと例外処理に使用されるセクションは、使用されているコンパイラやプラットフォームに応じて、SHT_PROGBITS または SHT_AMD64_UNWIND の ELF セクションタイプになる場合があります。これらのセクションは、.eh_frame、.eh_frame_hdr 、および .exception_ranges の名前で認識されます。
表示される情報を絞るためのオプションなしで実行されると、elfdump は、各オブジェクトの使用可能なすべての情報を表示します。
表示される情報の詳細については、『リンカーとライブラリ』を参照してください。
次のオプションがサポートされています。
セクションヘッダー情報をダンプします。
C++ シンボル名を復号化します。
.dynamic セクションの内容をダンプします。
ELF ヘッダーをダンプします。
.group セクションの内容をダンプします。
.got セクションの内容をダンプします。
.hash セクションの内容をダンプします。
.SUNW_cap 機能セクションの内容をダンプします。
.interp セクションの内容をダンプします。
検査するセクションまたはプログラムヘッダーを、特定のインデックスまたはインデックス範囲で修飾します。たとえば、次を使用して、ファイルの 3 番目のセクションヘッダーを表示できます。
example% elfdump -c -I 3 filename
index-expr には、上記の例に示したように、特定の項目を指定する負でない単一の整数値を指定できます。または、index-expr は、項目の範囲を示すコロン (:) で区切られた 2 つの負でない単一の整数値で構成することもできます。次の例は、ファイル内の 3 番目、4 番目、および 5 番目のプログラムヘッダーを表示します。
example% elfdump -p -I 3:5 filename
インデックスの範囲を指定する場合、2 番目の値を省略すると、ファイル内の最後の項目を示すことができます。たとえば、次の文は 10 番目から最後までのすべてのセクションヘッダーを一覧表示します。
example% elfdump -c -I 10: filename
マッチングオプション (-I、-N、-T) の詳細は、「マッチングオプション」を参照してください。
ELF チェックサムを計算します。gelf_checksum(3ELF) のマニュアルページを参照してください。
省略しない長いセクション名を表示します。
D.SUNW_move セクションの内容をダンプします。
.note セクションの内容をダンプします。デフォルトでは、elfdump は、このデータを解釈せずに 16 進形式で表示します。コアファイルは例外です。core(4) で説明されているコアファイルの note のサブセットは、elfdump によって解釈され、高いレベルの形式 NT_PRSTATUS、NT_PRPSINFO、NT_PLATFORM、NT_AUXV、NT_ASRS、NT_PSTATUS、NT_PSINFO、NT_PRCRED、NT_UTSNAME、NT_LWPSTATUS、NT_LWPSINFO、NT_PRPRIV、NT_PRPRIVINFO、NT_CONTENT、および NT_ZONENAME で表示されます。
検査するセクションまたはプログラムヘッダーを、特定の名前で修飾します。たとえば、複数のシンボルテーブルが入っているファイルにおいて .dynsym シンボルテーブルだけを表示するには、次を使用します。
example% elfdump -N .dynsym filename
ELF プログラムヘッダーには名前がありません。-p オプションを指定した場合、name は、プログラムヘッダータイプを指し、-N オプションの動作は -T オプションの動作と同じになります。たとえば、次を使用して、インタプリタを識別するプログラムヘッダーを表示できます。
example% elfdump -p -N PT_INTERP filename
マッチングオプション (-I、-N、-T) の詳細は、「マッチングオプション」を参照してください。
オブジェクトを解釈するときに適用するオペレーティングシステム ABI を指定します。osabi には、/usr/include/sys/elf.h にある ELFOSABI_ 定数のいずれかの名前または値を指定できます。便宜上、これらの名前から ELFOSABI_ 接頭辞を省略できます。osabi では、2 つの値が完全にサポートされています。solaris は、Solaris オペレーティングシステムのネイティブ ABI です。none は、汎用の ELF ABI です。ほかのオペレーティングシステムの ABI のサポートは、不完全であるか、存在しない可能性があります。文字列を取得できない項目は、数値形式で表示されます。
-O が使用されておらず、オブジェクトの ELF ヘッダーが汎用でない ABI を指定している場合は、そのオブジェクトによって指定された ABI が使用されます。オブジェクトが汎用の ELF ABI を指定している場合、elfdump は .note.ABI-tag セクションを検索し、見つかった場合は、そのオブジェクトの ABI を linux として識別します。それ以外の場合、汎用の ELF ABI を指定しているオブジェクトは solaris ABIに準拠していると見なされます。
プログラムヘッダーをダンプします。個々のプログラムヘッダーは、マッチングオプション (-I、-N、-T) を使用して指定できます。詳細については、「マッチングオプション」を参照してください。
-p オプションと -w オプションを同時に指定することはできません。1 回の elfdump 呼び出しでは、どちらかのオプションしか使用できません。
プログラムヘッダーからの情報に基づいて代替のセクションヘッダー情報を生成および使用し、ファイルに含まれているセクションヘッダー情報を無視します。ファイルにセクションヘッダーがない場合、警告メッセージが出力され、このオプションが自動的に選択されます。セクションヘッダーは、プログラムを実行するためにシステムで使用されることはありません。そのため、悪意のあるプログラムでは、そのセクションヘッダーが削除されていたり、偽の情報を提供するように変更されていたりする場合があります。対照的に、プログラムが実行可能であるためには、プログラムヘッダーは正確である必要があります。プログラムヘッダーから生成された合成のセクションヘッダーを使用すると、変更されたセクションヘッダーを持つファイルを調べることができます。
再配置セクション (つまり、.rel[a]) の内容をダンプします。
.SUNW_ldynsym、.dynsym、および .symtab シンボルテーブルセクションの内容をダンプします。アーカイブの場合は、アーカイブシンボルテーブルもダンプします。個々のセクションは、マッチングオプション (-I、- N、-T) を使用して指定できます。アーカイブシンボルテーブルは特殊なセクション名 -N ARSYM で指定できます。
コアファイルの場合、shndx フィールドには有効な値が入っていないため、shndx フィールドの値は「unknown」になります。
ver ヘッダーの下に、標準のシンボルテーブル情報に加えて、シンボルのバージョン定義索引も出力します。
マッチングオプション (-I、-N、-T) の詳細は、「マッチングオプション」を参照してください。
.SUNW_dynsymsort および .SUNW_dyntlssort シンボルソートセクションで指定された順序でソートされた .SUNW_ldynsym および .dynsym シンボルテーブルセクションの内容をダンプします。TLS (Thread Local Storage) シンボルはオフセットでソートされます。通常のシンボルはアドレスでソートされます。ソートセクションによって参照されていないシンボルは表示されません。
検査するセクションまたはプログラムヘッダーを、特定のタイプで修飾します。たとえば、複数のシンボルテーブルを含むファイル内の .dynsym シンボルテーブルだけを表示するには、次のコマンドを使用できます。
example% elfdump -T SHT_DYNSYM filename
type の値には数値、または /usr/include/sys/elf.h で定義されている SHT_ シンボル名のいずれかを指定できます。SHT_ 接頭辞は省略可能であり、type は大文字小文字を区別しません。そのため、上の例は次のように記述することもできます。
example% elfdump -T dynsym filename
-p オプションを指定した場合、type はプログラムヘッダータイプを指すため、特定のプログラムヘッダーを表示できます。たとえば、インタプリタを識別するプログラムヘッダーは、次のコマンドを使用して表示できます。
example% elfdump -p -T PT_INTERP filename
type の値には数値、または /usr/include/sys/elf.h で定義されている PT_ シンボル名のいずれかを指定できます。PT_ 接頭辞は省略可能であり、type は大文字小文字を区別しません。そのため、上記の例は次のように記述することもできます。
example% elfdump -p -T interp filename
マッチングオプション (-I、-N、-T) の詳細は、「マッチングオプション」を参照してください。
スタックフレーム巻き戻しおよび例外処理に使用されるセクションの内容をダンプします。
バージョンセクション .SUNW_version の内容をダンプします。
マッチングオプション (-I、-N、-T) を使用して指定されたセクションの内容を、指定されたファイルに書き込みます。たとえば、ファイル内の .text セクションを抽出するには、次のように指定します。
example% elfdump -w text.out -N .text filename
マッチングオプション (-I、-N、-T) の詳細は、「マッチングオプション」を参照してください。
-p オプションと -w オプションを同時に指定することはできません。1 回の elfdump 呼び出しでは、どちらかのオプションしか使用できません。
.SUNW_syminfo セクションの内容をダンプします。シンボルの属性は、文字トークンによって伝達されます。
シンボル定義は、補助フィルタとして機能します。
D とともに割り当てられ、シンボル参照は、関連付けられている依存関係定義に直接結合すべきです。
シンボル定義は、コピー再配置の結果です。
シンボル参照は、定義を含む依存関係へ直接関連付けられます。
シンボル定義は、標準フィルタとして機能します。
シンボル定義は、割り込みシンボルとして機能します。
レイジー読み込みの必要がある依存関係に対するシンボル参照です。
外部参照をこのシンボル定義に直接結合することはできません。
シンボルは、遅延 (延期された) 依存関係と関連付けられています。
シンボルは、機能と関連付けられています。
次のオペランドがサポートされています。
指定されたオブジェクトファイルの名前
オプション -I、-N、および -T は、まとめてマッチングオプションと呼ばれます。これらのオプションは、インデックス、名前、またはタイプによって、検査するプログラムヘッダーまたはセクションの範囲を絞り込むために使用されます。
マッチングオプションの厳密な解釈は、使用されているほかのオプションによって異なります。
-p オプションとともに使用した場合、マッチングオプションはプログラムヘッダーを参照します。-I は、プログラムヘッダーのインデックスを指します。-T は、プログラムヘッダータイプを指します。プログラムヘッダーには名前がないため、-N オプションは、プログラムヘッダーに対しては -T と同様に動作します。
マッチングオプションは、オプション -c、-g、-m、-n、-r、-s、-S、-u、-w のいずれかとともに使用された場合、セクションをインデックス、名前、またはタイプで選択するために使用されます。
オプション -c、-g、-m、-n、-p-r、-s、-S、-u、-w のいずれも指定されず、マッチングオプションが単独で使用された場合、elfdump は各オブジェクトを検査し、一致したいずれかのセクションの内容を表示します。
elfdump の特定の呼び出しに、任意の数およびタイプのマッチングオプションを混在させることができます。この場合、elfdump は使用されたすべてのマッチングオプションと一致する、すべての項目の上位集合を表示します。この機能を使用すると、各項目の指定にもっとも簡単な形式を使用し、複雑な項目のグループを選択できます。
リンカーデバッグ用ライブラリ
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
ar(1), dump(1), elffile(1), file(1), nm(1), pvs(1), elf(3ELF), core(4), attributes(5)