Picolibc与Undefined行为检测器:一场嵌入式C代码的冒险
2025-04-16
作者在Picolibc库中集成GCC和Clang的-fsanitize=undefined特性,以检测未定义或实现定义的C语言行为。这不仅帮助发现并修复了八个实际bug,例如setlocale/newlocale的NULL检查缺失和qsort的类型错误,还暴露出一些代码中隐藏的未定义行为,如指针运算越界和有符号整数溢出。虽然大部分工作是将未定义行为替换为定义行为,但作者也编写了lsl和asr宏来处理左移和算术右移,并对C语言规范中关于移位操作符的不足之处表达了不满。最终,作者倡导开发者尝试使用undefined行为检测器,以提升代码质量。
阅读更多
开发