Diversão com -fsanitize=undefined e Picolibc: Uma Aventura em C Embarcado

2025-04-16

Esta postagem de blog detalha a integração do sinalizador -fsanitize=undefined do GCC e Clang na biblioteca Picolibc para detectar comportamentos de linguagem C indefinidos ou definidos pela implementação. Esse processo desenterrou e corrigiu oito bugs reais, incluindo verificações NULL ausentes em setlocale/newlocale e erros de tipo em qsort. Também revelou comportamentos indefinidos ocultos no código, como aritmética de ponteiros fora dos limites e estouros de inteiros com sinal. Embora grande parte do trabalho tenha envolvido a substituição de comportamento indefinido por comportamento definido, o autor também escreveu macros lsl e asr para lidar com deslocamentos à esquerda e deslocamentos à direita aritméticos, expressando insatisfação com as deficiências da especificação de linguagem C em relação aos operadores de deslocamento. O autor conclui encorajando os desenvolvedores a experimentarem o sanitizador de comportamento indefinido para melhorar a qualidade do código.

Leia mais
Desenvolvimento