Diversión con -fsanitize=undefined y Picolibc: Una aventura en C embebido
Esta entrada de blog detalla la integración de la bandera -fsanitize=undefined de GCC y Clang en la biblioteca Picolibc para detectar comportamientos de lenguaje C indefinidos o definidos por la implementación. Este proceso desenterró y corrigió ocho errores reales, incluyendo comprobaciones NULL faltantes en setlocale/newlocale y errores de tipo en qsort. También reveló comportamientos indefinidos ocultos en el código, como aritmética de punteros fuera de los límites y desbordamientos de enteros con signo. Si bien gran parte del trabajo implicó reemplazar el comportamiento indefinido con comportamiento definido, el autor también escribió macros lsl y asr para manejar los desplazamientos a la izquierda y los desplazamientos a la derecha aritméticos, expresando insatisfacción con las deficiencias de la especificación del lenguaje C con respecto a los operadores de desplazamiento. El autor concluye animando a los desarrolladores a probar el sanitizador de comportamiento indefinido para mejorar la calidad del código.