GCC 11 的静态分析功能将得到增强

2021年1月31日   |   by tgcode

在去年的 GCC 10 中,David Malcolm为其实现了一个新选项-fanalyzer —— 一个静态分析器,可以在编译时通过静态分析识别各种问题,比如安全漏洞CVE-2020-1967。而根据David Malcolm最新的博客内容,该功能在 GCC 11 中将得到增强。

%title插图%num

在这次更新中,该静态分析器有两个部分将被重写,即跟踪程序状态相关和内存泄漏检测及不确定性。

在 GCC 10 中,状态跟踪组件存在很多崩溃错误,其中一个大问题是使用唯一 ID 来跟踪符号值和区域,目前修改为使用唯一对象(单例)来表示符号值和区域。另一个大问题是之前的实现中,符号值和区域被用来表示内存区域的符号访问路径到符号值的映射,目前修改为内存中位偏移群集的映射。

GCC 10 中的内存泄漏检测存在很多误报,并且分析器的确切行为因调用而异,由于哈希算法,迭代的顺序将隐式取决于精确的指针值。指针值tgcode可能由于地址空间布局随机化而不同,从而导致不同的结果。该部分内容已经重写,新的内存泄漏检测将更少误报,并且分析器的行为在每次运行时都可重现。

同时,该静态分析功能新增了 4 个 -Wanalyzer 前缀的警告,这些警告都对应 C 和 C++ 中已经存在的 -W 警告,但是实现并不相同。

除上述改动以外,静态分析器还有两个正在开发中的新功能:标记 API 和 以 HTML 方式输出结果。前者可以检测泄漏和双重释放,后者是对输出报告可视化的优化,比如 Double-free bugSignal handler issueMemory leak

目前GCC 11 已经进入最后开发阶段,预计于下个季度发布,并且-fanalyzer 现在仅支持 C,对 C++ 的支持计划于 GCC 12 中实现。

相关阅读

展开阅读全文

3 收藏

分享

相关推荐: 研究:全球冰川融化情况将只会变得更糟

  据外媒报道,科学家警告称,全球冰川融化的程度正在接近气候变化最糟糕的情况,一项突破性的新研究表明,情况只会变得更糟。尽管大气温度上升的影响是广泛的,但考虑到海平面可能会出现急剧上升,所以它对世界各地冰川融化的影响可以说是最大的担忧。 资料图   然而实际上…

Tags: , , , , ,