تعليمات `d4d4` الغامضة في LLD: ليست مصيدة، بل فرعًا شرطيا
2025-08-21
اكتشف مبرمج العديد من تعليمات `d4d4` في شفرة ARM مفككة، والتي كانت دائمًا غير قابلة للوصول إليها، وتم التعرف عليها بواسطة objdump في LLVM على أنها فرع نسبي إلى -0x58. كشفت التجارب والتحليلات أن هذه التعليمات لم تُضَفْ بواسطة مترجم LLVM، بل بواسطة برنامج الربط LLD أثناء محاذاة حدود ملفات الكائنات. يستخدم LLD `d4d4` كحشو، بقصد أن تكون تعليمة مصيدة. ومع ذلك، فهي في الواقع فرعًا شرطيا، يعمل كقفزة نسبية في مجموعة تعليمات Thumb. يبدو أن هذا خطأ في LLD؛ فهي ليست مصيدة حقيقية، وقد تتسبب في قفزات غير متوقعة. يستخدم برنامج الربط GNU الأصفار كحشو، مما يتجنب هذه المشكلة.
التطوير