المتعة مع -fsanitize=undefined و Picolibc: مغامرة في البرمجة المضمنة بلغة C

2025-04-16

تتناول هذه المدونة دمج علامة -fsanitize=undefined من GCC و Clang في مكتبة Picolibc للكشف عن سلوكيات لغة C غير معرفة أو معرفة حسب التنفيذ. وقد أدت هذه العملية إلى اكتشاف وإصلاح ثمانية أخطاء فعلية، بما في ذلك عمليات التحقق من عدم وجود قيم NULL في setlocale/newlocale وأخطاء في الأنواع في qsort. كما كشفت عن سلوكيات غير معرفة مخفية في التعليمات البرمجية، مثل حسابات المؤشرات خارج الحدود وتجاوزات الأعداد الصحيحة الموقعة. على الرغم من أن جزءًا كبيرًا من العمل كان يتضمن استبدال السلوك غير المعروف بسلوك معرّف، إلا أن الكاتب كتب أيضًا وحدات ماكرو lsl و asr للتعامل مع التحويلات إلى اليسار والتحويلات إلى اليمين الحسابية، معربًا عن عدم رضاه عن أوجه القصور في مواصفات لغة C فيما يتعلق بمشغلات التحويل. ويختتم الكاتب بتشجيع المطورين على تجربة أداة فحص السلوك غير المعروف لتحسين جودة التعليمات البرمجية.

التطوير النظم المضمنة