编译器标志 -DPURIFY 的用途是什么?

What is the purpose of the compiler flag -DPURIFY?

我遇到了一个构建开放 SSL 源代码的 makefile,我想知道通过定义 PURIFY 标志执行了哪些操作? 我四处搜索,但只找到引用它的用途的参考,而不是关于它的作用的解释。

What is the purpose of the compiler flag -DPURIFY?

它有助于抑制 purify 分析源代码时产生的杂散噪声。例如,当变量打算未初始化时,Purify 会抱怨使用未初始化的变量,例如当 PRNG 在堆栈或堆上播种垃圾时。大多数时候,这是程序员的错误。但在这种特殊情况下,这是设计使然。

在高架警告下进行干净编译是一门与众不同的艺术。我在使用 -Wall -Wextra -Wconversion 时干净地编译了一个安全门。对于不是以这种方式设置的项目来说,这可能会非常痛苦。我还需要其他工具的清洁度,例如 Clang/GCC 及其消毒剂(-fsanitze=undefined-fsanitize=address)和 Valgind。

Purify 下的干净分析是几年前 Debian Random Number bug 的原因。 Debian 的人们试图掩盖一个发现。 (Debian PRNG 错误中有几处错误。这是飞机坠毁原因的练习)。