我们使用以下代码来确定是否在编译时为 clang 和 gcc 指定了 -fsanitize=address
。我们如何确定是否指定了 -fsanitize=undefined
?
bool isSanitized = false;
#if defined(__has_feature)
#if __has_feature(address_sanitizer)
isSanitized = true;
#endif
#elif defined(__SANITIZE_ADDRESS__)
isSanitized = true;
#endif
最佳答案
我建议您将此作为一个错误提交给 ASan github(或 GCC bugzilla)(我们已经为 ASan 和 TSan 定义了一个,因此也可以为 UBSan 准备一个)。目前看来,您唯一的选择是在 Makefile 中将自定义定义与 -fsanitize-undefined
一起传递。
关于c++ - 如何确定 UBSAN 是否已使用 clang 或 gcc 编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371798/