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 退出。否则,如果发生错误,它将以非零值退出。

另请参阅

bugpoint(1)