llvm-extract - LLVMモジュールから関数を抽出する¶
概要¶
llvm-extract [オプション] –func 関数名 [ファイル名]
説明¶
llvm-extract コマンドは、関数の名前を受け取り、指定されたLLVMビットコードファイルからそれを抽出します。これは主に、バグを引き起こしている大きなプログラムからテストケースを削減するためのデバッグツールとして使用されます。
指定された関数のビットコードを抽出することに加えて、llvm-extract は、到達不能なグローバル変数、プロトタイプ、および未使用の型も削除します。
llvm-extract コマンドは、ファイル名が省略された場合、またはファイル名が-
の場合、標準入力から入力を読み取ります。出力は、-o オプションが指定されていない限り、常に標準出力に書き込まれます(下記参照)。
オプション¶
–alias エイリアス名
LLVMビットコードから関数名という名前のエイリアスを抽出します。複数のエイリアスを一度に抽出するために、複数回指定できます。
–ralias エイリアス正規表現
LLVMビットコードからエイリアス正規表現に一致するエイリアスを抽出します。正規表現に一致するすべてのエイリアスが抽出されます。複数回指定できます。
–bb 基本ブロック指定子
基本ブロック指定子で指定された基本ブロックを抽出します。複数回指定できます。各<関数:bb[;bb]>指定子のペアは関数を作成します。1つのペアに複数の基本ブロックが指定されている場合、シーケンス内の最初のブロックは残りを支配する必要があります。
–delete
モジュールから指定されたグローバル変数を削除します。
-f
端末でのバイナリ出力を有効にします。通常、llvm-extract は、出力ストリームが端末の場合、生のビットコード出力を書き込むことを拒否します。このオプションを使用すると、llvm-extract は出力デバイスに関係なく生のビットコードを書き込みます。
–func 関数名
LLVMビットコードから関数名という名前の関数を抽出します。複数の関数を一度に抽出するために、複数回指定できます。
–rfunc 関数正規表現
LLVMビットコードから関数正規表現に一致する関数を抽出します。正規表現に一致するすべての関数が抽出されます。複数回指定できます。
–glob グローバル名
LLVMビットコードからグローバル名という名前のグローバル変数を抽出します。複数のグローバル変数を一度に抽出するために、複数回指定できます。
–rglob グローバル正規表現
LLVMビットコードからグローバル正規表現に一致するグローバル変数を抽出します。正規表現に一致するすべてのグローバル変数が抽出されます。複数回指定できます。
–keep-const-init
定数グローバルの値を保持します。
–recursive
呼び出されたすべての関数を再帰的に抽出します。
-help
コマンドラインオプションの概要を出力します。
-o ファイル名
出力ファイル名を指定します。ファイル名が "-" (デフォルト)の場合、llvm-extract は出力を標準出力に送信します。
-S
出力を(ビットコードではなく)LLVM中間言語で書き込みます。
終了ステータス¶
llvm-extract が成功すると、0で終了します。それ以外の場合、エラーが発生すると、0以外の値で終了します。