llvm-extract - 从 LLVM 模块中提取函数¶
概要¶
llvm-extract [options] –func function-name [filename]
描述¶
llvm-extract 命令接受一个函数名,并从指定的 LLVM 位代码文件中提取该函数。它主要用作调试工具,用于从触发错误的较大程序中缩小测试用例的范围。
除了提取指定函数的位代码外,llvm-extract 还会删除不可达的全局变量、原型和未使用的类型。
如果省略文件名或文件名为 -
,则 llvm-extract 命令从标准输入读取其输入。除非指定了 -o 选项(见下文),否则输出始终写入标准输出。
选项¶
–alias alias-name
从 LLVM 位代码中提取名为 function-name 的别名。可以多次指定以一次提取多个别名。
–ralias alias-regular-expr
从 LLVM 位代码中提取与 alias-regular-expr 匹配的别名。所有与正则表达式匹配的别名都将被提取。可以多次指定。
–bb basic-block-specifier
提取在 basic-block-specifier 中指定的基本块。可以多次指定。每个 <function:bb[;bb]> 说明符对将创建一个函数。如果在一个对中指定了多个基本块,则序列中的第一个块应支配其余块。
–delete
从模块中删除指定的全局变量。
-f
在终端上启用二进制输出。通常,如果输出流是终端,llvm-extract 将拒绝写入原始位代码输出。使用此选项,llvm-extract 将写入原始位代码,而无需考虑输出设备。
–func function-name
从 LLVM 位代码中提取名为 function-name 的函数。可以多次指定以一次提取多个函数。
–rfunc function-regular-expr
从 LLVM 位代码中提取与 function-regular-expr 匹配的函数。所有与正则表达式匹配的函数都将被提取。可以多次指定。
–glob global-name
从 LLVM 位代码中提取名为 global-name 的全局变量。可以多次指定以一次提取多个全局变量。
–rglob glob-regular-expr
从 LLVM 位代码中提取与 glob-regular-expr 匹配的全局变量。所有与正则表达式匹配的全局变量都将被提取。可以多次指定。
–keep-const-init
保留常量全局变量的值。
–recursive
递归提取所有被调用的函数
-help
打印命令行选项的摘要。
-o filename
指定输出文件名。如果文件名是 “-” (默认值),则 llvm-extract 将其输出发送到标准输出。
-S
以 LLVM 中间语言(而不是位代码)写入输出。
退出状态¶
如果 llvm-extract 成功,它将以 0 退出。否则,如果发生错误,它将以非零值退出。