elffile - ELFファイルタイプの識別
elffile [-s basic | detail | summary] [-V] file...
elffile ユーティリティーは、ELF オブジェクトとそれに関連するファイルタイプで使用することを目的にした、file コマンドの特殊なバリエーションです。elffile は、次の種類のファイルを識別できます。
file によって提供される情報に加えて、elffile はアーカイブメンバーのタイプを識別します。
elffile は、file と同じ出力を提供します。
その他の種類のファイルはすべて、ELF 以外として報告されます。このようなファイルをそれ以上分類しようとする試みは行われません。file ユーティリティーは、汎用ファイルの識別に推奨されます。
サポートしているオプションは、次のとおりです。
提供される出力の形式を指定します
file によって使用されるのと同じ形式の 1 行の説明を生成します。
アーカイブ以外の場合、summary の出力は basic と同じです。アーカイブを処理する場合は、基本出力行のあとに、アーカイブメンバーごとの 1 行の出力が続きます。
アーカイブ以外の場合、summary の出力は basic と同じです。アーカイブを処理する場合は、アーカイブ内容のサマリーの説明が基本出力の最後に追加されます。–s オプションが指定されていない場合、elffile はデフォルトで summary 形式を使用します。
バージョン情報を出力してすぐに終了します。
使用法に関するメッセージを出力したあと、すぐに終了します。
サマリー形式を使用しているときにアーカイブに対して生成される出力は、そのアーカイブの内容によって異なります。アーカイブに、同じプラットフォームに対するオブジェクトの同種コレクションが含まれている場合は、そのプラットフォームの詳細が 1 つのオブジェクトに使用されるのと同じ形式で示されます。それ以外の場合は、サマリーの説明が生成されます。詳細形式を使用すると、個々のアーカイブメンバーに関するより具体的な情報を取得できます。
サマリー形式と詳細形式では、アーカイブのすべてのメンバーを検査する必要があります。実行の速度はアーカイブメンバーの数に比例し、きわめて大きなアーカイブでは遅くなる場合があります。
次の例では、異なる内容を含むアーカイブに対する elffile からのサマリー出力を表示します。次のアーカイブが使用されます。
1 つのプラットフォームに対する ELF オブジェクト。
複数のプラットフォームに対する ELF オブジェクト。
ELF オブジェクトおよび ELF 以外のファイル。
ELF 以外のファイル。
アーカイブのサマリー出力は、アーカイブメンバーのタイプによって異なります。
example% elffile same_elf.a mixed_elf.a mixed.a not_elf.a same_elf.a: current ar archive, 32-bit symbol table, \ ELF 64-bit LSB relocatable AMD64 Version 1 mixed_elf.a: current ar archive, 32-bit symbol table, \ mixed ELF content mixed.a: current ar archive, 32-bit symbol table, \ mixed ELF and non-ELF content not_elf.a: current ar archive, non-ELF content使用例 2 アーカイブの詳細出力のフィルタ処理
elffile からの詳細出力では、アーカイブの 1 行の出力が生成され、そのあとにアーカイブメンバーごとの 1 行の出力が続きます。この出力を容易にフィルタ処理して、情報をさまざまな形式で提供できます。次の例では、64 ビットの x86 システム用の再配置可能オブジェクトを含む libCstd. アーカイブを使用してこれを示しています。このアーカイブに対するフィルタ処理されていない elffile の詳細出力は次のとおりです。
example% elffile -s detail libCstd.a libCstd.a: current ar archive, 32-bit symbol table libCstd.a(bitset.o): ELF 64-bit LSB relocatable \ AMD64 Version 1 [CMOV] libCstd.a(complex.o): ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE CMOV FPU] libCstd.a(limits.o): ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE FPU] libCstd.a(limitsinit.o): ELF 64-bit LSB relocatable \ AMD64 Version 1 libCstd.a(stdexcept.o): ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE CMOV] ...
この出力は、各オブジェクトに、実行のために必要なハードウェア機能のタグが付けられていることを示しています。これらの機能タグは、各オブジェクト内のコードによって異なります。次のコマンドは、elffile からの出力をフィルタ処理して、一意の各機能マスクを識別し、アーカイブ内の各マスクを含むオブジェクトの数をカウントします。sed コマンドは、出力からアーカイブメンバー名を削除するために使用され、その結果、同じ機能マスクを持つすべてのアーカイブメンバーの出力が同じになります。sort コマンドは、これらの同じ行をグループ化するために使用され、uniq コマンドは、一意の各グループをグループごとの 1 行に置き換え、各行の先頭にその行がグループ内で出現した回数を示すために使用されます。
example% elffile -s detail libCstd.a | sed 's,(.*),,' | \ sort -f | uniq -c 1 libCstd.a: current ar archive, 32-bit symbol table 777 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 1 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [CMOV FPU] 126 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [CMOV] 12 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [FPU] 69 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE CMOV] 2 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 CMOV] 3 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE CMOV FPU] 3 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE CMOV] 1 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE FPU] 2 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2 SSE] 20 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE2] 4 libCstd.a: ELF 64-bit LSB relocatable \ AMD64 Version 1 [SSE]
次の終了ステータスが返されます。
正常終了
エラーが発生しました
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|