Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

elfdump(1)

名前

elfdump - オブジェクトファイルの選択部分のダンプ

形式

elfdump [-cCdegGhHiklmnPrsSuvVy] [-p | -w file]
     [-F fmtopt1,fmtopt2,...] [-I index-expr]
     [-N name] [-O osabi] [-T type] file...

説明

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
Init/Fini Array                       SHT_INIT_ARRAY
                                      SHT_FINI_ARRAY
                                      SHT_PREINIT_ARRAY
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

一般的なマッチングオプション (–I–N–T) を使用すると、データを表示するセクションを選択できます。「マッチングオプション」を参照してください。さらに、elfdump には、もっとも一般的に必要とされるセクションデータのタイプを示す簡易オプションも用意されています。

インタプリタおよびグローバルオフセットテーブルのセクションには特別な ELF セクションタイプはありませんが、代わりに、よく知られた名前 (それぞれ .interp.got) を持つ SHT_PROGBITS セクションとして実装されています。elfdump は、これらの特殊なセクションを認識して表示できます。

表示される情報を絞るためのオプションなしで実行されると、elfdump は、各オブジェクトの使用可能なすべての情報を表示します。

表示される情報の詳細は、Oracle Solaris 11.4 Linkers and Libraries Guideを参照してください。

オプション

サポートしているオプションは、次のとおりです。

–c

セクションヘッダー情報をダンプします。

–C

–F demangle と同等です。–F を参照してください。

–d

.dynamic セクションの内容をダンプします。

–e

ELF ヘッダーをダンプします。

–F fmtopt1, fmtopt2,...

代替出力形式オプションは、次の 1 つ以上のコンマ区切りリストとして指定します。

demangle

C++ シンボル名を復号化します。

fileprefix

オブジェクトの名前をすべての出力行の接頭辞として付加します。

fixhextab

表出力内の 16 進値を、マシンワードサイズのゼロ埋め値として表示します。デフォルトでは、elfdump はそのような値を先頭のゼロを含まない自然な形式で表示します。

notrunc

省略しない長いセクション名を表示します。

shndx | shndxonly

セクションインデックスの表示に使用される形式を変更します。shndx 形式オプションでは、インデックスと名前を使って [index]name という形式でセクションが表示されます。shndxonly 形式オプションでは名前が省略され、セクションインデックスのみが [index] という形式で表示されます。

セクションヘッダー情報を表示する場合、デフォルトでは、sh_link または sh_info フィールドで参照されたセクションインデックスは単純な数値として表示されます。シンボルテーブルのエントリや再配置といった、その他の表示では、セクション名のみが表示されます。shndx および shndxonly 形式オプションでは、すべてのセクションインデックスが、関連する形式を使って一貫した方法で表示されます。

–g

.group セクションの内容をダンプします。

–G

.got セクションの内容をダンプします。

–h

.hash セクションの内容をダンプします。

–H

.SUNW_cap 機能セクションの内容をダンプします。

–i

.interp セクションの内容をダンプします。

–I index-expr

検査するセクションまたはプログラムヘッダーを、特定のインデックスまたはインデックス範囲で修飾します。たとえば、次を使用して、ファイルの 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) の詳細は、「マッチングオプション」を参照してください。

–k

ELF チェックサムを計算します。gelf_checksum(3ELF) のマニュアルページを参照してください。

–l

–F notrunc と同等です。–F を参照してください。

–m

D.SUNW_move セクションの内容をダンプします。

–n

.note セクションの内容をダンプします。デフォルトでは、elfdump は、このデータを解釈せずに 16 進形式で表示します。コアファイルは例外です。core(5) で説明されているコアファイルの note のサブセットは、elfdump によって解釈され、高いレベルの形式 NT_PLATFORMNT_AUXVNT_ASRSNT_PSTATUSNT_PSINFONT_PRCREDNT_UTSNAMENT_LWPSTATUSNT_LWPSINFONT_PRPRIVNT_PRPRIVINFONT_CONTENTNT_ZONENAMENT_SIGACTION、および NT_FDINFO で表示されます。

–N name

検査するセクションまたはプログラムヘッダーを、特定の名前で修飾します。たとえば、複数のシンボルテーブルが入っているファイルにおいて .dynsym シンボルテーブルだけを表示するには、次を使用します。

example% elfdump -N .dynsym filename

ELF プログラムヘッダーには名前がありません。–p オプションを指定した場合、name は、プログラムヘッダータイプを指し、–N オプションの動作は –T オプションの動作と同じになります。たとえば、次を使用して、インタプリタを識別するプログラムヘッダーを表示できます。

example% elfdump -p -N PT_INTERP filename

マッチングオプション (–I–N–T) の詳細は、「マッチングオプション」を参照してください。

–O osabi

オブジェクトを解釈するときに適用するオペレーティングシステムの 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 セクションを検索し、見つかった場合は、linux ABI を持つオブジェクトとしてそのオブジェクトを識別します。それ以外の場合、汎用の ELF ABI を指定しているオブジェクトは、solaris ABI に準拠すると想定されます。

–p

プログラムヘッダーをダンプします。マッチングオプション (–I–N– T) を使用すると、個々のプログラムヘッダーを指定できます。詳細は、「マッチングオプション」を参照してください。

–p オプションと –w オプションを同時に指定することはできません。1 回の elfdump 呼び出しでは、どちらかのオプションしか使用できません。

–P

プログラムヘッダーからの情報に基づいて代替のセクションヘッダー情報を生成および使用し、ファイルに含まれているセクションヘッダー情報を無視します。ファイルにセクションヘッダーがない場合、警告メッセージが出力され、このオプションが自動的に選択されます。セクションヘッダーは、プログラムを実行するためにシステムで使用されることはありません。そのため、悪意のあるプログラムでは、そのセクションヘッダーが削除されていたり、偽の情報を提供するように変更されていたりする場合があります。対照的に、プログラムが実行可能であるためには、プログラムヘッダーは正確である必要があります。プログラムヘッダーから生成された合成のセクションヘッダーを使用すると、変更されたセクションヘッダーを持つファイルを調べることができます。

–r

再配置セクション (つまり、.rel[a]) の内容をダンプします。

–s

シンボルテーブルセクション .SUNW_ldynsym.dynsym、および .symtab の内容をダンプします。アーカイブの場合は、アーカイブシンボルテーブルもダンプします。マッチングオプション (–I–N–T) を使用すると、個々のセクションを指定できます。アーカイブシンボルテーブルは特殊なセクション名 –N ARSYM で指定できます。

コアファイルの場合、shndx フィールドには有効な値が入っていないため、shndx フィールドの値は「unknown」になります。

ver ヘッダーの下に、標準のシンボルテーブル情報に加えて、シンボルのバージョン定義索引も出力します。

マッチングオプション (–I–N–T) の詳細は、「マッチングオプション」を参照してください。

–S

シンボルソートセクション .SUNW_dynsymsort および .SUNW_dyntlssort で指定された順序でソートされたシンボルテーブルセクション .SUNW_ldynsym および .dynsym の内容をダンプします。スレッドローカル記憶領域 (TLS) シンボルは、オフセットでソートされます。通常のシンボルはアドレスでソートされます。ソートセクションによって参照されていないシンボルは表示されません。

–T type

検査するセクションまたはプログラムヘッダーを、特定のタイプで修飾します。たとえば、複数のシンボルテーブルが入っているファイルにおいて .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) の詳細は、「マッチングオプション」を参照してください。

–u

スタックフレーム巻き戻しおよび例外処理に使用されるセクションの内容をダンプします。

–v

バージョンセクション .SUNW_version の内容をダンプします。

–V
–-version

バージョン情報を出力してすぐに終了します。

–w file

マッチングオプション (–I–N–T) を使用して指定されたセクションの内容を、指定されたファイルに書き込みます。たとえば、ファイル内の .text セクションを抽出するには、次のように指定します。

example% elfdump -w text.out -N .text filename

マッチングオプション (–I–N–T) の詳細は、「マッチングオプション」を参照してください。

–p オプションと –w オプションを同時に指定することはできません。1 回の elfdump 呼び出しでは、どちらかのオプションしか使用できません。

–y

.SUNW_syminfo セクションの内容をダンプします。シンボルの属性は、次のキーワードによって伝達されます。

AUXILIARY

シンボル定義は、補助フィルタとして機能します。

CAP

シンボルは、機能と関連付けられています。

COPY

シンボル定義はコピー再配置の結果です。

DEFERRED

シンボルは、遅延依存関係に関連付けられています。

DEPEND

シンボル参照には、関連付けられたオブジェクトに対する依存関係があります。

DIRECT

シンボル参照は、関連付けられた依存関係に直接結合されています。常に DEPEND とともに設定されます。

FILTER

シンボル定義は、標準フィルタとして機能します。

INTERPOSE

シンボル定義は割り込み処理として機能します。

LAZY

レイジー読み込みの必要がある依存関係に対するシンボル参照です。常に DEPEND とともに設定されます。

NODIRECT

外部参照をこのシンボル定義に直接結合することはできません。

WEAK

シンボル定義は、弱い標準フィルタとして機能します。常に FILTER とともに設定されます。

–?
–-help

使用法に関するメッセージを出力したあと、すぐに終了します。

オペランド

次のオペランドを指定できます。

file

指定されたオブジェクトファイルの名前

使用法

マッチングオプション

オプション –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 は使用されたすべてのマッチングオプションと一致する、すべての項目の上位集合を表示します。この機能を使用すると、各項目の指定にもっとも簡単な形式を使用し、複雑な項目のグループを選択できます。

ファイル

liblddbg.so

リンカーデバッグ用ライブラリ

libproc.so

プロセス制御ライブラリ

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/linker
インタフェースの安定性
確実

関連項目

ar(1)dump(1)elffile(1)file(1)nm(1)pvs(1)elf(3ELF)libproc(3LIB)core(5)attributes(7)

OracleSolaris 11.4 リンカーとライブラリガイド

スタック巻き戻しおよび例外処理に使用されるセクションは、使用されているコンパイラとプラットフォームによって、ELF セクションタイプが SHT_PROGBITS または SHT_AMD64_UNWIND になります。これらのセクションは、.eh_frame.eh_frame_hdr 、および .exception_ranges の名前で認識されます。

コアファイルには、それぞれプログラムヘッダーによって表される複数のオブジェクトからの情報が含まれています。elfdumplibproc を使用して、各プログラムヘッダーに対応するオブジェクト名とマッピング属性を特定します。プログラムヘッダーはこの情報を表示するために pr_mapname および pr_mflags フィールドで拡張されます。セクション名はそれらが適用されるオブジェクトの名前で拡張されます。