使用-fsanitize=undefined使用 clang 3.6 编译应用程序后,我尝试启动检测程序,同时使用抑制文件忽略一些错误:
UBSAN_OPTIONS="suppressions=ubsan.supp" ./app.exe
抑制文件 ubsan.supp 包含:
signed-integer-overflow:example.c
这会导致错误消息:
UndefinedBehaviorSanitizer: failed to parse suppressions
gcc 4.9 版本也是如此。我能找到的唯一文档是http://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html,它适用于 clang 3.9,而我使用的是 3.6(其中不包含 ubsan 的文档)。
任何人都可以提供适用于 clang 3.6 的 ubsan 抑制文件的工作示例吗?
编辑:通过浏览 ubsan 的源代码,我发现唯一有效的抑制类型可能是“vptr_check”——但不知道我在看哪个版本。谁能确认在 clang 3.9 中有更多的抑制类型可用?