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

印刷ビューの終了

更新: 2014 年 7 月
 
 

elfdump(1)

名前

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

形式

elfdump [-cCdegGhHiklmnPrsSuvy] [
-p | -w file]
     [-F fmtopt1,fmtopt2
,...] [-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 は、これらの特殊なセクションを認識して表示できます。

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

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

表示される情報の詳細は、Oracle Solaris 11.2 リンカーとライブラリガイド を参照してください。

オプション

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

–c

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

–C

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

–d

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

–e

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

–F fmtopt1, fmtopt2,...

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

demangle

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

fileprefix

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

fixhextab

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

notrunc

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

shndx

[index]name という形式でセクション名にセクションインデックスを含めます。デフォルトでは、elfdump はセクション名のみを表示します。

shndxonly

[index] という形式でセクションインデックスごとにセクションを表示します。デフォルトでは、elfdump はセクション名のみを表示します。

–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(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 で表示されます。

–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) シンボルは、オフセットでソートされます。通常のシンボルはアドレスでソートされます。ソートセクションによって参照されていないシンボルは表示されません。

–Ttype

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

–w file

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

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

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

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

–y

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

A

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

B

D とともに割り当てられ、シンボル参照は、関連付けられている依存関係定義に直接結合すべきです。

C

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

D

シンボル参照は、定義を含む依存関係へ直接関連付けられます。

F

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

I

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

L

レイジー読み込みの必要がある依存関係に対するシンボル参照です。

N

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

P

シンボルは、遅延 (延期された) 依存関係と関連付けられています。

S

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

オペランド

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

filename

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

使用法

マッチングオプション

オプション –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

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

属性

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

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

関連項目

ar(1), dump(1), elffile(1), file(1), nm(1), pvs(1), elf(3ELF), core(4), attributes(5)

Oracle Solaris 11.2 リンカーとライブラリガイド