-fsanitize=undefined와 Picolibc로 즐기기: 임베디드 C 언어 모험
2025-04-16
이 블로그 게시물은 GCC와 Clang의 -fsanitize=undefined 플래그를 Picolibc 라이브러리에 통합하여 정의되지 않거나 구현에 따라 정의되는 C 언어 동작을 감지하는 방법을 자세히 설명합니다. 이 프로세스를 통해 setlocale/newlocale의 NULL 검사 누락이나 qsort의 형식 오류 등 8가지 실제 버그가 발견되어 수정되었습니다. 또한 포인터 연산의 범위를 벗어나거나 부호 있는 정수 오버플로우와 같이 코드에 숨겨진 정의되지 않은 동작도 드러났습니다. 많은 작업이 정의되지 않은 동작을 정의된 동작으로 대체하는 것이었지만, 왼쪽 시프트와 산술 오른쪽 시프트를 처리하기 위한 lsl과 asr 매크로도 작성했습니다. C 언어 사양의 시프트 연산자에 대한 결함에 대한 불만도 언급되어 있습니다. 마지막으로 코드 품질 향상을 위해 미정의 동작 사니타이저를 사용해 볼 것을 권장합니다.
더 보기
개발