اللغات: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
تجيب اختبارات NeverD عن ثلاثة أسئلة مختلفة: هل للتمثيل الشكل المتوقع، وهل يعمل مسار pipeline كامل مع fixture ثنائية، وهل تحافظ الشفرة المولدة على السلوك؟ اختر أصغر مجموعة تجيب عن سؤال التغيير، ثم شغّل التجميع الأوسع قبل طلب سحب عالي المخاطر.
تكون الاختبارات معطلة ما لم يُفعّل BUILD_TESTING. يمثل Release الخيار العادي
للمجموعة الكاملة؛ يحتفظ Debug بالتأكيدات والتتبع، لكنه غير محسّن عمدًا ولا يمثل
معايير decode.
cmake -S . -B build-release -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=ON
cmake --build build-release --parallel 4تحتاج مجموعة fixtures الكاملة إلى clang للتجميع العابر للأهداف وإلى linker
الخاصة بـ LLVM (ld.lld وlld-link) في PATH. يبني CMake كثيرًا من fixtures
القابلة لإعادة التموضع دائمًا، وfixtures ELF/PE المرتبطة عند توفر linker المطابق.
الاختبار المتخطى لأن المضيف لا يستطيع تجميع fixture أو ربطها هو تغطية غير
منفذة، وليس نجاحًا للهدف.
راجع CONTRIBUTING.md للاستنساخ وملفات البناء وLLVM الجاهز على macOS.
cmake --build build-release --target NeverDInterpreterSpecializationTests \
NeverDDevirtualizationSourceTests --parallel 4
ctest --test-dir build-release -L '^NeverD(InterpreterSpecialization|DevirtualizationSource)Tests$' \
--output-on-failurecmake --build build-release --target NeverDLowIRUndefinedIndependenceTests \
NeverDOriginalBinaryUndefinedIndependenceTests \
NeverDX86UndefinedEffectsTests NeverDX86CarryArithmeticFlagTests \
NeverDX86LogicIdentityTests NeverDX86NoIndexAddressTests --parallel 4
build-release/bin/NeverDLowIRUndefinedIndependenceTests
build-release/bin/NeverDOriginalBinaryUndefinedIndependenceTests \
--gtest_filter='OriginalBinaryUndefinedIndependence.*'
build-release/bin/NeverDX86UndefinedEffectsTests
build-release/bin/NeverDX86CarryArithmeticFlagTests
build-release/bin/NeverDX86LogicIdentityTests
build-release/bin/NeverDX86NoIndexAddressTestsتغطي اختبارات API افتراضيات v1/v2/v3 والميزانيات الصريحة والبنى المبتورة وكل حقول reserved والذيول المستقبلية. تتحقق اختبارات CLI من نفاد حدود الحقول والاستعلامات ومن نجاح الاستعادة عبر واجهتي ABI وخلفيتي المصدر، وترفض الحدود العشرية غير الصالحة وتتطلب --devirtualize. يجب ألا ينشر التشغيل المستنفد مصدرًا أو رسمًا متبقيًا جزئيًا.
تثبت اختبارات v4 أحجام البادئات وحشوها، وترفض البنى المبتورة والأعلام المجهولة، وتحفظ سلوك الإصدارات القديمة/المستقبلية والحدود داخل C حتى دون تقرير. تتطلب أمثلة CLI المستقلة التسلسل لحفظ الارتباطات والحدود لإثبات مقارنة مكدس غير موقّعة؛ وتُشغّل واجهتا C عند O0/O2 مع مصائد السلوك غير المعرّف. يجب أن يغيّر تعطيل الاكتشاف نتيجة تعتمد عليه. يفحص التحليل الصفر وحدود الأعداد والفيض والنطاقات المشوهة والمتطلبات الناقصة. يفحص Python التخطيط والأعلام والتواقيع وملكية تقارير الفشل.
تختبر NeverDByteMemoryForwardingTests آخر الكتابات المتداخلة وترتيبي البايتات والعروض بمضاعفات البايت حتى i128 والقيم المعرّفة ولقطات undef/poison المترابطة والكتابات الجزئية. تُبقي الحالات السلبية القراءات عند الأسماء المستعارة المجهولة وتحويلات فضاء العناوين والاستدعاءات والوصول المرتب وتغيّر العمر والبايتات المفقودة والإزاحات الديناميكية أو غير الصالحة والفروع والحلقات. وتشمل PHI ذات مدخلات كثيرة والميزانيات الصفرية والدقيقة والمستنفدة ورفض اللقطات افتراضيًا. ينفّذ LLVM الأصلي والمعدّل عند O0/O2 مقابل مرجع حسابي مستقل؛ وتحمي مجموعات MBA وLLVMC ومصادر المفسّرات التوافق.
تحافظ الاختبارات الإضافية على intrinsic لعمليات البتات الخالصة في نمطي الذاكرة وترتيبي البايتات. وتبقى الاستدعاءات العادية وoperand bundles وconvergent وتغيرات العمر وتأثيرات الذاكرة والفخاخ حواجز. يُنفّذ الكود الأصلي والمحوّل عند O0/O2 مع فخاخ السلوك غير المعرّف مقابل مرجع مستقل يتحقق من العنوان العددي في النتيجة وكل بايت في المخزن.
تغطي اختبارات حيوية البايتات القراءات المنفصلة والكتابات الملحوظة جزئيًا والتغطية بعدة كتابات. تشمل العناوين المشروطة AND/OR/XOR وعرضي 32/64 بت وترتيبي البايتات والجذور الخاطئة والأقنعة الناقصة والدمج المتجاوز للفحص وجميع حدود الميزانية. تتحقق مراجع O0/O2 المستقلة من نتيجتي الفرع والبواقي الستة عشر للعناوين وكل بايت في المخزن.
تغطي اختبارات علاقات العناوين PHI/select للأعداد والمؤشرات، وترتيبي البايتات وعرضَي المؤشر، وحواف الرجوع الثابتة والمتغيرة، وحواف undef/freeze، والدورات بلا أساس عند المدخل، وحدود ميزانيات العمل والتعليمات، وإبطال التحليل عند تغيير العنوان وحده. تقارن حلقات O0/O2 النتيجة وكل بايت من المخزن بمرجع مستقل لكل تكرار، بما في ذلك عنوان متحرك يجب ألا يُعامل كثابت.
تختبر الحالات العددية التمرير الكامل والجزئي من كاتب واحد، وundef/poison دون لقطات جديدة، وترتيبي البايتات، و32/64 بت، والإزاحات السالبة المعيارية، والتداخل الجزئي، وتطابق عناوين الجذور وalloca، والاستثناءات والحلقات وحدود الميزانية المتجاورة وإبطال التحليل عند حذف الكتابات فقط. تقارن اختبارات O0/O2 الأصل والتحويل بمرجع مستقل للقيمة المعادة وكل بايت في المخزن ذي العناوين المتطابقة.
ينفذ NeverDMedMutableSourceTests وNeverDLLVMCValueTests عند O0/O2 حلقات مستقلة وإعادة ترتيب الكتل والحواف العائدة إلى المدخل وحسابات المكدس وقت التشغيل والقراءات السابقة والتقاء الفروع والتداخل الجزئي والقيم المنطقية وعدّ البتات بما يشمل الصفر. ترفض الحالات السلبية المدخلات المشوهة والأهداف المبتورة وحوامل القيم الملتبسة والميزانيات المستنفدة قبل الإخراج. يتطلب مثال CLI يتجاوز حد SSA مصدر LLVMC قابلًا للتنفيذ ورفضًا صريحًا من HighC. تتحقق اختبارات التحديثات المتكررة وسلاسل التعبيرات المخزنة عبر الكتل أيضًا من حجم خرج C وصحة تنفيذه.
تحد اختبارات الانحدار الإضافية من القراءات والكتابات الخاصة قبل الترقية في LLVM ومن حجم إخراج C. وتنفذ سلاسل حسابية مختلطة طويلة، وكتل SSA معاد ترتيبها، وكتابات ذاكرة متداخلة، وإرجاع الصفر عند O0/O2. تمر الحالات الأساسية أيضاً عبر مسار تحسين LLVM الفعلي، ويُختبر إعادة استخدام المولد بعد رفض إنشاء وحدة.
تختبر حالات تراجع الشروط المركبة عند O0/O2 الاقتران والفصل مع مساواة ثوابت غير صفرية، والمقارنات دون إشارة، والمقارنات ذات الإشارة بترتيبي المعاملات، والقيم المنطقية الموسعة، وجميع تركيبات النفي. يجب أن يحفظ خرج C جدول الحقيقة كاملاً وألا يفك مرجع معامل مفقود في مقارنة بالصفر. تغطي كتابة العناوين كأعداد صحيحة حوامل 32/64/128 بت المحاذاة وغير المحاذاة. تحتفظ مصفوفات البايت بالمحاذاة الصريحة والوصول الدقيق إلى البداية والأجزاء، دون إسناد قيمة قياسية إلى المصفوفة أو وصول متداخل عبر أنواع غير متوافقة.
تختبر NeverDLowIRRefinementTests الرسوم المستعادة فعلياً والحلقات المنتهية ذات البنى المختلفة وحالات عدم التكرار والمنتجين الديناميكيين والاختيارات المشروطة وتداخل مدخلات السجلات وارتباط النسخ والحفظ وأدلة القراءات الثابتة في الجانبين وأعلام النظام وحفظ خانة العودة. يجب رفض الشهادة للمرشحات الخاطئة والكتابات الإضافية والمسارات الناقصة أو اللانهائية والأدلة القديمة وتداخل المؤقتات ونفاد الميزانيات المشتركة. وتستمر اختبارات الاستقلال السابقة في رفض القيم الاعتباطية القابلة للملاحظة.
تغطي LowIRLoopRefinement.* وBinaryLowIRLoopRefinement.* ضمن الهدف نفسه عدادات 64 بت اعتباطية، وترتيبًا معجميًا لحلقات متداخلة، وكودًا متبقيًا من تعليمات أصلية فعلية، وقوالب بادئات الدخول، والمشاهد المتداخلة، والحفظ المترابط. ترفض الاختبارات السلبية الأجسام الخاطئة وتضييق مجال الدخول والترتيب غير المتناقص والالتفاف غير الموقّع ونسيان الكتابات السابقة ونقاط القطع المفقودة والقوالب المشوهة ونفاد الميزانيات المشتركة. لا يجيز نجاح فرع محدود إثباتًا استقرائيًا غير مكتمل.
تستخدم LowIRLoopInference.* وBinaryLowIRLoopInference.* عدادات وعمليات حفظ على المكدس وعودة مبكرة واستدعاءات أصلية وأعلاماً مجمعة مكتوبة بصورة مستقلة. تشمل الاختبارات توسيع الحساب ضيق العرض وأعلاماً متساوية دلالياً ذات تعبيرات مختلفة. يجب ألا تنتج الرسوم المشوهة والمصادر المفقودة أو المزورة والحلقات غير المنتهية أو الملتفة ونفاد ميزانيات الاستنتاج أو البرهان أي شهادة.
تختبر حالات البادئة الصفرية تجميع الوصل والعروض غير المعتادة وجميع أزواج البايتات مع حفظ البتات المجهولة وغير الصفرية. تغطي حلقات إطار مستقلة كتابة القيمة الدنيا والأصفار العليا منفصلتين بترتيبي البايتات، والعروض الضيقة، والحساب والحشو الخاطئين، وميزانيات الاستدلال الدقيقة والناقصة، وميزانية استعلام مستقلة للإثبات الكامل.
تغطي اختبارات الرأس المشترك وكتلة الرجوع المشتركة عدادات 32 بت الموسعة بالأصفار وعدادات 64 بت الكاملة، والرتب العددية ذات الخطوة غير الواحدة، والنتائج الخاطئة، والمسارات التي لا تتقدم أو تلتف حسابياً، والميزانيات الكافية بالضبط أو المستنفدة بين البحث العددي والبحث بالصفوف. LowIRLoopInference.SharedHeaderAndLatchNeedLexicographicRanks. تتطلب اختبارات الزيادة وإعادة الضبط الإضافية التقارب دون فك بت واحد من العداد في كل جولة، وترفض غياب التقدم والالتفاف الحسابي غير الموقّع. تغطي اختبارات الجدولة المراكم ذات الخطوة غير الواحدة، وعدادات الخطوة الواحدة القابلة للالتفاف بجوار رتبة عددية صالحة ذات خطوة أخرى، وثلاثة عدادات يظهر صفها الناجح بعد النافذة المبكرة. تتحقق ميزانيات الرتب الكافية بالضبط والناقصة محاولة واحدة من الاستئناف الحتمي دون تكرار المقترحات.
تختبر LowIRLoopPlanPairing.* في الهدف نفسه إعادة تسمية السجلات واختلاف العمليات الحسابية ولقطات البادئة الخاصة بكل طرف والاحتفاظ بالشرطين ومدخلات ذاكرة الإطار المشتركة وتغطية نقاط القطع المتداخلة وميزانيات الإثبات المستقلة. يجب ألا تنتج شهادة عند غياب العلاقات أو خطأ الكتابات أو فساد ربط القيم المؤقتة أو نقص الإقران أو نفاد حدود البيانات الوصفية.
تختبر LowIRLoopAlignment.* حلقات عادية ومدوّرة ذات عدادات في الإطار، مكتوبة بصورة مستقلة: تنجح كل خطة ذاتية افتراضية منفردة، ويفشل اقترانهما الأول، ثم تثبت نقطة قطع أخرى للمرشح العلاقة. تشمل اختبارات الانحدار تبديلات نقاط قطع متعددة، والنتائج وكتابات الإطار الخاطئة، والسجلات الأصلية المفقودة أو القديمة، وwitness الصريح للقيم غير المحددة، والعدادات غير المتناقصة أو الملتفة، والرسوم المشوهة، وتراكم الاستعلامات بعد الفشل، والميزانية العامة الكافية بالضبط، ونفاد حدود البحث. يجب ألا تتضمن أي نتيجة رفض شهادة. تغطي الحالات الإضافية مرحلتي إعادة الضبط والتقدم المنفصلتين، ونقل شروط الخروج بصورة مكافئة تستلزم اقتران عائلتين، والتخزين دون إعادة الاستدلال، وتجاوز مجموع البيانات الوصفية. تختبر دورة مستقلة لاحقة اكتمال التغطية بحد صريح قدره 16384 استعلام استدلال. لا تستخدم العائلات الفارغة أو المكررة استعلامات رمزية، ويُرفض نقص نقاط القطع. تبقى الميزانيات العامة الكافية بالضبط والناقصة محاولة واحدة، والنتائج الخاطئة، وغياب التقدم، والأدلة الأصلية وwitness للقيم غير المعرّفة خاضعة للاختبار. تختبر حالات الترشيح التفرعات المعيّنية الحسابية التي تحفظ النتيجة، والالتقاء المحلي مقابل الالتقاء عند الحد فقط، وملتقى يمكن بلوغه أو تجاوزه إلى مخرج أو حد دورة. تتحقق من تجربة المرشح المصفّى رغم تكرار عائلة الأصل، وإعادة استخدام خطة مصفّاة ناجحة قبل محاولة كاملة لاحقة، وحدود MaxCutSelectionWork الكافية بالضبط والناقصة وحدة واحدة والصفرية، وتراكم CutSelectionWork الفاشل، وعدم بدء استدلال رمزي بعد نفاد عمل الرسم العام. تُفحص تغطية الدورات كاملة في عائلتي الفروع، وتستخدم علاقة التفرع المعيّني حدوداً صريحة لاستعلامات الاستدلال والإثبات.
تغطي الاختبارات أجزاء الإطار والسجل، والزيادة والنقصان، والمواضع الدنيا والوسطى والعليا، والعروض غير المعتادة، وترتيبي البايتات وكلمات إطار من ثلاثة بايتات. وتتحقق من الاكتشاف المتأخر وتغيير البتات المحفوظة وانعدام التقدم والالتفاف دون شرط ومداخل إضافية غير صالحة والميزانيات الدقيقة أو الناقصة والبحث القائم بنقطة قطع واحدة.
تغطي اختبارات المرحلة الأولى حلقتين وثلاث حلقات متتابعة تعيد استخدام كلمة عد تنازلي واحدة، والتركيب مع مراحل الحلقات المتداخلة، وميزانيات الرتب والاستعلامات الكافية بالضبط والناقصة محاولة واحدة، والحلقات دون تقدم وإعادة الضبط إلى مرحلة سابقة. يجب أن يرفض المدقق الكامل ثوابت المراحل الخاطئة من العرض نفسه والنتائج الخاطئة والكتابات الخاطئة في الإطار دون شهادة؛ ويظل غياب الأدلة الأصلية غير مدعوم.
تستخدم InterpreterMachineStateModel.* في NeverDLowIRRefinementTests أمثلة LowIR مستقلة لفحص أعلام الدخول الخام وفصل الحالة عن RAX الضيف وكلمات الحالة السبع عشرة وأجزاء السجلات والأعلام المجمعة واستمرار الرفض الديناميكي وكتابات إطار الضيف والفرعين واستنتاج الحلقات ثم إثبات جديد. يجب رفض المخرجات الخاطئة والحالة المفقودة وتغير الذاكرة وسجلات التعليمات القديمة والمدخلات المشوهة ونفاد ميزانيات التوليد. تختبر اختبارات المصدر الحالية أيضاً مساري C عند O0/O2؛ اختبارات النموذج وحدها لا تشهد بصحة C المترجم.
تقارن NeverDLLVMInterpreterModelTests شيفرة LLVM مستقلة بمراجع LowIR للحالة الكاملة: عروض القيم وPHI المتوازية وswitch وذاكرة الضيف والحالة المنفصلة وشروط poison ونطاقات الدوال المدمجة والعقود المرفوضة والميزانيات الأربع. تتحقق من إثبات كامل للعد التنازلي لكلمة اعتباطية وترفض حالة معدلة. يجب أن يحقق C مستقل بعد تجميعه بمستويي O1/O2 الملاحظات نفسها. تتحقق الاختبارات من النموذج المدعوم؛ ويبقى اكتشاف الثوابت آليًا وصحة المترجم التزامين منفصلين. تغطي حالات الإزاحة المتغيرة العروض الأربعة، والمقادير المقيدة بقناع أو فرع، والقيم الحدية والمتجاوزة للعرض، وعلامات منع التجاوز والدقة، والرفض الصارم لقيم poison، وشيفرة C المجمعة بمستويي O1/O2.
تختبر NeverDLLVMScalarEquivalenceTests مجالات الحلقات الكاملة، وعدم تنفيذ أي تكرار، وتبادل PHI المتزامن، وswitch، وبتات الإدخال العليا، والأمثلة المضادة في التقسيم الأخير، والتحديثات الإضافية المنتجة لـpoison، ونطاقات الإرجاع، والعقود غير المدعومة، والميزانيات الدقيقة والناقصة بوحدة والصفرية. تغطي مراجع مستقلة للعرض المضاعف والفيض أطراف الإزاحة القمعية والضرب المقيّد بكل عرض مدعوم؛ ويتحقق C مستقل بحلقات متداخلة عند O1/O2 من شكل مدخلات المترجم. تختبر مجموعة نموذج الحالة الأطراف أيضاً. يتحقق SymExpr.ConstantWindowSharesActualWorkWithoutRelaxingQueryCeilings من الحساب التراكمي وبقاء الحدود المحلية دون تغيير.
تغطي LLVMScalarDecision.* التزامات الإزاحات الدقيقة والتمديدات العميقة، والفروع الثابتة، وحافتي رجوع الحلقة، وحفظ بتات البيانات العليا، والعمليات غير المعرّفة المتأخرة، وعدم الانتهاء، وتعديل الدوال بعد فحصها، والميزانيات الدقيقة والناقصة بوحدة والمحلية. تقارن LLVMScalarDecisionCompiled.DeepOneAndTwoBackedgeOracles علاقات تكرار مكتوبة مستقلاً بحافة رجوع واحدة أو اثنتين مع مرجع C غير موقّع عند O0/O2 عبر 32,768 استدعاءً. هذه فحوص للنموذج القياسي وليست تغطية لـ ABI الأصلي أو لاستعادة ملف ثنائي كامل.
تثبت LLVMScalarDemand.* تكافؤ جسمي حلقة غير خطيين بميزانية ثابتة، وتحافظ على التقسيمات الستة عشر والبتات العليا الحرة، وترفض أخطاء النتيجة أو التعريف في التقسيم الأخير، وتفحص الميزانيات الدقيقة والناقصة وحدود العقد. تقارن LLVMScalarDemandCompiled.* الجسمين بمرجع حسابي مستقل غير موقّع عند O0/O2 عبر 262,144 استدعاء. لا تُحذف عمليات المصدر ولا يُضيّق مجال المدخلات.
تختبر SymKnownBitsTests الحقائق على جميع أزواج إدخال البايت وقيم الحدود ذات الدقة الاعتباطية، بما يشمل التوسيعات والمجاميع دون التفاف والجذور المختلفة ودلالات الإزاحة المعرّفة كلياً. وتغطي الميزانيات الدقيقة والناقصة بوحدة، وكلفة إصابات الذاكرة المؤقتة وحدود سعتها والسياقات المنفصلة والعمق وعدد المعاملات والعروض غير المدعومة. تختبر SymExprExtensionTests البتات العليا للثوابت وقيم الإزاحة الكاملة. تحافظ اختبارات التكافؤ القياسي على البيانات الرمزية عند إثبات قيود المجال، وترفض اختلافات التقسيم الأخير وعمليات poison المنفذة، وتتحقق من ميزانية البرهان الكامل. تشترط SymMBAExtensionTests دليلاً اشتقاقياً مع تعطيل التحقق بالعينات، وتختبر جميع أزواج البايت مع حفظ حدود الإشارة والحمل الضيق والمتمم ونفاد العمل.
تغطي NeverDLLVMScalarLoopRecoveryTests البوادئ وحالات السابقين ومسارات التكرار الصفري والحلقات ذات الحافة الذاتية والحالات الأفينية والرجوع إلى المساواة عند الالتفاف وpoison الناتج عن تحديث إضافي واختلاف البتات العليا والعقود المرفوضة. تتحقق الميزانيات التراكمية الدقيقة والناقصة بوحدة من الرفض الذري. تنفّذ مراجع حسابية مستقلة LLVM الأصلي والمستعاد عند O0/O2 لجميع مدخلات التحكم ذات البايت الواحد. لا تثبت هذه الاختبارات استعادة ABI أصلي أو إخراج C الافتراضي.
تغطي اختبارات شروط الحلقة PHI بعرض 8/16/32/64 بت وعكس المقارنات وقطبية الفروع والتوسيع بإشارة أو دونها وقيم البدء المختلفة وتعارض مشاهدات المداخل وتعدد الحواف الراجعة والأمثلة المضادة الرمزية ورفض الاقتطاع وpoison أو عدم الانتهاء الأصلي والرفض الذري عند حدود البناء والإثبات والمرشحين والتحويلات. تقارن مراجع مستقلة غير موقّعة LLVM الأصلي والمستعاد عند O0/O2 عبر 458,752 استدعاء مع مصائد للسلوك غير المعرّف. يبقى المصدر والوحدة الأم دون تغيير.
تغطي الاختبارات الحراس المعياريين بعرض 8/16/32/64 بت والخطوات المتناقصة والقطبيتين وعدم تنفيذ الحلقة والمخارج المشتركة والحدود المجاورة الخاطئة التي تتفق فقط عند البيانات الصفرية والحدود غير القابلة للوصول والشرائح الكبيرة وpoison والأوراق المفقودة والرفض الذري للميزانية. يجب ألا تُزيح أربعون حجة غير مستخدمة قيمة بدء المقدمة المفيدة. تنفذ مراجع مستقلة غير موقّعة LLVM الأصلي والمستعاد عند O0/O2 عبر 458,752 استدعاء مع مصائد للسلوك غير المعرّف.
يفحص الهدف نفسه recoverLLVMScalarSource أيضًا: التحضير قبل البحث، والتنظيف دون تغيير الحلقات، والحالة غير المستخدمة بكامل عرضها، والتزامات الفيضان والإزاحة الدقيقة والقسمة وassume في الشيفرة الميتة، والآثار غير المدعومة، والميزانيات التراكمية الدقيقة والناقصة وحدة، والمتابعة المحدودة. تنفذ مراجع حسابية مستقلة LLVM الأصلي والمحضّر عند O0/O2 لكل قيم التحكم ذات البايت الواحد وحالات حتمية بكامل العرض. تبقى الدالة الأصلية ووحدتها الأم دون تغيير عند النجاح والرفض.
تغطي اختبارات الحراس الهويات المعيارية المعلّقة والتعبيرات المتكافئة في سوابق مختلفة وقيم الفروع المختلفة ورفض تجاوز السعة والإزاحة exact والاقتطاع والتوسيع الأصلي، والميزانيات الدقيقة والناقصة. تقارن مراجع مستقلة غير موقّعة الجسمين الأصلي والمعدّ عند O0/O2 عبر 131,072 استدعاء مع مصائد للسلوك غير المعرّف. تواصل الاختبارات الدلالية القائمة تغطية قواعد رفض المرور المستقل.
تغطي اختبارات الأقنعة تبديل المعاملات والحقول الصفرية وحفظ البتات العليا للمدخلات والبديل بعد فشل البرهان الكامل وكل الحواف الراجعة ورفض الالتفاف أو الفيض ودفعات تتجاوز 32 عنصراً والرفض الذري عند الميزانية الدقيقة أو الأقل بوحدة. تتحقق مراجع حسابية مستقلة لـ LLVM وC عند O0/O2 من التركيب مع استعادة العرض. تحتفظ اختبارات مقارنة الكائن بنفسه بمجال التحكم الكامل ورفض poison/undef والعقود غير المدعومة وعدم الإنهاء والحدود المحلية والحساب الدقيق للعمل؛ ويُلغي تعديل الدالة نفسها صلاحية النتيجة السابقة. تظل هذه تغطية لـ LLVM العددي وليست شهادة ABI أصلية.
تستنفد اختبارات احتواء الأقنعة كل أزواج مدخلات البايت وتغطي الأقنعة غير المتجاورة والعروض حتى 128 بت وحفظ البتات المجهولة/العليا وتحد نمو العقد خارج الحدود. يجب إثبات علاقة XOR المقنّعة في حلقة رمزية ذات حافتين راجعتين مقابل صيغة مغلقة مستقلة. تحسب اختبارات التبعيات تخزين مقدار الإزاحة بعد تطبيعه مع حفظ الميزانيات الدقيقة/الأقل بوحدة والتعامل المحافظ مع القيم العريضة.
تغطي اختبارات العرض الثوابت غير الصفرية والتواقيع والمدخلات والدوال الجوهرية الأوسع والبتات العليا والترتيب الموقّع والفيض الجديد وحدود الميزانية الدقيقة والناقصة. تعمل المقترحات نفسها مع أهداف x86-64 وAArch64 وAArch64 كبير النهاية وARM32 على مستوى LLVM، وليس كإثبات ABI أصلي. تُشغّل مراجع حسابية مستقلة لـLLVM الأصلي والمستعاد وC الناتج عند O0/O2 مع مصائد السلوك غير المعرّف في C.
تغطي اختبارات البذور جميع المداخل والحواف الراجعة المتعددة والبيانات العليا المخفية وpoison والتبديل المتزامن وتقسيم الدفعات وأكثر من 32 متغيراً والميزانيات الذرية. تميز البراهين القياسية الاستعلام المجهول المكتمل عن نفاد العمل العام وتثبت الإزاحات الآمنة دون تعداد بتات البيانات. تستنفد الاختبارات الرمزية قيم البايتات والأقنعة والعدادات مع حفظ البتات الملحوظة وهوية المصدر ودلالة العدادات الكبيرة. يجب أن تشترك عروض الإزاحة المختلفة في القيمة العددية الكاملة للعداد. لا تصدق هذه الفحوص ABI الأصلي.
تغطي اختبارات الحلقات الإضافية التفاف الفهرس الأخير الضيق، وكتل body/latch المنفصلة، وقطبي شرط الدخول، وتبادل معاملي المساواة، وإعادة ترتيب المتغيرات ذات الخطوة الواحدة وتناقصها، واختلاف البتات العليا في المسار الفارغ، وتنفيذ poison المستحدث، والحدود الخاطئة. تحافظ ميزانيات البناء والإثبات الدقيقة والناقصة بوحدة واحدة واستنفاد المرشحين على الرفض الكامل. يُشغّل LLVM الأصلي وC الناتج عند O0/O2 مقابل مراجع حسابية مستقلة.
تتحقق NeverDLLVMCScalarLoopRecoveryTests من الإخراج الافتراضي الكامل والمحدد، والاستعادة بعد تنظيف مسارات الإرجاع، والهوية والسمات والمستدعين والدوال المضمنة القديمة والجديدة والتعارضات، والميزانيات المشتركة والاستدعاءات ذات الأثر والمدخلات دون ضمان تعريف والبيانات الوصفية والصور وعناوين الكتل الخارجية واختيار دالة أجنبية. تنفذ مراجع مستقلة للحساب والتدوير C عند O0/O2 مع مصائد السلوك غير المعرّف. ويقارن الحساب أيضاً LLVM الأصلي المترجم بصورة مستقلة لجميع مدخلات التحكم ذات البايت الواحد والقيم الحدية والبيانات الحتمية كاملة العرض.
تقارن اختبارات SymSimplifyPredicates.* أيضًا سياسة المرحلة المستقلة والتمرير الكامل، والعمل المبلغ عنه، والميزانية الدقيقة والميزانية الأقل بوحدة، والمرحلة المعطلة والدوال الموسومة بالتمويه. تغطي اختبارات تراجع المصدر القياسي شروط توقف حلقات مرمزة حسابيًا بعرض 8/32/64 بت، ورفض الفيض ذي الإشارة، وحدود البناء المشتركة بين الجولات والدوال. يحتفظ فشل النشر بـIR الأصلي؛ ويجري تنفيذ C الناتج عند O0/O2 ومقارنته بـLLVM الأصلي المترجم بصورة مستقلة ومرجع حسابي.
تتحقق اختبارات SymKnownBits.* من الأقنعة بلا فقد والإزاحات ذات الإشارة ذهابًا وإيابًا بحساب شامل لكل أزواج البايتات، بما فيها القيم السالبة والمصادر المختلفة والبتات المجهولة المحذوفة والعوامل أو المقادير غير المتطابقة والإزاحات الزائدة الواسعة. وحتى 128 بت تتحقق من الميزانية الدقيقة والأقل بوحدة ومن عدم نمو DAG. تضيف اختبارات القرار القياسي تحديثات موجبة وسالبة على حافتي رجوع منفصلتين، ورفض الحقائق القديمة والفيض، وبتات بيانات عليا رمزية، و16,384 استدعاء عند O0/O2 مقابل مرجع مستقل بحساب غير موقّع.
تتحقق اختبارات SymKnownBits.* أيضًا من جميع أزواج البايتات لترتيب المضاعفات ونواتج الضرب بين عروض مختلفة، وترفض الالتفاف والمعاملات أو تكرارات العوامل الخاطئة ونقل فيض ضيق إلى كلمة أوسع. وحتى 128 بت تحافظ الاستعلامات على الميزانية الدقيقة والأقل بوحدة دون نمو DAG. تثبت الاختبارات القياسية الجمع المتكرر والضرب دون تعداد بتات البيانات، وتحافظ على جميع التزامات فيض الحلقات، وتنفذ 16,384 استدعاء عند O0/O2 مقابل مرجع مستقل.
تتحقق اختبارات LLVMScalarAssume* من مجالات الحلقات الكاملة، وفشل القسم الأخير، والشروط الخاطئة غير القابلة للوصول أو التي تم الوصول إليها، وتراكم التزامات المعرّفية لجميع مدخلات البايت، والميزانيات الدقيقة والأقل بوحدة، وتعديلات IR، وعقود الاستدعاء غير المدعومة. تختبر أربعة target triples النموذج المشترك؛ وتُقارَن 8,192 عملية استدعاء عند O0/O2 بمرجع مستقل غير موقّع. وتتحقق مجموعة نموذج الحالة بشكل مستقل من الالتزام نفسه ورفض حزم المعاملات.
تغطي LLVMScalarProjection.* الحقول المتداخلة والنوافذ والمعاملات غير المستخدمة المحفوظة وتعدد الإرجاع والحواف الخلفية والتزامات overflow/shift/assume غير المختارة وفشل آخر تقسيم وعدم الانتهاء والعقود المجهولة وتغير المدخل والميزانية الدقيقة أو الناقصة بوحدة. تختبر أربعة أهداف الدلالات المشتركة. تقارن LLVMScalarProjectionCompiled.* التجميع الأصلي عبر جسر مصفوفة LLVM والإسقاطات بحساب مستقل غير موقع عند O0/O2. تستنفد SymExpr.RightShift* أزواج البايتات وتختبر تمديد الإشارة والحمل والبتات العليا المحتفظ بها والعدادات الكاملة وحدود البحث.
تفحص LLVMScalarInputs.* خرائط مرتبة بعروض مختلطة وواجهات بلا معاملات أو أسماء واحتياجات الحساب الميت وassume والمخرجات المعدلة والعقود المجهولة ورفض التغليف والميزانيات التراكمية الدقيقة أو الناقصة. تستعيد اختبارات الإثبات التوقيع الكامل دون تثبيت المدخلات المحذوفة. تقارن LLVMScalarInputsCompiled.* حلقات الواجهتين الأصلية والمصغّرة بمرجع مستقل غير موقّع عند O0/O2 مع تغيير جميع المعاملات المحذوفة.
تغطي NeverDLLVMScalarStateProjectionTests النوافذ المتداخلة وغير المحاذاة، وخلايا 8/16/32/64 بت، والحلقات، والأقنعة، وتغييرات المصدر، وحدود الحالة، وحفظ poison، ورفض الذاكرة الخارجية وحدود الميزانية. تنفذ الدوال الأصلية وجسور تجميع LLVM عدد 172,032 مقارنة O0/O2 مع مراجع مستقلة؛ تفحص البراهين العددية بصورة منفصلة. تستنفد SymKnownBits.* أزواج البايتات وتفحص 128 بت والعوامل المختلفة والأقنعة الأوسع والتفاف الجمع والميزانيات. تختبر LLVMCIntrinsicSemantics.AssumeEvaluatesItsConditionAndRefusesBundles تقييم الشرط مرة واحدة ورفض bundles.
تقارن اختبارات بيانات الحلقة الوصفية الحلقات المعدودة بصيغة مستقلة عبر جميع أقسام التحكم، بميزانيات دقيقة وأخرى أقل بوحدة. لا تخفي قيم تاريخ التقشير الكبيرة أو الصفرية النتائج الخاطئة أو عدم الانتهاء أو poison. تُنشأ البيانات الوصفية المشوهة عبر API لاختبار رفض المستورد بشكل منفصل عن تحليل تجميع LLVM؛ وتحافظ اختبارات حالة الآلة على تأثيرات الحالة وحدود المدخلات.
تغطي اختبارات التهيئة النطاقات الجزئية والمنفصلة والأسماء البديلة الثابتة وكلا الفرعين وكل عودة وقراءات التكرار الأول والكتابة قبل القراءة داخل الحلقات. يجب أن تفشل القراءة قبل الكتابة والكتابات المفقودة أو كتابات الضيف والأسماء البديلة المجهولة والوصول الخاص والنطاقات خارج الكائن ونفاد الميزانيات. يُترجم مثال C مستقل يكتب كلمة حالة مخصصة للإخراج عند O1/O2، ويحتفظ بسمات LLVM الدقيقة ويجتاز برهاناً مركباً جديداً من الشيفرة الأصلية إلى LLVM.
تغطي اختبارات العد التنازلي المحمي إعادة المحاولة بعد رفض قالب الجسم، وإثباتًا كاملًا عند الرأس لكلمة اعتباطية، والميزانيات المشتركة، والرفض الفوري لانتهاك فعلي لعقد الدخول.
يفحص NeverDInterpreterLLVMRefinementTests تركيب براهين جديدة وربط النص والدالة بدقة والميزانيات المستقلة وجميع المشاهدات ومجال المصدر الأوسع. يجب أن تمنع تغييرات البايتات والبرنامج المتبقي والنتائج والأعلام والحالة والكتابات وpoison والخطط الخاطئة أو القديمة الإيصال المركب. يتطلب العد التنازلي لكلمة اعتباطية الفرضيتين الاستقرائيتين؛ وتفحص أمثلة C مستقلة مترجمة عند O1/O2 نص LLVM الفعلي. ترفض اختبارات نموذج الحالة حواف الرجوع المخفية إلى المدخل وتحد الجذور دون نسخ بيانات المصدر الجانبية.
cmake --build build-release --target NeverDLLVMCScalarLoopRecoveryTests --parallel 4
build-release/bin/NeverDLLVMCScalarLoopRecoveryTests
cmake --build build-release --target NeverDLLVMScalarLoopRecoveryTests --parallel 4
build-release/bin/NeverDLLVMScalarLoopRecoveryTests
cmake --build build-release --target NeverDLLVMScalarEquivalenceTests --parallel 4
build-release/bin/NeverDLLVMScalarEquivalenceTests
cmake --build build-release --target NeverDLLVMScalarResultProjectionTests --parallel 4
build-release/bin/NeverDLLVMScalarResultProjectionTests
cmake --build build-release --target NeverDLLVMScalarStateProjectionTests --parallel 4
build-release/bin/NeverDLLVMScalarStateProjectionTests
cmake --build build-release --target NeverDLLVMScalarInputProjectionTests --parallel 4
build-release/bin/NeverDLLVMScalarInputProjectionTests
cmake --build build-release --target NeverDLLVMInterpreterModelTests --parallel 4
build-release/bin/NeverDLLVMInterpreterModelTests
cmake --build build-release --target NeverDInterpreterLLVMRefinementTests --parallel 4
build-release/bin/NeverDInterpreterLLVMRefinementTestsتختبر مخارج المساواة المخزّنة في حلقات من مستويين وثلاثة مستويات ترابط المعاملات وتغيّر الحدود وإعادة تعيين العدّادات وفساد النسخ.
تغطي اختبارات المقارنات المخزنة المساواة وعدم المساواة وشروط الدخول والتهيئة الثابتة والحقول التي تظهر بعد التوسيع والبتات 7/31/63 في حقول من 1/4/8 بايت. يجب رفض تغيير بت مجاور فقط مع الإبقاء على البت المختبر عبر مقارنة الحالة الكاملة. ترفض الخطوات الصفرية والحدود المتحركة وإعادة ضبط العداد ونفاد الميزانيات المشتركة.
تغطي اختبارات التعميم المداخل المندمجة والشاهد الأول بلا تكرار والفروق الخفية في السجلات والإطار والشروط المنطقية غير المعيارية وشروط المصائد الأصلية وعمليات الحفظ المترابطة والخطط غير الصحيحة أو المستنفدة للميزانية. تختبر عدّادات مستقلة بمستويين أو ثلاثة وخروج بالمساواة، مع بايتات أصلية، الحدود غير الموقعة ومجالات الصفر/القيمة القصوى والخطوات غير الأحادية والتعليمات الأصلية الخاطئة. يجب أن يرفض الاستدلال والإثبات النهائي النتائج غير الكاملة.
تغطي اختبارات انحدار مستقلة للحلقات البديلة اتجاهي التفرع والأجسام الخاطئة وفرعًا مجاورًا لا ينتهي ونفاد ميزانيات البحث/الإثبات المشتركة. LowIRLoopInference.AlternativeLoopsReachBothPrefixesWithinSharedBudgets.
تغطي اختبارات الاستنتاج مستويين وثلاثة مستويات متداخلة، وعدادات متزايدة ومتناقصة، ومراحل مستنتجة، ونقاط قطع في أجسام حلقات أصلية فعلية. يجب رفض مجالات البادئة غير القابلة للوصول أو المنفصلة والأجسام الخاطئة والانتقالات اللانهائية أو الملتفة ونفاد ميزانيات البحث والإثبات المشتركة. لا يحل شاهد البادئة محل التغطية الكاملة للمقاطع.
cmake --build build-release --target NeverDLowIRRefinementTests --parallel 4
build-release/bin/NeverDLowIRRefinementTestsيتحقق NeverDLowIRUndefinedIndependenceTests من استقلال تنفيذين لرسم LowIR كامل وخالٍ من الدورات. يشترك التنفيذان في مدخلات الدخول العادية، وتحافظ كل قيمة جديدة غير معرّفة معماريًا على ترابطها عبر النسخ والكتابات المتداخلة والحفظ في المكدس وإعادة التحميل. تُفحص شروط التحكم قبل إضافة افتراضات المسار. تتطلب الشهادة بيانات وصفية للتأثيرات بحالة Complete مرتبطة بدقة بحدود كل تعليمة كاملة وبصمة عملياتها. تُرفض الشهادة عند نقص الأدلة أو وجود حلقات قابلة للوصول أو استدعاءات أو تداخلات عناوين مجهولة أو نفاد الميزانية. يقتصر الاستنتاج على عناصر الملاحظة الصريحة وعقد الوصول إلى إطار المكدس دون أخطاء؛ وهو ليس برهان تكافؤ كامل من الشيفرة الأصلية إلى C.
يستخدم السلوك التالي عقد التدقيق الصارم الافتراضي. يستخدم NeverDOriginalBinaryUndefinedIndependenceTests بايتات x64 مستقلة ذات خرائط ثابتة لاختبار CALL/RET الفعليين، وأهداف الرجوع المعدلة، والتعداد الكامل للأهداف غير المباشرة المحدودة، والقراءات الثابتة. يتحقق الهدف نفسه من جمع الفروع المباشرة كاملة، والربط الدقيق للبايتات والتأثيرات والخرائط وشواهد القراءة، وحفظ RSP وخانة الرجوع عند الرجوع الخارجي، وانفصال الإطار عن الصورة. يجب رفض التعليمات المفقودة أو المتداخلة والفروع غير المدققة خارج قواعد الفخاخ الدقيقة والإسقاط ذي الملف الصريح والحلقات غير المنتهية أو المتجاوزة للميزانية والتعداد الناقص وعدم تطابق ملفات التنفيذ والعقود ونفاد الميزانيات، دون شهادة أو شيفرة متبقية. يتطلب النجاح اكتمال كل مسار أصلي قابل للتنفيذ. لا يعتمد هذا الشرط الاختياري ثوابت الحلقات أو الاستثناءات أو التنفيذ مع CET أو تكافؤ الشيفرة الأصلية مع C؛ وتظل الاستعادة العادية منفصلة. يتحقق الهدف أيضًا من الحدود النهائية لتعليمات INT3/UD2 المرفوعة بصرامة ومن ربط جميع بايتاتها وبصمات عملياتها. يجب أن تبقى البيانات المرافقة للمخرجات غير المعرّفة ذات الحالة Missing كما هي؛ ولا تظهر في الشهادة إلا المصائد التي يثبت التنفيذ الرمزي تعذّر الوصول إليها، بينما يجب أن يعيد كل مسار قابل للتنفيذ يصل إلى مصيدة ContractViolation دون شهادة أو شيفرة متبقية. لا يُمثّل الاستمرار بعد المصائد أو العودة من الاستثناءات، ولا يُستخدم codeFollowsTrap، ويبقى دعم واجهة LowIR الثابتة دون تغيير.
تغطي اختبارات الرجوع الفعلي الاستدعاءات المباشرة وغير المباشرة التي تتجاوز بايتات غير صالحة ومواضع المتابعة الخاطئة القابلة للوصول والتعداد الكامل والميزانيات الدقيقة أو الناقصة. ترفض علاقة الحالة الكاملة النتائج المعدلة. يجب أن يحافظ كود C المستقل بعد تجميع O1/O2 على كتابة الإطار كاملة؛ ولا تخفي نتيجة رجوع متطابقة تغيير بايت في خانة الرجوع.
تختبر حالات التداخل الأصلي الصريحة قفزات x64 فعلية إلى داخل المعاملات الفورية، ونتائج كلا الفرعين الممكنين، ونقاط رجوع غير مباشرة داخل تعليمات سابقة. تختبر الجهات الموفرة الاصطناعية النطاقات المحتواة بترتيبي الجمع، والبايتات المتناقضة على فرع مباشر غير منفّذ، واتساق الشيفرة والقراءات بالترتيبين، وقراءات المرشح. تحسب الميزانيات الكافية تماماً وغير الكافية البايتات المتكررة عبر الانتقالات غير المباشرة. يجب رفض الشهادات عند تغيير النتائج أو استخدام الواجهات الساكنة أو الخاصة بالحلقات أو وجود أدلة متناقضة؛ ويؤدي تغيير الخيار أو الحد إلى تغيير البصمات.
تغطي اختبارات الحدود الصريحة تعليمات RCL وXADD في الذاكرة مع LOCK وREP MOVS غير القابلة للوصول، وتناقضات المسارات الرمزية، والفروع المتحكم بها بقيم اعتباطية، والرفض الدقيق عند الوصول من المدخل أو قفزة غير مباشرة أو CALL أو RET. وتفحص الدخول المستقل إلى لاحقة قابلة للوصول، وتطابق عناوين المرشح والأصل، والأدلة المشوهة أو الجزئية، واستنفاد الموارد، ورفض الواجهات الثابتة/الحلقية، وطبقات بصمات التنقيح الثلاث. يغيّر تعديل تعليمة غير قابلة للوصول أو تفعيل الخيار دون حدود محفوظة بصمات الشهادة. تثبت هذه الاختبارات نطاق البرهان المحدود المعلن، لا دلالات التعليمات غير المدققة.
تغطي اختبارات الأعلام المجمعة جميع مجموعات أعلام الدخول القياسية وأقنعة الامتياز وشرط TF/AC في التنفيذين والمنتجين غير المحددين المنفصلين والنسخ المترابطة والاستدعاءات الأصلية وحالة الفروع الشقيقة والمراقبة النهائية الإلزامية والأدلة المشوهة وحدود الموارد. يجب أن تنتهي جميع مسارات الإدخال الممكنة للحلقات المحدودة؛ لا يخفي فرع آمن مسارًا لا نهائيًا أو مبتورًا. تشمل اختبارات RDSSPD/RDSSPQ السجلات العامة الستة عشر والعرضين وحفظ البتات العليا وأدلة Missing ورفض الإسقاطات المزورة. تقارن اختبارات حالة الآلة مساري C عند O0/O2 مع فخاخ السلوك غير المحدد بمرجع مستقل لأعلام وضع المستخدم، وتتحقق من بقاء حالة فشل الملف مسجلة. تغطي اختبارات INCSSPD/INCSSPQ العرضين وجميع السجلات العامة وحفظ الحدود غير القابلة للوصول والفخاخ الممكنة بعد اكتمال فرع شقيق والمعاملات الصفرية وأدلة الفخاخ المزورة.
تغطي NeverDX86DecodeDetailTests مسارات فك الترميز الثلاثة وعرضي عناوين x64 وحدود الإزاحة ذات الإشارة والبادئات الإلزامية وdisp16 في i386 وmoffs والمدخلات المبتورة وإعادة الاستخدام دون تفاصيل. لا ترتبط إلا حقول إعادة التمركز المطابقة تمامًا؛ ويرفض العرض أو الموضع أو القيمة الخاطئة. تحافظ اختبارات الاستقلال والتنقيح الأصلية على جميع كتابات الإطار وترفض الأعلام العشوائية القابلة للملاحظة ومرشح الإزاحة المعدل.
يتحقق NeverDX86UndefinedEffectsTests من بيانات البتات غير المعرّفة والأعلام المعرّفة أو المحفوظة ورفض الشهادات القديمة. يقارن NeverDX86CarryArithmeticFlagTests الحمل المساعد في ADC/SBB لصيغ السجلات والذاكرة بمرجع حسابي. ويتحقق NeverDX86LogicIdentityTests من أن AND بمعاملين متطابقين ما زال يصفر البتات 63:32 من السجل المقابل ذي 64 بت عند الكتابة إلى وجهة من 32 بت في نمط 64 بت، مع حفظ البتات التي لا تشملها الكتابات الأضيق.
يقارن X86RotateUndefinedEffects.* جميع قيم العدّ الخام وعروض المعاملات وتداخل CL وأسماء البايت العالي البديلة ووجهات الذاكرة بمرجع حسابي قياسي. ويغطي X86BitTestUndefinedEffects.* فهارس السجل/القيم الفورية وتداخل المصدر والوجهة والسجلات الموسّعة والأعلام المحدّدة وكتابة الأجزاء العليا. ترفض ضوابط البيانات الوصفية المعاملات والترميزات المعدّلة والصيغ غير المدعومة. تميّز البراهين الأصلية القراءات المترابطة من البتات الاعتباطية المستقلة، وتختبر ميزانيات المنتجين الدقيقة والناقصة، وترفض OF غير المعرّف القابل للملاحظة. يقبل تنقيح الحالة الكاملة الشاهد المختار ويرفض شاهد البتات الصفرية أو المرشّح المعدّل.
يتحقق X86XaddAudit.* من جميع أزواج معاملات البايت البالغ عددها 65,536، وحدود الأعلام للأحجام الأكبر، وتداخل السجلات/البايتات العليا، ونتيجتي الكتابة، وحدود عرض البايت مع REX، وحفظ السجلات كاملةً باستخدام مرجع حسابي غير موقّع. تشترط الفحوص الأصلية عدم إنشاء بتات اعتباطية جديدة مع الاحتفاظ بالاعتماديات السابقة. يقبل الشاهدان XADD دون تعديل ويرفضان تغيير المجموع أو المصدر المتبادل أو علم معرّف. يستخدم الاسم البديل /6 مصفوفة عد الإزاحة الكاملة، وتُرفض حالات تغيير المجموعة أو معرّف فك الترميز. تستنفد اختبارات الذاكرة أيضًا جميع أزواج البايتات وتغطي تغيير حجم العنوان والامتدادات والعناوين النسبية إلى IP وعناوين i386 ذات 16 بت والإزاحات ذات الإشارة والبايتات المجاورة ورفض التفاصيل القديمة. تحافظ البراهين الأصلية للإطار الكامل على الاعتماديات الاعتباطية السابقة والحدود الدقيقة/الناقصة؛ ويخالف تعديل عنوان الكتابة عقد خانة العودة.
يفحص X86DoubleShiftUndefinedEffects.* كل عدد بايت خام عند عروض 16/32/64 بت بنقل مستقل بتًا بتًا، بما يشمل تداخل المصدر والوجهة وCL والشروط الدقيقة. تتخلص الفحوص الأصلية من RAX لعزل الأعلام، وتميز 16 عن 17، وتحفظ الاعتماديات السابقة والميزانيات الدقيقة/الناقصة. ترفض علاقات الحالة الكاملة تغيير الأجزاء المعرّفة والشاهد الصفري؛ ولا تسمح كلمة دنيا اعتباطية بمحو البتات العليا المعرّفة. لا تنشر الصيغ المشوهة أدلة جزئية.
تغطي حالات *Deferred* أهداف القفز والاستمرار غير القابلة للوصول، والكود المفقود أو المشوه، والشروط الرمزية المتناقضة، والتحكم الاعتباطي، والشواهد وتغييرات الحالة الكاملة. يؤكد المزوّدون الاصطناعيون عدم جلب الخلفاء الميتين ورفض البيانات الوصفية المشوهة عند الوصول. لا تصدّق ميزانيات التعليمات والعمليات والزيارات والاستعلامات الدقيقة/الناقصة ولا البدائل الخاطئة الممكنة ولا الحلقات اللانهائية بادئات التنفيذ. تغيّر السياسة بصمات الشهادات وترفضها الواجهات الثابتة وواجهات الحلقات.
يستخدم NeverDPEFixedImageTests ملفات PE مستقلة الإنشاء لاختبار التعليمات المعاد تموضعها والبيانات الثابتة وكتابات الاستيراد والترويسات/الجداول المشوهة والتداخلات وتغيير معلومات المنشأ. تقبل البراهين من الشيفرة الأصلية إلى LowIR وLLVM الدقيق المرشحات المطابقة وترفض النتائج أو الحالات أو البايتات الأصلية المعدلة. يظل نفاد ميزانية التحضير مصنفًا بصورة مستقلة، ويمكن إعادة المحاولة بعد زيادة الحدود صراحةً؛ كما يقبل التحميل العادي 40000 سجل إعادة تموضع صحيح تتجاوز ميزانية التحليل الافتراضية.
تتحقق FrameOffsets.* وNativeStackSpecialization.* وOriginalBinaryUndefinedIndependence.* من جميع بواقي المحاذاة 2/4/8/16/32، والبتات العليا الحرة، والحفظ عبر الاستدعاءات، وحلقات العد التنازلي، وفساد الأسماء البديلة، والتوزيع الخاطئ، والأقنعة الكبيرة غير ذات الصلة، والتوسعات اللازمة، والميزانيات الدقيقة أو الناقصة بمقدار واحد. تتحقق ضوابط أصلية منفصلة من المحاذاة المشروطة وتنظيف العودة الداخلي غير الموقّع والتنظيف الخاطئ والعودة ذات البادئات. لا تثبت هذه الاختبارات التغطية التلقائية لبراهين الشيفرة الأصلية إلى LLVM للحلقات المقسمة.
تغطي الاختبارات الأصلية 64 قراءة محاذاة بميزانية استعلام قراءة واحدة، ونقص الميزانية بمقدار واحد، والعناوين المعدلة خارج الإطار، والعنوان نفسه بمحمولات مختلفة بعد عودة مسار. وتظل اختبارات تعديل الحالة ومفاتيح الذاكرة المؤقتة وسعتها مطلوبة.
تحتفظ اختبارات جدوى التنفيذ المتكررة بكل التعليمات الأصلية الـ130 ضمن ميزانية استعلامات مساوية لمسار خطي من تعليمتين. وترفض نقص ميزانية الاستعلامات أو التعليمات بمقدار واحد، والمصائد القابلة للوصول بعد تغيير الفروع أو نطاقات الدخول، ونفاد بوابات المحلّل، وتعديل حالة المرشح.
تختبر حالات انحدار إزاحة الإطار 558 تركيبة لعرض الشرائح والمحاذاة والباقي والانحياز بميزانية بوابات لا تكفي لطرح الجذور الكاملة. تشمل مصادر/انحيازات غير متطابقة، وأقنعة متناثرة غير مقيدة، وحملًا والتفافًا معياريين، وأقنعة متداخلة ونفاد العقد/الاستعلامات. تتحقق الاختبارات الأصلية من التخزين عبر مؤشرات محاذاة جزئيًا وترفض غياب المحاذاة والوصول خارج الإطار وقيم التخزين المعدّلة في تنقيح الحالة الكاملة.
تغطي الاختبارات جميع البواقي للمحاذاة 1/2/4/16 وجذرين والبتات العليا الحرة والمجالات غير الصالحة والثوابت المتناقضة والحدود وفجوات الاستثناء والحفظ وميزانيات الاستعلام الدقيقة والأقل بواحد. تحفظ قوالب الاستقراء شرط الدخول. ترفض الإثباتات الأصلية وLLVM الجديدة المجالات المختلفة ورموز الحالة المعدلة وتربط الملخصات المجالين. الأمثلة مستقلة ولا تستنتج المحاذاة من ABI أو تنفيذ. تُترجم دالة C مستقلة ذات حارس دخول دون تعديل عند O1/O2 وتُثبت مقابل التعليمات الأصلية الفعلية لباقيين؛ ويجب رفض المنتجات نفسها عند باقٍ مختلف.
تغطي اختبارات حالات السجلات ترتيبي البايتات وقواعد الإطار العالية والحقول المعاد كتابتها والمتداخلة والحواف اللاحقة والأسلاف الموسعة وCALL/RET الأصلية والميزانية الكافية تماماً أو الناقصة بواحد. ينفذ مسارا C حالات الذاكرة الأربع عند O0/O2. تثبت فحوص التحسين الأصلية قيمتين للمحدد كلّاً على حدة، ولا تشكل إثباتاً لمدخلات غير مقيدة. يتحقق مثال LLVM مستقل، مع نسخ PHI والكتابات، من أن نقل الفرع الخاطئ قبل نقطة الدمج المشتركة لا يجعله ينفذ بعد الفرع الصحيح.
تغطي اختبارات الاصطفاف التقسيمات الأدق وجميع البواقي المسموحة وبتات العنوان العليا المختلفة وفشل الحالة الأخيرة والميزانية الدقيقة أو الناقصة بواحد. تُختبر واجهتا إخراج C عند O0/O2 بعناوين ضيف مرفوضة غير قابلة للوصول وأعلام غير صالحة: يجب أن تحفظ الحالة 2 كل بايتات الحالة. وتتحقق اختبارات النموذج وC/Python من تخطيط v5 والملكية والامتدادات القديمة والمستقبلية. ترفض الإثباتات الأصلية نطاقات الاصطفاف غير المرتبطة بالعقد.
تتحقق StringTransfer.* واختبارات النسخ المتكرر من التداخل والعدد صفر وعزل المؤقتات وحدود السعة والميزانية وإبطال المؤشرات. يقارن MachineStringSourceTests.cpp التنفيذ الأصلي ومساري C عند O0/O2 بمرجع مستقل لجميع المسجلات والأعلام وبايتات المكدس، للأحجام الأربعة والاتجاهين.
تغطي ControlDiscovery.* وNativeStackSpecialization.* شروط البتات الدنيا للجذر، والاعتماديات على البتات العليا والجذر بأكمله، والاجتيازات غير المكتملة، وميزانيات الاجتياز الكافية بالضبط والناقصة، والحفاظ على شواهد العناوين الثابتة المحدودة.
تغطي اختبارات الحراسة للأهداف غير المحلولة مرحلة غير صالحة يتعذر الوصول إليها، وهدفًا مجهولًا يمكن الوصول إليه عند الدخول أو بعد حافة رجوع، وحدودًا دقيقة لمحاولات التحسين، وميزانيتي اكتشاف متجاورتين تنجح إحداهما وتنفد الأخرى. لا ينشر الرفض شيفرة متبقية أو سجلات منشأ أو شواهد قراءة. العمل الاختياري بعد اكتمال الاستعادة ليس حدًا أدنى للميزانية المطلوبة.
تغطي اختبارات إسقاط الإطار حسب الطلب السجلات المكتشفة تلقائياً والموجودة، وعناوين الجذر العالية والالتفاف الحسابي، والشروط المقيدة للبايت الأدنى فقط، وتعارض الحقائق أو غيابها على الحواف الشقيقة، ونتائج ميزانيات الاستعلام المتجاورة وحالة unknown من المحلل. لا يحوّل الطلب الضيق إثبات جزء من المؤشر إلى إثبات كامل؛ ولا ينشر رفض الاستعادة شفرة متبقية أو شواهد.
تغطي اختبارات الحقول الجزئية المحدودة المحددات في كلا النصفين، والبيانات الاعتباطية القابلة للرصد، والسجلات وخانات الإطار، وترتيبي البايتات، والحقول الضيقة، والتوسع اللاحق للنطاق، والأقنعة المنفصلة، والحقائق المفقودة. لا يجوز نشر شفرة متبقية أو شواهد عند غياب هدف قابل للوصول، أو وجود محدد غير مقيد، أو نفاد ميزانية الاستعلامات المشتركة، أو إرجاع المحلل unknown. وتشمل الاختبارات أيضًا الاكتشاف التلقائي مع طلب الكلمة كاملة، والتلميحات اليدوية غير المستخدمة، والبيانات المشتقة من الجذر، والنوافذ الثابتة الأولى.
تغطي اختبارات ميزانيات العمل العامة القيم الافتراضية والقصوى من 32 بت، واستنفاد التقييمات والاكتشاف كلًا على حدة، وكلتا واجهتي المصدر وخلفيتي C، وقيم CLI غير الصالحة. تغطي فحوص تخطيط C/Python إصدار v7 والتحقق الموروث وتجاهل v1–v6 للذيول المستقبلية. يجب ألا ينشر رفض الميزانية مصدرًا أو شواهد استعادة، وألا يلتف عداد التقييمات عند قيمته القصوى.
تقارن اختبارات حد السلسلة الاختياري الحلقات المباشرة والمتداخلة ضمن ميزانية عمليات ثابتة واحدة، وتشغّل الحلقات المتبقية، وتميز أنماط فك الترميز وتتحقق من عدم تغيير السلوك عند تعطيل التسلسل. يجب أن ينجح مثال الترابط المضاد افتراضيًا ويرفض النشر عند تفعيل الخيار. تُختبر الاستدعاءات الأصلية المتكررة وخانات العودة وإعادة التبعيات والأسلاف المتأخرة بالإعدادين. تشمل الاختبارات العامة واجهتي المصدر والخلفيتين، والأعلام الافتراضية والمجهولة، وتجاهل الواجهات القديمة للامتداد والقيمة المنطقية في التقرير.
يتحقق NativeStackSpecialization.NarrowAddressDemandRetainsCompletePointer من دمج المؤشرات المشروط في السجلات وخانات الإطار، ومن ترتيبي البايتات والالتفاف الحسابي والعناوين الجذرية العالية واستعادة المكدس و120 بايتاً من الإطار. ترفض الاختبارات السلبية المرافقة المؤشرات التالفة، وتختبر ميزانيات الاستعلامات والعمليات والتقييمات والتنقيحات الكافية تماماً والأقل بواحدة، إضافة إلى نفاد حدود الاكتشاف والسياقات.
تغطي اختبارات المراقب الرفض المبكر والثوابت والإسقاطات الفارغة واستعلام UNSAT الأخير. تُبقي اختبارات القراءة قراءات وقت التشغيل بعد ظهور مثال مضاد، وتعيد التحقق من مجالات العناوين المخزنة لنطاق قراءة مختلف، وترفض الشهادات المشوهة دون نشر أدلة جزئية.
تغطي اختبارات التحكم الأفيني شروط البتات الدنيا بميزانية ثمانية استعلامات، والسجلات وخانات الإطار بكلا ترتيبي البايتات، والالتفاف الحسابي، ومراقبة بايتات الإطار، واستعادة المكدس. يجب أن يستبعد الشرط المتناقض غير المكتوب كقيمة ثابتة فرعًا غير مدعوم؛ ويجب أن يحتفظ جذران تتطابق بتاتهما الدنيا الـ32 وتختلف بتاتهما العليا بوجهتي الانتقال غير المباشر.
تختبر FiniteQueryCache.* حدود التخزين الكافية تمامًا والأقل بوحدة واحدة، وتحديث ترتيب الاستخدام عند العثور الناجح، واستبعاد عدة سجلات مختلفة الأحجام، والاستبعاد المتكرر، والاستعلامات ذات المتغيرات المعاد تسميتها. تحافظ عمليات التخزين المكررة والبحث غير الناجح والنتائج المشوهة والمرشحات الأكبر من السعة على الترتيب. وتظل نسخ البراهين المعادة صالحة بعد استبعاد سجلاتها من الذاكرة المؤقتة.
تختبر ControlStateRecovery.*Marginal* مجالات مستقلة للأهداف وبيانات العمل يتجاوز حاصل ضربها الحد المشترك، والنتائج الفعلية للبرنامج المتبقي، وسابقًا متأخرًا يضيف هدفًا بعد توسيع العلاقة، والأهداف القابلة للوصول المفقودة، وإسقاط المجال بالكامل عند تجاوز الحد أو عدم اكتمال التعداد. تتحقق هذه الحالات الأصلية من إعادة التحليل عند تغيّر المجال ومن عدم نشر رسم جزئي عند الفشل. يتحقق متغير يستخدم خانة في إطار المكدس من إبطال المعلومات بسبب كتابة قد تتداخل معها بعد توسيع العلاقة، بترتيبي البايتات.
تختبر InterpreterTransferChain.* القيم المترابطة والفروع الوحيدة والديناميكية والأسلاف المتأخرين وحدود الإطار ورفض التداخل والميزانيات. وتختبر حالات CALL/RET الأصلية الإضافية التكرار وبايتات موضع العودة واستعادة المكدس. تغطي إعادة تشغيل المنتجين وضوابط الانتقال من الأصل إلى LLVM اختلاف العقود وتغير سجلات الإثبات والنتائج الخاطئة وكتابات المكدس المفقودة.
تتحقق NeverDX86NoIndexAddressTests من عنونة x86 SIB بلا فهرس بعرض عنوان 32 و64 بت: تجاهل بتات معامل القياس، وعرض الوجهة، والتحميل والتخزين، واكتمال بيانات المخرجات غير المعرّفة، وإزاحات المقاطع ومصدر العناوين. ترفض السجلات الوهمية كأساس أو كفهرس بعرض غير صحيح، وتحافظ على فهارس R12 الحقيقية التي يحددها REX.X. وتغطي اختبارات البث والنقل المقنّع في EVEX هذه الصيغ، ومنع عمليات الذاكرة غير النشطة، وبيانات SIB المتناقضة.
تغطي اختبارات الإزاحة جميع الأعداد الخام ذات الثمانية بتات، وتركيبات الأعلام عند الصفر، ونمطي x86، وكل العروض، وتداخل CL، وAH/CH/DH/BH، والسجلات الممتدة والذاكرة. يُقارن التنفيذ الرمزي الدقيق بالبايت بحساب متكرر لبت واحد. تختبر العلاقات الأعلام المنسوخة والجديدة والحفظ والعودة إلى الحلقات والأعداد المشتقة من قيم غير محددة والفروع والترميزات غير الصالحة والبصمات والميزانيات. تشمل القراءات المنتهية 1/2/4/8 بايت، والاختيار حسب المدخلات، وعنواناً وحيداً لكل مسار، والأدلة الكاملة والحدود؛ وترفض المرشحين المعتمدين أو المفقودين أو القابلين للكتابة أو غير المسندين بملف أو المعاد توطينهم أو غير المحدودين.
تفحص اختبارات النواة فصل السياقات والدمج عند نقطة ثابتة والحلقات الديناميكية والسجلات المتداخلة وإبطال معلومات التداخل في الذاكرة والتوزيع المنتهي والرفض دون بديل جزئي. تجمع اختبارات المصدر آلات x64 أصلية تعتمد على السجلات أو المكدس أو العناوين المنتهية؛ وتشمل حقول تحكم مترابطة ومرجعًا أصليًا مستقلاً لاتفاقيتي SysV وWin64. يُترجَم مسارا C عند O0/O2 مع مصائد السلوك غير المعرّف وتُقارَن نتائجهما بمرجع للحساب غير الموقّع والكتابة إلى الذاكرة وقيم حراسة المخرجات. تفحص الحالات السلبية الشهادات الناقصة والميزانيات غير الكافية. وتفحص واجهة CLI العامة وتقاريرها عناصر التحكم والميزانيات والعدادات والرفض. يلزم Clang متعدد الأهداف وLLD؛ ويتطلب تنفيذ ELF الأصلي أيضًا مضيف Linux x64. غياب أداة أو عدم توافق المضيف يعني تخطي التغطية، وليس نجاحها.
تغطي اختبارات ControlStateRecovery.LongTransparentLoop* حلقة مستقلة التأليف من 20 مرحلة، ومراجع حسابية ديناميكية، ورفض المحددات المجهولة، ونفاد الميزانية. ويتحقق LongTransparentPhasesKeepExactBitDemands من بقاء البتات غير ذات الصلة في بايت المحدد بيانات قابلة للملاحظة وقت التشغيل، دون تحويلها إلى طلبات تحكم. ويتحقق ProducerClosureChargesWorkBeforeAnotherRestart من احتساب الاكتشاف العكسي وإعادة التقييم ضمن الميزانيات المشتركة قبل بدء رسم جديد، دون نشر نتائج جزئية.
يتحقق X86ShiftCarry.* من حمل الإزاحة الحسابية اليمنى للأعداد الضيقة، والعدّاد
بعد القناع، وسجلات الوجهة وكبت الأعلام في APX، بالمقارنة مع إزاحات متتالية من بت واحد.
يشغّل NarrowArithmeticShiftCarrySurvivesBothSourceBackends ناتجَي C عند O0/O2
مع مصائد السلوك غير المعرّف، ويغطي جميع قيم البايت والعدّادات الأصلية.
كما يشغّل NeverDLLVMCIntrinsicSemanticTests عمليات min/max الصحيحة الموقّعة
وغير الموقّعة بعروض i1/8/16/32/64/128 عند O0/O2، ويتحقق من النتائج المسندة
والمضمّنة وترتيب إنتاج المعاملات وتقييمها مرة واحدة. يجب رفض العروض القياسية
غير المدعومة والمعاملات غير السليمة صراحةً.
تتحقق HighControlFlowSemantics.* من حفظ التسميات التي تشير إليها قفزات أخرى عند نقل مخارج الحلقات أو أجزائها اللاحقة. تشمل الاختبارات الدخول المباشر إلى مخارج بداية الحلقة ونهايتها واستبدال break، وتشغّل C المولّد عند O0/O2 مع قيم إرجاع متوقعة مستقلة.
تتحقق HighCPointerAddresses.Required* / UnknownConditionsFailOnlyWhenRead من حفظ الخانات الأخيرة المجهولة لوسائط السجلات المطلوبة المستنتجة. يجب أن يؤدي تقييم وسيط مطلوب مجهول أو شرط مجهول إلى مصيدة صريحة؛ ولا يجوز تحويل المعاملات المحذوفة أو الفارغة أو المتداخلة إلى صفر بصمت. تظل القيم المعروفة والمعاملات الإضافية التي ثبت عدم قراءتها قابلة للتنفيذ. المصيدة حد تشخيصي وليست دليلاً على تكافؤ السلوك المستعاد.
تبني NeverDIntegerABITests عينات أصلية من Clang لـWindows x64 وLinux x64 وLinux ARM64، وتختبر دوالاً ذات عشرة وسائط حقيقية عبر السجلات والمكدس وإطارات الاستدعاء. تغطي مصفوفة Unicorn/KVM/WHP؛ وتُسجّل تركيبات المضيف/ISA غير المتاحة كتخطٍ صريح، لا كنجاح. يفحص NeverDExecutionBudgetTests ميزانية الاستمرار المشتركة والموعد المطلق من دون نوم معتمد على التوقيت.
تغطي NeverDCPUEmulationTests تعليمات ARM64 والتحكم والتحميلات والسياقات والاسماء المستعارة وإبطال cache والحلقات المحدودة؛ ينفذ الملف البرمجي كذلك FP/SIMD وTLS. تختبر NeverDUserExecutionTests صلاحيات صفحات CPL3/EL0 والاسماء المستعارة واسترداد أخطاء الحماية والسياقات وتبديل فضاء العناوين. تثبت NeverDServiceRequestTests أن SYSCALL/SVC يعترضان قبل دخول النقل، ويحفظان الحالة ويمنعان التعديل حتى استهلاك الطلب مرة واحدة؛ هذا بروتوكول تسليم وليس نظام خدمات OS كاملاً. وتفحص NeverDExecutionConfigurationTests التحقق المشترك بين المصنع والتقرير، والتمييز بين دعم البناء وفحص المضيف المباشر، وفشل التركيبات غير المدعومة قبل التعديل. الاختبارات العامة لـSDK/CLI لا تتطلب نموذج Windows. تختبر NeverDThreadPointerTests FS-base وTPIDR_EL0 واستعادة السياق والصلاحيات. تستخدم NeverDKvmCancellationTests ضيف x64 لا ينتهي للتحقق من إيقاف KVM النشط واستئنافه وحالة إشارات التطبيق؛ تُتخطى صراحةً عند غياب KVM.
cmake --build build-cpu --target NeverDKvmRunTests NeverDKvmCancellationTests --parallel 4
ctest --test-dir build-cpu -L '^NeverDKvm(Run|Cancellation)Tests$' --output-on-failurecmake --build build-cpu --target NeverDIntegerABITests NeverDExecutionBudgetTests NeverDCPUEmulationTests NeverDUserExecutionTests NeverDServiceRequestTests NeverDExecutionConfigurationTests --parallel 4
ctest --test-dir build-cpu -L '^NeverD(IntegerABI|ExecutionBudget|CPUEmulation|UserExecution|ServiceRequest|ExecutionConfiguration)Tests$' --output-on-failureالغياب عن مضيف ARM64 أو عن المحاكي الافتراضي تخطٍ للتغطية الأصلية وليس نجاحاً؛ Unicorn والتجميع المتقاطع لا يثبتان تنفيذ KVM/WHP أصلياً.
يفرض NeverDParallelExecutionTests تداخل استدعاءات المعالج وإلغاء الكاتب المنتظر، ويفحص استقلال CPU والتنافس عبر الأسماء البديلة والنقل الخاص. يتحقق NeverDRunControlTests من إيجاري موارد WHP مستقلين متزامنين وتسلسل المخزن المشترك. يقارن NeverDMMIOAtomicTests نتائج الجهاز وRAM لتعليمات x64 الذرية والتحديث وجميع حالات ARM64 LSE، ومراقبتي الكتابة العريضة والمعاينات القديمة والفشل وسباق commit/stop. يغطي KernelMMIOFailure الأسماء البديلة والكتابات المتطابقة والاعتماد المكرر والطاقة وإلغاء الخريطة وانتهاء المالك. تُتجاوز المنصات غير المتاحة صراحة. يثبت حاجز الغلاف تزامن الاستدعاءات لا إنهاء التعليمات عتادياً في اللحظة نفسها. يتطلب ARM64 KVM/WHP المضيف المناسب.
cmake --build build-cpu --target NeverDParallelExecutionTests NeverDMMIOAtomicTests NeverDRunControlTests --parallel 4
ctest --test-dir build-cpu/unittests/emulation -L '^NeverD(ParallelExecution|MMIOAtomic|RunControl)Tests$' --output-on-failureتجمع مجموعة محاكاة العمليات ملفات ELF حقيقية لـx64/AArch64. يتحقق NeverDLinuxProcessTests من البدء وسياسة program headers وطلبات الخدمة والمخرجات الثنائية والأعطال والموارد. يختبر NeverDProcessPublicTests C API وCLI دون تغيير صورة التحليل. ويغطي NeverDExecutionSessionTests CPUين يشتركان في الذاكرة والميزانية واستهلاك الطلب/العطل مرة واحدة؛ أما NeverDX64MemoryUpdateTests فيتحقق من حسابات الذاكرة وSETcc وBT وXMM/MXCSR ومراقبي الكتابة وحدود REP والقراءة المحضرة للأجهزة. وتعيد DriverBackendParityTests.cpp تشغيل صور WDK الأصلية والمعاد تموضعها وتقارن التقرير المرصود بالكامل بـUnicorn؛ الحالات والأجهزة غير المتاحة تُتخطى صراحة.
يقبل x64 المفحوص أيضاً الأشكال القديمة المقنّعة SS وSD وPS وPD للتعليمات ADD وSUB وMUL وDIV وSQRT وMIN وMAX. يوحّد X64SSEInstructions.def عروض المعاملات والمحاذاة وقواعد القبول. يقارن MaskedSSEArithmeticMatchesIndependentHostExecution أشكال السجلات وRAM بمرجع مستقل على CPU المضيف، شاملاً أوضاع التقريب الأربعة وFTZ والأصفار الموقّعة والمدخلات دون الطبيعية وNaN. ويتحقق SSEMemoryObserverStopsBeforeResultAndStatusChanges من التوقف قبل الآثار. تبقى الاستثناءات غير المقنّعة وx87 وAVX غير مقبولة.
تستخدم X64PackedIntegerTests.cpp الترميزات الأصلية و180 نتيجة ثابتة من X64PackedIntegerCases.def وتقارنها بصورة مستقلة مع intrinsic لمترجم x64 الأصلي. تحافظ حالات السجلات وأسماء RAM المستعارة في نهاية الصفحة على سجلات XMM الأخرى والقيم الصحيحة المرجعية وFLAGS وMXCSR وبايتات المصدر. يحافظ توقف المراقب أو فشله وأخطاء القراءة القابلة للاسترداد على الحالة، ويسمح الإصلاح بإعادة المحاولة مرة واحدة. ينتج عن عدم المحاذاة #GP(0)؛ وتظل MMX وLOCK وMMIO مرفوضة قبل الاستدعاءات الراجعة. يشترط CI الأصلي مستويي صلاحيات WHP.
يقارن X64PackedShiftTests.cpp وحالات X64PackedShiftCases.def الأصلية عشر إزاحات بحسابات عددية مستقلة وSSE2 intrinsics أصلية، باستخدام 16 عدادًا فوريًا و21 عدادًا متغيرًا. تشمل الاختبارات اشتراك العداد والوجهة في السجل، وتجاهل البتات العليا، والمحاذاة، والمراقبين، والأخطاء القابلة للاسترداد ورفض الأجهزة. يتشارك X64VectorTestSupport.h تأكيدات السجلات وRAM مع اختبارات الحساب المعبأ. تفرض CI الأصلية نمطي امتياز WHP.
يقارن X64VectorMaskTests.cpp ترميزات آلة مستقلة باستخراج بتات قياسي وبدوال SSE الأصلية، ويختبر كل بت مصدر وكل تركيبات 16 GPR × 16 XMM مع قيمتي REX.W. تتحقق لقطات جميع السجلات العامة وRAM ومراقبات البيانات من التوسيع بالأصفار وحفظ الحالة. لا تنشر حالات إيقاف التعليمة وفشل الاستدعاء والصيغ غير المدعومة أي آثار جانبية. يتطلب قبول KVM/WHP الأصلي اختبار مستويَي الامتياز.
يستخدم X64ShuffleTests.cpp الترميزات المستقلة في X64ShuffleCases.def ويقارن الاختيار القياسي للمسارات بالدوال الجوهرية الأصلية. يغطي قيم التحكم الـ256 والسجلات والمصدر المطابق والأسماء البديلة عند نهاية الصفحة وجميع أزواج XMM وحالة CPU العامة الكاملة وRAM وتوقف المراقبين واستثناءاتهم والأذونات وأخطاء المحاذاة وإعادة المحاولة. يجب رفض MMX وVEX/EVEX وLOCK ومعاملات الأجهزة دون آثار. يشترط قبول KVM/WHP الأصلي هذه الحالات عند مستويي الامتياز؛ وتُتخطى أزواج المضيف/ISA غير المتاحة صراحةً. تعيد حالات UNPCKLPS وUNPCKHPS وUNPCKLPD وUNPCKHPD استخدام مصفوفة الحالة والأخطاء نفسها والمقارنات القياسية والأصلية المستقلة. كما تُختبر كل وجهة XMM مع مصدر في الذاكرة.
يقارن X64PartialMoveTests.cpp وX64PartialMoveCases.def مراجع مستقلة قياسية وأصلية للتحميل والتخزين، وجميع سجلات XMM الـ16 والبتات الخام لقيم NaN والأعداد دون الطبيعية. يفحصان حالة CPU الكاملة وصفحتي RAM عند الوصول غير المحاذي والأسماء البديلة وأخطاء عبور الصفحات وإصلاح الصلاحيات وتوقف المراقبين وفشلهم وإعادة المحاولة. تكفي ثمانية بايتات عند نهاية الصفحة ولا يحتاج التخزين إلى صلاحية القراءة. تُفحص صيغ السجلات البديلة والصيغ المرفوضة واستدعاءات الأجهزة منفصلة؛ حالات KVM/WHP الأصلية إلزامية عند مستويي الصلاحية.
يستخدم X64IntegerFloatTests.cpp ترميزات مستقلة من X64IntegerFloatCases.def وتوقعات APFloat وتعليمات أصلية مع حفظ حالة FP واستعادتها. يفحص عرضَي العدد الصحيح وأنماط التقريب الأربعة وحالة الدقة المتراكمة وFTZ وكل زوج GPR/XMM والحفاظ على حالة CPU/RAM الكاملة. تُفحص النطاقات الدقيقة للمصادر غير المحاذية والعابرة للصفحات وعند نهايتها وإصلاح الصلاحيات وتوقف المراقبين وفشلهم وإعادة المحاولة. حالات KVM/WHP الأصلية إلزامية عند مستويي الصلاحية.
يفحص X64FloatIntegerTests.cpp التقريب والاقتطاع باستخدام ترميزات مستقلة من X64FloatIntegerCases.def وAPFloat وتعليمات أصلية للسجلات والذاكرة. تغطي الاختبارات الحدود الموقعة والقيم المنتصفة وNaN واللانهايات والقيم دون الطبيعية وكل أنماط التقريب والحالات المتراكمة وFTZ لكلا عرضَي العدد الصحيح. وتفحص كل زوج GPR/XMM وحالة CPU/RAM الكاملة والقراءة الدقيقة عند نهاية الصفحة وأخطاء عبور الصفحات القابلة للاستعادة وإلغاء المراقبين وإعادة المحاولة. نتائج KVM/WHP الأصلية إلزامية عند مستويي الصلاحية.
يستخدم X64SSEComparisonTests.cpp ترميزات مستقلة من X64SSEComparisonCases.def وترتيب APFloat وتعليمات أصلية تحفظ وتستعيد FLAGS وحالة FP للمضيف. تغطي جميع أزواج 21 مدخلًا خامًا أولوية NaN والمعاملات دون الطبيعية والأصفار واللانهايات والقيم المتجاورة. ويفحص جميع أزواج XMM والأسماء المستعارة وMXCSR المتراكم واستقلال التقريب وحفظ DF وحالة CPU/RAM الكاملة والقراءات الدقيقة عند نهايات الصفحات وعبرها وإلغاء المراقبين وإعادة المحاولة. نتائج KVM/WHP الأصلية إلزامية عند مستويي الصلاحية.
يستخدم X64SSEPredicateTests.cpp شروطًا مستقلة من X64SSEPredicateCases.def ومدخلات خام مشتركة من X64SSEComparisonCases.def وترتيب APFloat وتعليمات أصلية. تغطي الاختبارات جميع الأزواج وأولوية الاستثناءات بين المسارات المختلطة والمسارات العددية العليا وأسماء XMM المستعارة وحالة CPU/RAM الكاملة والقراءات عند نهاية الصفحة وعبرها وأولوية المحاذاة وإعادة المحاولة بعد المراقبة أو الخطأ. تغطي فحوص Capstone المباشرة جميع بايتات التحكم والصيغتين وواجهتي فك الترميز ووضعَي 32/64 بت. نتائج KVM/WHP الأصلية إلزامية عند مستويي الصلاحية؛ وتبقى القيم المحجوزة وVEX/EVEX ومعاملات الأجهزة مستبعدة. تُقسم مصفوفات القيم حسب التعليمة وشرط المقارنة، ومصفوفات التقريب والتحكم حسب التعليمة. تبقي NativeCPUTests.def جميع التركيبات الأصلية إلزامية، دون تغيير مهلة الضيف أو مهلة CTest البالغة 15 ثانية. تتحقق مرحلة الترجمة من ظهور كل زوج من التعليمة والشرط مرة واحدة بالضبط.
يجمع X64SSEPrecisionTests.cpp ترميزات مستقلة من X64SSEPrecisionCases.def وتقريب الدقة عبر APFloat وتعليمات أصلية. تستخدم فحوص النطاق أسًا غير محدود، بما في ذلك التجاوز الموجّه إلى قيمة منتهية والنتائج الضئيلة التي تُقرّب إلى طبيعية. تشمل الاختبارات الإشارتين وحمولات NaN وكل أوضاع التقريب وFTZ والحالة التراكمية وتجميع المسارات وأسماء XMM المستعارة وحالة CPU/RAM الكاملة وعروض المصدر الدقيقة وأولوية المحاذاة وأخطاء الصفحات وإلغاء المراقب وإعادة المحاولة. حالات KVM/WHP إلزامية عند مستويي الصلاحية.
يستخدم X64PackedFloatTests.cpp ترميزات مستقلة من X64PackedFloatCases.def وتوقعات موقعة عبر APFloat وتعليمات أصلية. يفحص كل أزواج المدخلات وحدود الأعداد الصحيحة ونقاط المنتصف وأوضاع التقريب والحالة التراكمية وFTZ. تشمل الصلاحيتين الأسماء المستعارة وكل أزواج XMM وحالة CPU/RAM الكاملة وكل انقسام m64 بين الصفحات ونهايات الصفحات الدقيقة وأولوية المحاذاة وإعادة المحاولة بعد المراقبة أو الخطأ. جميع حالات KVM/WHP إلزامية.
يجمع X64PackedFloatIntegerTests.cpp ترميزات مستقلة من X64PackedFloatIntegerCases.def ومدخلات مشتركة من X64FloatIntegerCases.def وAPFloat/APSInt وتعليمات أصلية. تغطي كل أزواج المدخلات الخام الـ43 حدود signed32 وجيران نقاط المنتصف وNaN واللانهاية والقيم دون الطبيعية. تغير مصفوفات منفصلة كل مسار دقيق أو غير دقيق أو غير صالح أو دون الطبيعي بصورة مستقلة. تُفحص كل أوضاع التقريب/FTZ/الحالة التراكمية وأسماء XMM المستعارة وحالة CPU/RAM الكاملة ونهايات الصفحات المحاذاة والأولوية وإعادة المحاولة. حالات KVM/WHP إلزامية عند الصلاحيتين.
توسّع DAZBackends مصفوفات المقارنة والمحمولات والتحويلات القياسية والمجمّعة بين الأعداد الصحيحة والعائمة ومستويات الدقة لتشمل تفعيل DAZ. يوفّر X64DAZTestSupport.h تطبيعًا مستقلاً للمدخلات باستخدام APFloat ويتحقق من MXCSR_MASK للمضيف قبل تنفيذ التعليمات الأصلية المرجعية. تقارن الاختبارات الأصفار الموقّعة والأعداد دون الطبيعية وNaN والمسارات المختلطة وكل أنماط التقريب وFTZ والحالة المتراكمة، مع التحقق من حفظ بايتات المصدر والسجلات الأخرى وFLAGS وكامل RAM. تحتفظ معاملات السجلات والأسماء المستعارة وحدود الصفحات بفحوص مراقبة الوصول. يتطلب KVM/WHP جميع حالات DAZ في مستويي الامتياز وحالات المرجع الـ 17 بتعليمات المضيف الأصلية؛ وتتجاوز التشغيلات المحمولة المضيفين غير المدعومين صراحةً. تبقى حالات تعطيل DAZ والمهل الحالية كما هي.
يتحقق X64AlignmentTests.cpp من أن المعاملات غير المحاذاة لتعليمات aligned SSE المسموح بها تُبلغ عن #GP(0) قابل للاستعادة أو نهائي قبل مراقبي البيانات وفحص الصلاحيات واستدعاءات الأجهزة. يُحفظ كامل سياق سجلات x64 العام وPC وRAM. يسبق الالتفاف بحسب عرض العنوان إضافة أساس FS/GS، وإصلاح العنوان يتيح إعادة التعليمة الأصلية. تتحقق اختبارات آلة KVM/WHP المباشرة من الحد العتادي بصورة مستقلة. يسلّم Windows ring3 أخطاء operand_alignment المصنفة؛ وتبقى أسباب #GP الأخرى غير مدعومة.
يتجاوز X64SIMDExceptionTests.cpp طبقة قبول checked للتحقق من نقل #XM الأصلي في KVM/WHP عند مستويي الامتياز. تغطي الحالات الأصلية الثماني في X64SIMDExceptionCases.def أنواع الاستثناء الستة، بما فيها النتائج المتناهية الصغر الدقيقة والتجاوز الدقيق عند عدم تقييد الأس. تحفظ صيغ السجلات وRAM كامل حالة GPR وXMM وx87 وFLAGS وFS/GS وذاكرة الضيف عند الخطأ، باستثناء حالة MXCSR المحددة. يسمح حجب الاستثناء بإعادة تنفيذ التعليمة الأصلية؛ ويتحقق إصلاح المعاملات مع إبقاء الأعلام المتراكمة من أن الأعلام القديمة لا تعيد إطلاقه. تنفّذ عقود checked وبرامج التشغيل العامة أيضاً حالات الخطأ وإعادة المحاولة الأصلية. ينفّذ WindowsSIMDExecutionTests.cpp خطأً أصلياً فعلياً وتعليمات VEH/VCH للضيف ثم التخطي أو إعادة المحاولة بالقناع أو بإصلاح المعاملات. يتحقق منفصلاً من حالة التحكم الفعلية والسياق المحفوظ. ترفض اختبارات البدء السلبية الخطأ المفقود والمتجه الخاطئ والوجهة المعدلة دون نشر القدرات.
يبني check_windows_simd.py برنامج Windows x64 أصلياً مستقلاً من WindowsSIMDCases.def والحالات العددية. تغطي الملاحظات البالغ عددها 6,144 معاملات السجلات/RAM وجميع أقنعة الاستثناءات والأعلام المتراكمة المصفّرة أو المضبوطة بالكامل وثلاثة مسارات: التخطي، أو القناع ثم إعادة المحاولة، أو إصلاح المعاملات وإعادة المحاولة دون تغيير الأقنعة. تسجّل مداخل التجميع حالتي MXCSR وx87 الفعليتين في VEH/VCH بصورة منفصلة عن CONTEXT المحفوظ. يتحقق البرنامج من PC الدقيق وحفظ الحالة والسياق المصحح والنتيجة قبل استعادة المضيف. يحتفظ CI بالسجلات الخام وبصمات المصادر. يثبت --build-only الترجمة فقط. لا تفعّل هذه الملاحظات SIMD غير المقنّع في checked ولا تثبت تنفيذاً أصلياً على ARM64.
يثبّت WindowsSIMDStatusCases.def جميع تركيبات الحالة الفعالة غير الفارغة البالغ عددها 63 والمرصودة على Windows الأصلي. يتحقق WindowsSIMDMappingTests.cpp من الرموز والمعاملات الدقيقة ويرفض الأخطاء غير المتسقة وقيم التحكم غير الصالحة، ويحقن حدّ الخطأ لفحص السجلات وحقلَي التحكم في CONTEXT والاستئناف بعد التقنيع. يتحقق برنامج Windows CI الأصلي من النتائج المثبّتة بصورة مستقلة. لا يثبت الاختبار المحقون تسليم Unicorn للاستثناءات ولا يفعّل SIMD غير المقنّع في تنفيذ checked.
cmake --build build-cpu --target NeverDLinuxProcessTests NeverDExecutionSessionTests NeverDX64MemoryUpdateTests NeverDThreadPointerTests --parallel 4
ctest --test-dir build-cpu -L '^NeverD(LinuxProcess|ExecutionSession|X64MemoryUpdate|ThreadPointer)Tests$' --output-on-failureعدم توفر المحرك يسجّل كتخطٍ. اجتياز Unicorn ARM64 أو التجميع المتقاطع لا يمثل دليلاً على KVM/WHP أصلي.
فعّل NEVERD_ENABLE_DRIVER_EMULATION=ON مع BUILD_TESTING=ON لبناء مجموعة اختبارات التنفيذ المركّزة وفحوص واجهة C API/CLI المشتركة:
cmake --build build-release --target \
NeverDDriverEmulationTests NeverDDriverEmulationPublicTests --parallel 4
ctest --test-dir build-release -L '^NeverDDriverEmulation' --output-on-failureتختبر حالات الاختبار تهيئة الضيف والعودة الناجحة والفاشلة والسلوك غير المدعوم وأعطال الذاكرة والتحليل الصارم للسيناريو والتنفيذ المحدود، وكذلك الإدخال/الإخراج المتزامن buffered/direct وREAD/WRITE وأعمار الملفات المستقلة وصلاحيات MDL وحل الصادرات الديناميكي ووسائط الضيف المتغيرة وأعطال المعالج المنظمة عبر create وعمليات النقل وcleanup وclose وunload. استخدم واجهة emulate-driver لسطر الأوامر للتحقق من JSON ورموز خروج العملية. يمكن لبنى الإنتاج تفعيل هذه الميزة مع BUILD_TESTING=OFF؛ ويجب ألا تتطلب libneverd إعداد Unicorn المخصص للاختبارات وحدها.
تغطي الاختبارات الإضافية واصفات MDL المملوكة لبرنامج التشغيل لمخزن الذاكرة غير القابل للترحيل، والعمر المستقل للواصف والمخزن المؤقت، وتخطيطات استعلام السجل والمخازن القصيرة، وصلاحيات المقابض وحذفها وتسربها، وجميع بتات information_hex البالغ عددها 64 لطلبات IOCTL بلا خرج. يشمل التحقق الخارجي أيضًا القراءة والكتابة المباشرتين المتزامنتين واستعلامات الإحصاءات في Zero.
تتحقق الاختبارات من سياقات CPU الكاملة (السجلات والأعلام وSIMD وFPU وCR8) والذاكرة المشتركة ورفض السياقات الأجنبية أو بعد العطل. تنفذ عينات driver_dispatcher.c المترجمة استدعاءات DPC وعمل فعلية ومواعيد المؤقتات وأحداث/مؤقتات الإشعار والمزامنة وانتظار KernelMode غير القابل للتنبيه بسبب Executive والمهلة/التأخير ومكدسات محجوبة متعددة وحفظ الاستيقاظ بعد set/reset والوسائط وأخطاء IRQL/العمر. تبقى تغطية التعليق/الإكمال والطوابير والتعطل والميزانيات المشتركة. يثبت ذلك المجموعة الموثقة ولا يعني دعم Windows غير المتزامن بالكامل.
يشغّل DriverThreadPriorityTests.cpp برنامج التشغيل الأصلي المجمّع driver_thread_priority.c على Unicorn/KVM/WHP المحددة صراحة بعقدي driver وchecked. تغطي الحالات تغيير أولوية الخيوط الجاهزة والمنتظرة، والإيقاظ بحدث أو مؤقت داخل الحصة، وتناوب الأولويات المتساوية، وحجب DISPATCH_LEVEL، وتقدم المؤقتات أثناء حرمان الأولوية المنخفضة. تثبت مقارنة حلقتي عد حفظ بقية الحصة بدقة. تختبر حالات النموذج ABI الموقّعة، والرفض دون تغيير، ومراجع الخيوط المنتهية، والهوية المتداخلة، وإعادة استخدام المكدس المستقل. الحالات الأصلية إلزامية في NativeDriverTests.def؛ وتُتخطى وسائل التنفيذ المحلية غير المتاحة بوضوح.
ينفذ DriverMutexThreadTests.cpp أربعة أوضاع WDK أصلية من driver_seh_mutex.def: اكتساباً متكرراً من مرشح SEH، وملكية يكتسبها مرشح أو finally استثنائي، واستئناف مرشح محجوب بعد تحرير mutex من خيط نظام آخر. تغطي عقود driver وchecked في Unicorn/KVM/WHP الصور العادية/ذات CFG الفعال والعناوين المفضلة/المعاد تموضعها والتنفيذ التعاوني/حصص 1 و17 تعليمة. تتحقق اختبارات النموذج أيضاً من تعطيل APC بعد إنهاء المكدس المتداخل ورفض التحرير من خيط آخر وحماية العودة الخارجية؛ حالات KVM/WHP إلزامية في NativeDriverTests.def.
driver_context_limits.c: تأتي حدود IRQL من KernelAPIIRQL.def وتتحقق النماذج المسؤولة من الشروط المعتمدة على الوسائط. لا يمكن لـDPC استدعاء واجهات السجل أو تخصيص المخزن المقسّم إلى صفحات أو تحريره أو الوصول إليه. تتطلب تحويلات Unicode في DbgPrint مستوى PASSIVE_LEVEL، بينما يبقى إخراج ANSI والعمليات غير القابلة للترحيل المدعومة متاحة عند DISPATCH_LEVEL. للمكدسات حدود؛ فلا يدخل مؤشر مكدس خارج النطاق مكدس عامل آخر محجوب. تمنع المؤقتات الفعالة في امتداد الجهاز تحريره المبكر. لا تتيح هذه الفحوص تغييرات IRQL العامة.
يتحقق KernelDeviceStackTests.cpp من استقلال الملكية والإرفاق واختيار القمة وذرية الفشل والسعة والحقول المعتمة وعدّ المقابض واحتفاظ العمل/الطلبات بعد الفصل والحذف واختلاف هوية الملف عن هدف الإرسال. يستخدم driver_wdm_stack.c الأصلي ترويسات WDK حقيقية وCopy/Skip/SetCompletion مضمنة؛ تحدد المسارات الاختيارية NEVERD_WDM_STACK_FIXTURE/NEVERD_WDM_STACK_CFG_FIXTURE الصور العادية/ذات CFG النشط. يغطي DriverWDMStackTests.cpp إعادة التموضع والحالة الأدنى وترتيب/أعلام الإكمال ونقل pending المتأخر والعامل/DPC والانتظار وSTATUS_MORE_PROCESSING_REQUIRED واحتفاظ MDL المباشر والإكمال المتداخل والمؤشرات/التحكم غير الصالح. يغطي DriverScenarioPublicTests.cpp التمرير عبر C API/CLI والإكمال المحتفظ به والمتداخل عبر C API، بما فيه صور CFG المهيأة. تُتخطى المنتجات المفقودة صراحة. تثبت اختبارات Linux مكدس برنامج التشغيل نفسه فقط، ولا تثبت دعم PDO/PnP/الطاقة. يتحقق KernelIRPStackTests.cpp من المؤشرات المعدودة وبادئات Copy المضمنة كاملة وتصفير المواضع المستهلكة ونقل الحالة/pending وMPR والإكمال المتداخل ومالكي الاستمراريات والمسارات المحتفظ بها. تختبر READ/WRITE الحقيقية ودورة حياة الملف أيضًا Copy المضمنة.
يتحقق DriverPnpScenarioTests.cpp من تطابق JSON والتحقق الأصلي الصارم، والحقائق الابتدائية الصريحة، وحدود المعرّفات والأعداد، وتركيبات الحقول المحظورة، وحالات الناقل النهائية والتقارير التي تقبل null. تغطي KernelPnpDeviceTests.cpp وKernelPnpRequestTests.cpp وKernelPnpCompletionTests.cpp ملكية المزوّد ونجاح AddDevice وفشله وتسرباته، وIRP الابتدائية، وقبول الملفات، والتراجع عن حالة دورة الحياة، والإكمال المؤجل، واستمراريات MPR والمتداخلة والمنتظرة، وذرية الفشل. يستخدم المثال الأصلي driver_wdm_pnp.c المبني بـWDK الحقيقي المسارين الاختياريين NEVERD_WDM_PNP_FIXTURE وNEVERD_WDM_PNP_CFG_FIXTURE. يختبر DriverWDMPnpTests.cpp صورًا عادية وأخرى ذات CFG نشط بعد إعادة التموضع، بما يشمل AddDevice وعمليات الملفات والإزالة المنظمة وتأخير البدء والإزالة وفشل البدء وquery وفشل AddDevice مع تنظيف أو تسرب. يغطي DriverScenarioPublicTests.cpp أيضًا سيناريو PnP مؤجلًا من سبعة طلبات عبر C API وCLI، بما فيه صور CFG المهيأة. تُتخطى المنتجات المفقودة صراحة. أدلة التنفيذ خاصة بـLinux ولا تثبت إلا نطاق PnP الموثق بلا موارد.
تتحقق اختبارات مخطط V9 من قراءة وكتابة أسماء الوظائف الثانوية الثماني، وتشارك التحقق من الحالة النهائية مع إكمال دورة الحياة؛ وتُرفض QueryStop 0x119 قبل تحميل الصورة. تغطي اختبارات النموذج والمثال الحقيقي الموسعة التراجع بعد query-stop وcancel-stop والتوقف وإعادة البدء والإزالة المفاجئة وفشل عقود النجاح المحدد وعمليات I/O البرمجية أثناء التوقف أو انتظار الإزالة ورفض الضيف بعد الإزالة المفاجئة وهوية الجهاز ونتائج AddDevice المختلطة. ينفذ DriverScenarioPublicTests.cpp تسلسلًا من 16 طلبًا للتوقف وإعادة البدء والإزالة المفاجئة عبر C API وCLI، بصور عادية وأخرى ذات CFG نشط، مع الاحتفاظ ببايتات IOCTL البرمجي الناجح وفشل IOCTL الذي أعاده الضيف بعد الإزالة المفاجئة وcleanup/close/remove النهائية. التنفيذ العام تسلسلي: لا يستطيع IRP المحتفظ به دون مصدر إكمال متاح حاليًا انتظار طلب لاحق في السيناريو لبدء الجهاز أو تنظيفه. قيود تصريف الطلبات قبل Remove حدود للنمط، وليست سياسة عامة لقبول I/O في Windows. تظل الأدلة خاصة بـLinux.
يتحقق DriverPowerScenarioTests.cpp من حقائق حزم الطاقة الصارمة، وتطابق JSON والمسار الأصلي، والسياق المعتم ذي 32 بت، وحدود طوابير الاستجابة FIFO، وتقارير الطلبات الفرعية المستقلة. يفحص KernelPowerRequestTests.cpp وKernelPowerCompletionTests.cpp تخطيط الحزمة الفعلي وأعلام المسار والتمييز بين دورة الحياة والإخطار لكل كائن ومطابقة FIFO وملكية الاستدعاء النهائي وMPR والانتظار وحدود التحرير. يستخدم المثال الأصلي driver_wdm_power.c المبني بـWDK الحقيقي المسارين الاختياريين NEVERD_WDM_POWER_FIXTURE / NEVERD_WDM_POWER_CFG_FIXTURE. يغطي DriverWDMPowerTests.cpp إعادة تموضع الصور العادية وذات CFG النشط، وQuery/Set المباشرين والمتداخلين، والإكمال المستقل المؤجل، وترتيب S0 قبل D0، وبقاء لقطات الاستدعاء ذي المعاملات الخمسة أثناء الانتظار، والطلبات الفرعية التي تبدأ من عناصر العمل، والاستدعاءات null، ورفض query، وبذور PDO وطوابيرها المستقلة، والفشل الصريح عند غياب الحقائق. يضيف DriverScenarioPublicTests.cpp تحققًا مسبقًا من حزم الطاقة المشوهة وتسلسل نوم واستيقاظ من ستة طلبات سيناريو وثلاثة طلبات فرعية عبر C API وCLI. تُتخطى المنتجات الحقيقية المفقودة صراحة؛ وتظل أدلة التنفيذ خاصة بـLinux ولا تثبت إلا نطاق الطاقة الموثق القابل للترحيل وبلا موارد.
يتحقق KernelUsbIdleTests.cpp من الملكية وD2 والاستعارة وأول سبب؛ وتغطي KernelUsbIdleBridgeTests.cpp / KernelUsbIdleReceiptTests.cpp طلبات IRP الحقيقية والإلغاء وسعة المجموعة وترتيب الاستقبال/الإكمال، وDriverUsbIdleScenarioTests.cpp المدخلات والتقارير. يستخدم DriverWdmUsbIdleTests.cpp العينة الحقيقية driver_wdm_usb_idle.c عبر NEVERD_WDM_USB_IDLE_FIXTURE / NEVERD_WDM_USB_IDLE_CFG_FIXTURE لفحص idle وD0/D3 والإيقاظ والإلغاء وإعادة التسجيل/التشغيل والدوال المستقلة/المركبة ومسارات PDO/FDO. ينفذ DriverWdmUsbIdlePublicTests.cpp سيناريو USB عبر C API/CLI والصور العادية/active-CFG والعناوين المفضلة/المنقولة. تُتجاوز الأدلة المفقودة صراحة؛ التنفيذ مثبت على Linux فقط ولا يثبت دعم USB في KMDF.
تتحقق KernelFrameworkUsbIdleTests.cpp وKernelFrameworkUsbIdleStorageTests.cpp وKernelFrameworkUsbIdleBridgeTests.cpp من السياسة والتخزين والجدولة المُنمّطة. لا ترسل العينة الحقيقية driver_kmdf_usb_idle.c طلب idle IRP بنفسها. يغطي DriverKMDFUsbIdleTests.cpp غياب الإذن وI/O المُدار مع D2/D0 المؤجلين وStopIdle قبل/أثناء الاستدعاء وفشل arm وMaximum الصريح والإيقاظ والمجموعة المركبة. ينفذ DriverKMDFUsbIdlePublicTests.cpp سيناريو KMDF USB عبر NEVERD_KMDF_USB_IDLE_FIXTURE / NEVERD_KMDF_USB_IDLE_CFG_FIXTURE وC API/CLI والصور العادية/active-CFG والعناوين المفضلة/المنقولة. تُتجاوز الأدلة المفقودة صراحة؛ التنفيذ مثبت على Linux فقط. تتحقق اختبارات النموذج من أن نفاد التخصيص بعد نجاح استدعاء تسليح التنبيه ينفّذ استدعاء نزع التسليح الحقيقي ويلغي WAIT_WAKE دون استهلاك استجابة D2.
يغطي DriverKMDFUsbPoFxTests.cpp إعداد SystemManaged/WithHint الأولي والإذنين وإلغاء D0 وD2/D0 المؤجلين وتأكيد F0 بعامل حقيقي وStopIdle والإيقاظ قبل READ وفشل arm والإزالة وإعادة البدء. ينفذ DriverKMDFUsbPoFxPublicTests.cpp سيناريو USB PoFx عبر C API/CLI بالنمطين والصور العادية/active-CFG والعنوان المفضل/المنقول. يحفظ DriverKMDFUsbIdleTests.cpp اختبارات التحويل ويختبر READ المباشر بعد D0Entry. يفحص KernelFrameworkRequestTests.cpp الربط وملكية caller-context والطوابير اليدوية/المتوقفة وIRQL. تثبت اختبارات جسر النموذج نفاد التخصيص والبوابتين المستقلتين، لا العينة الحقيقية. تُتجاوز الصور المفقودة صراحة؛ دليل التنفيذ على Linux فقط. يغطي KernelFrameworkUsbPoFxBridge.RemovalPowerUpFailureAcknowledgesRequiredWithoutReleasingIdleWait أيضًا فشل D0Entry الحقيقي أثناء RemovePending: يسمح تأكيد Required الدقيق وquiesce بالتنظيف دون F0/ActiveCondition، ولا يثبت دعم فشل SET_POWER العام أو الإزالة المفاجئة الذاتية.
KernelPowerCompletionTests.cpp, KernelProviderWaitWakeTests.cpp, KernelWdmWakeEventTests.cpp, DriverWdmWaitWakeTests.cpp: يستخدم سيناريو WAIT_WAKE الأصلي عينة WDK الحقيقية driver_wdm_wait_wake.c عبر NEVERD_WDM_WAIT_WAKE_FIXTURE / NEVERD_WDM_WAIT_WAKE_CFG_FIXTURE. يغطي الإرسال أثناء START والمعاملات والإيقاظ دون D0 ضمني وإعادة التسليح والإلغاء وMPR وإلغاء DPC ثم D0 من عامل والالتقاط الدقيق والمزودين المستقلين. أدلة الصور العادية/active-CFG والعناوين المفضلة/المنقولة تخص Linux فقط؛ وتُتخطى الملفات الغائبة صراحة.
يغطي KernelPowerCompletionTests.cpp قبول APC/DPC وفشل السعة الذري وإعادة المحاولة والمزود وحده بإكمال متزامن/مؤجل مع/دون استدعاء والمسار المحتفظ به وMPR. تتحقق العينة الحقيقية DriverWdmWaitWakeTests.cpp من D0 مباشرة من إلغاء DPC وQuery/Set عند APC/DPC وثبات IRQL/CR8 والعودة قبل تنفيذ PASSIVE ورفض WAIT_WAKE المرتفع. يمر السيناريو المرتفع عبر DriverWdmWaitWakePublicTests.cpp وC API/CLI والصور العادية/active-CFG والعناوين المفضلة/المنقولة؛ والأدلة تخص Linux فقط.
يفحص KernelRemoveLocksTests.cpp استقلال هوية القفل والجهاز، وقيم Tag الفارغة والمتكررة، وأحجام retail/DBG الدقيقة، والتفريغ الفوري والمؤجل، والتزامات الحيازة الفاشلة، وذرية الفشل والسعة وإنهاء عمر التخزين. يغطي KernelRemoveLockBridgeTests.cpp وDriverWDMRemoveLockTests.cpp التهيئة قبل الإرفاق، والتخزين المعتم داخل امتداد الجهاز، وحدود IRQL، والتحرير بعد انتهاء عمر الحزمة، وإكمال المزوّد بعد تفريغ القفل، والجاهزية عند التحرير الأخير قبل عودة الاستدعاء، وعناصر العمل المنتظرة وتنظيف فشل AddDevice. يُبنى المثال الأصلي driver_wdm_remove_lock.c باستخدام WDK الحقيقي بإصداري retail/DBG وبصور عادية أو ذات CFG نشط عبر المسارات الاختيارية NEVERD_WDM_REMOVE_LOCK_FIXTURE وNEVERD_WDM_REMOVE_LOCK_CFG_FIXTURE وNEVERD_WDM_REMOVE_LOCK_DBG_FIXTURE وNEVERD_WDM_REMOVE_LOCK_DBG_CFG_FIXTURE. تستخدم اختبارات C API وCLI العامة مخطط PnP الحالي وتحافظ على الفصل بين ملاحظات استلام الناقل وإكماله والتفكيك النهائي. تُتخطى المنتجات المفقودة صراحة؛ وتقتصر أدلة التنفيذ على Linux ولا تثبت Driver Verifier كاملًا أو تفريغ الطلبات المتزامنة عمومًا.
يتحقق DriverResourceScenarioTests.cpp من حقائق JSON/C++ الصريحة وعروض الأعداد وأعداد العناصر وتداخل النطاقات الفيزيائية والسجلات والمحاذاة والمعرفات والبنوك الفارغة وتسلسل التكوين. تغطي KernelMMIOTests.cpp وKernelMMIOFailureTests.cpp وKernelResourceBridgeTests.cpp وUnicornMMIOTests.cpp ملكية البنوك والتعيينات وعناوينها البديلة وأجيال الموارد وعمر القوائم المحزّمة وتوقيت المزوّد والاستمرار عبر إعادة التشغيل وإمكانية الوصول بعد الإزالة المفاجئة أو تغيير الطاقة والمعاملات الدقيقة للمعالج وAPI وذرية الفشل. يستخدم المثال الأصلي driver_wdm_resources.c المبني بـWDK الحقيقي المسارين NEVERD_WDM_RESOURCE_FIXTURE / NEVERD_WDM_RESOURCE_CFG_FIXTURE؛ وينفذ DriverWDMResourceTests.cpp تعليمات الوصول المفردة وREP الحقيقية وإعادة تموضع الصور العادية وذات CFG النشط وتعيينات النطاقات الفرعية ونهاية الصفحة وSTOP/إعادة التشغيل والوصول غير الصالح. ترفض اختبارات C API وCLI الحقائق غير الصالحة قبل تحميل الصورة وتنفذ سيناريو إعادة التشغيل نفسه من 14 طلبًا مع مخرجات IOCTL مستمرة وأعداد map/unmap دقيقة. يتطلب الملف المشترك driver-register-bank-scenario.json بروتوكول السجلات وIOCTL لهذا المثال. تُتخطى المنتجات المفقودة صراحة؛ والأدلة خاصة بـLinux ولا تستخدم ذاكرة المضيف الفيزيائية أو خلفية أجهزة عامة.
يغطي DriverInterruptScenarioTests.cpp الواصفات الخام والمترجمة الصريحة والتخصيصات المختلطة والمقتصرة على المقاطعات وصرامة حقول الأحداث وأعدادها وهوية المصدر ومشاهدات BOOLEAN المستقلة. تغطي KernelInterruptsTests.cpp وKernelInterruptBridgeTests.cpp وSchedulerInterruptTests.cpp مطابقة القيم الحصرية والرموز المعتمة والتقاط الجيل والاتصال وعمر الأحداث وحقول Ex المحددة بدقة واستعادة القفل المشترك وIRQL وملكية الاستدعاءات وأولوية ISR في اللحظة نفسها وفشل السعة قبل التعديل. يتحقق KernelFrameworkRequestTests.cpp من معاينات الإلغاء الخالصة وسعة دفعات الرموز دون نشر استدعاءات أو استهلاك مراجع. يستخدم المثال الأصلي driver_wdm_interrupts.c المبني بـWDK الحقيقي NEVERD_WDM_INTERRUPT_FIXTURE / NEVERD_WDM_INTERRUPT_CFG_FIXTURE؛ ويختبر DriverWDMInterruptTests.cpp إعادة التموضع العادية وذات CFG النشط وABI التقليدي ذي الأحد عشر وسيطًا وإصدارات Ex 1/2/4 والإكمال الحقيقي ISR→DPC وFALSE في AL المنخفض والمزامنة والأقفال اليدوية وPDO المستقلة وأجيال إعادة التشغيل وحقائق العتاد غير الصالحة. ترفض اختبارات C API/CLI التصريحات غير الصالحة قبل تحميل الصورة وتنفذ طلبات driver-interrupt-scenario.json السبعة مع فحص بايتات IOCTL المعلق ومشاهدات التسليم المنفصلة. تُتخطى الصور المفقودة صراحة؛ وتظل الأدلة خاصة بـLinux ولا تثبت دعم المقاطعات المشتركة/المستوية/MSI أو استباق التعليمات.
يتحقق DriverDMAScenarioTests.cpp من القدرات الصريحة والنطاقات المنطقية وحدود البايتات والأعداد والوقت والاتجاهات الصارمة وفصل الإعدادات عن المشاهدات. يفحص KernelPhysicalMemoryTests.cpp وBackendBackingTests.cpp حدود التخصيص على الصفحات المشتركة والتثبيت وثبات صلاحيات CPU واستبعاد MMIO وإعادة الدخول وذرية فشل النطاق الكامل؛ ويفحص KernelRequestMDLTests.cpp PFN للقراءة فقط وعناوين الواصفات المبنية البديلة المرتبطة بالهويات الفيزيائية نفسها. يختبر KernelDMATests.cpp وKernelDMABridgeTests.cpp وSchedulerDMATests.cpp بايتات RAM الفعلية واستدعاءات الجدول المرتبط بالمحوّل وملكية FIFO الفورية والمصطفة والأعمار المنفصلة للاستدعاء والتعيين وأجزاء الصفحات والاتجاهات الخاطئة والتحقق قبل التحرير ونطاقات PDO المستقلة وأخطاء الجيل والطاقة. يستخدم المثال الأصلي الحقيقي driver_wdm_dma.c الخيارين NEVERD_WDM_DMA_FIXTURE / NEVERD_WDM_DMA_CFG_FIXTURE؛ وتنفذ DriverWDMDMATests.cpp واختبارات C API/CLI مؤشرات المحوّل الحقيقية وذاكرة common/SG وأحداث DMA والمقاطعات المعدّة بصورة منفصلة. يتطلب المثال المشترك driver-dma-scenario.json بروتوكول هذا البرنامج. تُتخطى المنتجات الغائبة صراحةً؛ والأدلة مقصورة على Linux ولا تثبت DMA حقيقيًا للمضيف أو PCI أو محرك أجهزة عام. يستخدم pluginsdk/python/tests/test_driver_dma_integration.py ربط JSON الحالي ذا الملكية الصريحة مع NEVERD_TEST_LIBNEVERD / NEVERD_TEST_WDM_DMA_FIXTURE / NEVERD_TEST_WDM_DMA_CFG_FIXTURE للتحقق من البايتات وترتيب الاستدعاءات ومشاهدات الفشل.
يتحقق KernelSEHTests.cpp من خطط فك المكدس الصرفة وترتيب النطاقات واستعادة السجلات العامة غير المتطايرة والمكدسات المحدودة والبيانات الوصفية غير المدعومة صراحةً؛ ويتحقق KernelExceptionTests.cpp من عدد معاملات API الدقيق وحالات البتات الدنيا الـ32 والاستثناءات محددة النوع وحدود IRQL وعدم تغير حالة النموذج/CPU. يستخدم المثال الأصلي driver_wdm_seh.c المبني بـWDK حقيقي و/GS- الخيارين NEVERD_WDM_SEH_FIXTURE / NEVERD_WDM_SEH_CFG_FIXTURE؛ ويشغل DriverWDMSEHTests.cpp الصور العادية وذات CFG النشط والمعاد تموضعها لاختبار الرفع المباشر وعبر الدوال المساعدة والمعالجات المتداخلة وإعادة الرفع من المعالج والمرشحات الفعلية وfinally أثناء فك المكدس وترتيب البحث وسجلات الاستثناء المستقرة ومتابعة أعطال CPU المدعومة واستعادة حالته كاملة. تستخدم المرشحات المتداخلة وfinally المتصادمة مكدسات منطقية مترابطة؛ وتُرفض أعطال CPU الأخرى صراحة. يشغل C API/CLI المثال driver-seh-scenario.json ويتحقق من نتائج API بقيمة null مع رسائل معالج الضيف الفعلية. يستخدم pluginsdk/python/tests/test_driver_seh_integration.py المتغيرات NEVERD_TEST_LIBNEVERD وNEVERD_TEST_WDM_SEH_FIXTURE وNEVERD_TEST_WDM_SEH_CFG_FIXTURE. تُتخطى الصور الخارجية المفقودة صراحةً؛ وتظل الأدلة خاصة بـLinux ولا تثبت دعم مخازن المستخدم أو SEH العام.
تتحقق KernelDMAChannelTests.cpp وKernelDMAChannelBridgeTests.cpp وSchedulerDMATests.cpp المشترك من FIFO للتخصيصات المختلطة، وعروض قيم العودة، وفحوص القبول والتحرير الخالية من الآثار، وإعادة استعمال السجلات، والأجزاء المتجاورة، وتفريغ كامل العملية، ولقطات CurrentIrp، وأعمار الحزم وMDL والأجهزة. تستخدم العينة الأصلية المبنية بـWDK الحقيقي driver_wdm_dma_channel.c المسارين الاختياريين NEVERD_WDM_DMA_CHANNEL_FIXTURE / NEVERD_WDM_DMA_CHANNEL_CFG_FIXTURE؛ ويشغّل DriverWDMDMAChannelTests.cpp الصور العادية وCFG النشط والمعاد تموضعها باستدعاءات MapTransfer/FlushAdapterBuffers فعلية وحصة common/SG/قناة مشتركة، ومعاملات صريحة وإكمال IRQ/DPC وعمليات متتابعة وPDO اثنين وحالات فشل. يشغّل C API/CLI الطلبات السبعة في driver-dma-channel-scenario.json، ومنها معاملة واحدة تعبر الجزأين المعيّنين. يستخدم pluginsdk/python/tests/test_driver_dma_channel_integration.py المتغيرات NEVERD_TEST_LIBNEVERD وNEVERD_TEST_WDM_DMA_CHANNEL_FIXTURE وNEVERD_TEST_WDM_DMA_CHANNEL_CFG_FIXTURE للواجهة العامة JSON نفسها. تُتخطى المنتجات الغائبة صراحةً؛ ولا تثبت أدلة Linux دعم متحكمات DMA النظام أو أنماط HAL العشوائية للتعيين والتفريغ.
يغطي DriverGuardTests.cpp وأربعة متغيرات أصلية من driver_guard.c حالات CFG النشط وغير النشط ونقل عنوان التحميل وABI استدعاءات check/dispatch والأهداف المشوهة. تغطي KernelFrameworkTests.cpp وKernelFrameworkControlTests.cpp وKernelFrameworkQueueTests.cpp وKernelFrameworkRequestTests.cpp الربط وإنشاء الأجهزة مع التراجع الكامل عند الفشل وتوجيه الطوابير والأطوال المنطقية للمخازن المؤقتة وترتيب التنظيف وأعمار IRP والسياقات. يُترجم الملفان الأصليان driver_kmdf_lifecycle.c وdriver_kmdf_control.c اختياريًا باستخدام ترويسات WDK 1.33 الحقيقية ويرتبطان عبر مكتبة FxDriverEntry الفعلية. اضبط مسارات CMake المخزنة NEVERD_KMDF_FIXTURE / NEVERD_KMDF_CFG_FIXTURE لصور دورة الحياة، وNEVERD_KMDF_CONTROL_FIXTURE / NEVERD_KMDF_CONTROL_CFG_FIXTURE لصور أجهزة التحكم العادية وذات CFG النشط. يُعلن التخطي صراحة عند غياب المنتجات الخارجية. يغطي DriverKMDFLifecycleTests.cpp وDriverKMDFControlTests.cpp وحالات C API/CLI في DriverScenarioPublicTests.cpp الاستدعاءات الفعلية والإدخال والإخراج بالمخازن المؤقتة وبالوصول المباشر وإكمال الطلبات المعلقة عبر عناصر العمل وحالات الفشل وإلغاء التحميل وتنفيذ CFG بعد نقل عنوان التحميل. تظل الأدلة محصورة في Linux ولا تثبت دعم KMDF الكامل أو PnP وإدارة الطاقة.
تحتفظ اختبارات واجهة الإلغاء القديمة باستكمال الواجهة خلال الإلغاء والتنظيف المتداخل والتدمير النهائي؛ وتظل Ex تعيد حالة الإلغاء دون استدعاء راجع للطلب الملغى مسبقًا. تغطي KernelFrameworkRequestAccessorTests.cpp وKernelRequestMDLTests.cpp Information المشترك ذي 64 بت وفحص الطول عند الإكمال وهوية الطابور/IRP الأصلية ومقبض ملف WDF بقيمة NULL ونتائج getter للمقابض المحتفظ بها وMDL المخزن مع ByteCount للاتجاه الأول والواصف المباشر والتعيين المؤجل والإبطال ومنع تجاوز WDM. تنفذ أوضاع L وM وD وC لعينة التحكم الحقيقية واجهة الإلغاء القديمة وMDL/المعلومات المخزنة وMDL READ/WRITE المباشر والوصول بعد الإكمال في الصور العادية وذات CFG النشط.
تغطي اختبارات الإلغاء المهل الافتراضية المسموحة للنقل فقط وحقول التقارير، والإكمال السابق والطلبات الملغاة مسبقًا، ووضع العلامة وإزالتها، وسلطة الإكمال بحسب الاصطفاف أو التسليم، وانتظار الاستدعاءات والمراجع الداخلية. تتحقق اختبارات المجدول بصورة مستقلة من ترتيب DPC/الإلغاء/العمل والسعة وفصل الهويات والإيقاف والاستئناف. يبقى إلغاء WDM خطأ صريحًا في النموذج.
ينشئ add_neverd_unittest ملف GoogleTest تنفيذيًا واحدًا، ويمنح كل حالة مكتشفة
وسم CTest يساوي اسم ذلك الهدف التنفيذي.
| منطقة المصدر | الهدف ووسم CTest | التغطية |
|---|---|---|
unittests/TestProcessTests.cpp |
NeverDTestProcessTests |
استدعاء العمليات الفرعية عابر المنصات، وquoting، وإعادة التوجيه، ورموز الخروج |
unittests/libc |
NeverDLibCTests |
أسماء libc المعروفة وتصنيفها |
unittests/safety |
NeverDSafetyTests، NeverDSafetyIntegrationTests |
كتالوج المصارف، وأولوية الهوية، ومرشح الوسائط المسبق، وصيد فيضان النسخ، وتدقيق عمر الكومة، ومصفوفة إلزامية من ست خلايا PE/ELF/Mach-O × x86-64/AArch64 |
unittests/lift |
NeverDLiftTests |
أشكال LowIR لـ decoder/lifter، ومراحل IR، وloader، وrelocation، وfixtures الصيغ، وإعادة التجميع، ومسارات patch الممثلة |
معظم ملفات unittests/semantic |
NeverDSemanticTests |
دلالات تفاضلية للتعليمات وABI والتحكم وتعابير C وlift/recompile |
unittests/evm |
NeverDEVMOpcodeTests وNeverDEVMBytecodeTests وNeverDEVMLoaderTests وNeverDEVMABITests وNeverDEVMAnalyzerTests وNeverDEVMDecoderPropertyTests وNeverDEVMProxyTests وNeverDEVMCallTests وNeverDEVMSemanticTests وNeverDEVMEmitterTests وNeverDEVMIntegrationTests |
metadata للـhardfork وتطبيع الإدخال وغموض ABI/signature وCFG/SSA والاستعادة واستنفاد حدود decoder والمدخلات العدائية وحقائق proxy/call ودلالات interpreter وتنفيذ LLVM/C/Solidity التفاضلي وتوجيه API العامة |
unittests/sbf |
NeverDSBFMetadataTests، NeverDSBFProgramImageTests، NeverDSBFLoaderTests، NeverDSBFAnalyzerTests، NeverDSBFVerifierTests، NeverDSBFISAConformanceTests، NeverDSBFAgaveConformanceTests، NeverDSBFSemanticTests، NeverDSBFEmitterTests، NeverDSBFLLVMEmitterTests، NeverDSBFLLVMDifferentialTests، NeverDSBFSourceDifferentialTests، NeverDSBFMalformedCorpusTests، NeverDSBFUpstreamConformanceTests، NeverDSBFExternalOracleTests، NeverDSBFSolanaModelTests، NeverDSBFIntegrationTests |
بيانات v0-v4 الوصفية وتخطيطات ELF، وسلوك التحقق والتحميل الصارم، و23 من عناصر ELF المثبتة، وoracle الرسمي المنفصل، وتغطية opcode الشاملة، والمدخلات العدائية، وCFG/الاستعادة، وفروق LLVM/C/Rust المنفّذة |
PatchFullSubstRTTests.cpp |
NeverDPatchFullTests |
تكافؤ إعادة الكتابة/التشويش عبر أربع ISA وثلاث صيغ كائنات |
ملفات التحويل المحددة في unittests/semantic |
NeverDSwitchXformTests وNeverDIndCallXformTests وNeverDCFGLoopXformTests وNeverDTwoTableXformTests وNeverDAvxUpperXformTests |
مجسات سريعة الربط منفصلة عن الثنائي الدلالي الكبير |
unittests/corpus (وحدة فرعية) |
NeverDWindowsEHCorpusTests وNeverDRustEHCorpusTests وNeverDGoEHCorpusTests وNeverDCxxItaniumEHCorpusTests وNeverDObjCEHCorpusTests وNeverDAdaDEHCorpusTests |
metadata الاستثناءات ووقت التشغيل المقروءة من 545 ثنائيًا حقيقيًا مثبّتًا، كل واحد منها معلن في manifest يذكر الحدود الدنيا التي يجب أن يتجاوزها استرجاعه |
مصادر التسجيل الموثوقة هي
unittests/CMakeLists.txt و
unittests/lift/CMakeLists.txt و
unittests/semantic/CMakeLists.txt و
unittests/evm/CMakeLists.txt و
unittests/sbf/CMakeLists.txt و
unittests/safety/CMakeLists.txt.
كل مجموعة اختبارات أخرى تبني ما تختبره، أما الـcorpus فلا: إنه وحدة فرعية من
ثنائيات أنتجتها سلاسل أدوات حقيقية، على مضيفات ولأهداف لا يستطيع هذا المستودع
بلوغها، وكل ملف مثبّت بالبصمة وإلى جانبه manifest يذكر الحدود الدنيا التي يجب أن
يتجاوزها استرجاعه. هذا هو المكان الوحيد الذي يصير فيه ادعاء عن ما تقرأه NeverD
من — مثلًا — كائن مشترك armv7 مبني بـ-O2 ومجرّد من الرموز قابلًا للإجابة بدل
أن يكون محل جدل.
لا تُبنى هذه المجموعات إلا حين يُطلب من خطوة الإعداد البحث عنها، فهذا الخيار هو كل ما يبقيها تحت الاختبار:
cmake -S . -B build-corpus -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=ON \
-DNEVERD_ENABLE_BINARY_CORPUS_TESTS=ON
cmake --build build-corpus --target check-neverd-corpus --parallel 4يشغّل check-neverd-corpus كل الخطوط، بينما يشغّل
check-neverd-windows-eh-corpus وcheck-neverd-rust-eh-corpus و
check-neverd-go-eh-corpus وcheck-neverd-cxx-itanium-eh-corpus و
check-neverd-objc-eh-corpus وcheck-neverd-ada-d-eh-corpus خطًا واحدًا لكل منها. تُعدّ مضيفات الـCI الثلاثة جميعها
بهذا الخيار وتشغّل الخطوط الستة: البايتات واحدة في كل مكان، أما ما يقرؤها فليس
كذلك، وتشغيل الـcorpus على مضيف واحد لا يثبت شيئًا عن المضيفين الآخرين. يرفض
scripts/audit_ci_test_inventory.py أي inventory ينقصه أحد الـlabels الستة، لأن
بناءً توقف بصمت عن قراءة الـcorpus هو انحدار لا يستطيع أي اختبار التقاطه —
فالاختبار نفسه هو ما اختفى.
يُشغّل تدقيق opcodes EVM الحي بالأمر التالي:
python3 scripts/audit_evm_opcode_metadata.pyيفرض المسار القياسي محليًا وفي CI تنفيذ
git fetch --depth=1 --force من URL الرسمي
https://github.com/ethereum/go-ethereum.git، ولا يفحص في worktree مؤقت detached
إلا SHA الدقيق الذي جُلب للتو من remote HEAD للـdefault branch. كل تشغيل يستخدم
bare repository خاصًا مؤقتًا باسم غير متوقع، ويحفظ authority ref
الذي أعاده fetch والـSHA الدقيق المحلول منه طوال عمر worktree الـdetached، ثم
يدمرهما معًا. لا يوجد Git repository أو cache دائم مشترك. ليست
local_docs ولا checkout موجود ولا submodule مسارات تدقيق؛ إذ يصبح pin
الـsubmodule قديمًا تحديدًا عند الحاجة إلى كشف live drift.
تحذف كل أوامر Git أولًا جميع GIT_* الموروثة، ومنها GIT_CONFIG_*، ثم تثبت
القيم المدققة فقط. يعطل GIT_CONFIG_NOSYSTEM وGIT_CONFIG_GLOBAL إعدادات
system/global؛ ويعطل GIT_ATTR_NOSYSTEM وcore.attributesFile على مستوى الأمر
attributes النظام والعامة، كما يعطل core.hooksPath hooks. يفشل الفحص عند إعداد غير متوقع في
الـrepository الخاص أو
grafts أو objects/info/alternates أو refs/replace، ويعطل
GIT_NO_REPLACE_OBJECTS replacement lookup.
يعكس probe كل حقول bool المصدرة في params.Rules،
ويستدعي LookupInstructionSet(params.Rules) ويفحص كل 256 slots. يملك
EVMUpstreamOpcodePolicy.def aliases وtyped exclusions التاريخية/EOF غير
المجدولة؛ ويملك EVMUpstreamSemanticsPolicy.def inventory الـRules المغلق وfork
mappings وbase-stack exceptions وعائلات dynamic-immediate.
يشغل CI التدقيق الحي نفسه فقط عند push إلى dev وpull request والتشغيل اليدوي
والجدول اليومي. يستدعي Go probe الواجهة العامة
LookupInstructionSet(params.Rules) لكل fork مربوط. يملك
لا تعرض CLI العامة سوى --manifest-output؛ ويستخدم manifest المغلق schema 3
ولا يسمح باختيار source أوref أوcheckout أوtoolchain.
EVMUpstreamOpcodePolicy.def aliases والاستثناءات التاريخية/EOF غير المجدولة المراجعة،
بينما يملك EVMUpstreamSemanticsPolicy.def المستقل قواعد forks واستثناءات stack
semantics. يفحص manifest المغلق revision الدقيقة وactivation وbyte/name و
base_min_stack وnet_stack_delta، ويرفض fields وforks والأسماء والbytes المجهولة
أو المكررة. يحدد probe allocation من operation.undefined وحده؛ وHasCost مجرد
فحص متقاطع للكلفة لأن العملية المعرّفة صفرية الكلفة تعيد false أيضًا. يجب أن
يطابق كل defined && !HasCost slot تصريح EVM_GETH_ACTIVE_WITHOUT_COST تمامًا
من fork التفعيل المحدد؛ ويفشل undefined slot ذو كلفة أو defined slot غير مراجع
أو اختفاء marker بشكل مغلق. تفشل كذلك declarations المفقودة أوخارج النطاق أوغير
المستهلكة نحويًا؛ فكل .def parser يرفض policy partial. عند فشل CI تُرفع
revision وmanifest وlog كـartifact. للـparser وتشخيص الانحراف تغطية unit مستقلة:
يصنّف EVMUpstreamSemanticsPolicy.def كل boolean field مصدّر في params.Rules
بسجل EVM_GETH_RULE_FIELD واحد: MappedForkSelector أو NoOpcodeAllocation أو
ExcludedSelectorExpectedError. يفعّل probe كل field منفردًا عبر
LookupInstructionSet؛ يجب أن يعيد الصنفان الأولان nil error والثالث error، وأن
تطابق fingerprint الكاملة لـ256 opcode/stack slots قيمة ExpectedFork.
الحقول IsEIP155 وIsEIP2929 وIsEIP4762 وIsPetersburg بلا allocation وتطابق
Frontier؛ أما IsUBT فيجب أن يفشل ويطابق Cancun.
يصرح EVMUpstreamSemanticsPolicy.def بعائلات opcodes الديناميكية EIP-8024 ونوع
العملية وstack delta الصالح، بينما يملك EVMEIP8024Immediates.def فك immediate
المنفصل ويصنف 256 byte من single/pair. عبر go -overlay يحصل التدقيق على private
handlers الحقيقية operation.execute، ويمر على canonical fork jump tables و
mainnet active/scheduled jump tables جدولًا بجدول. يسجل العائلة inactive
ويرفض partial. يختبر كل جدول نشط DUPN وSWAPN وEXCHANGE مع كل immediate (3x256)
و3 missing-operand cases مقابل المصادر التصريحية نفسها.
لـEVM_HARDFORK_LATEST target canonical واحد. يربط
EVMUpstreamForkAliases.def المغلق Prague→Pectra وOsaka وBPO1–BPO5→Fusaka، وتعود
Paris/Shanghai/Cancun/Amsterdam/Bogota إلى نفسها؛ وتفشل الأسماء المجهولة مغلقًا.
تقود قيمة audit_unix_time المسجلة فحص MainnetChainConfig.LatestFork(time)
(يجب أن يساوي NeverD latest) وفحص alias/probe لـLatestFork(max uint64)؛ وتقارن
مجموعتا التعليمات كاملتين. يثبت manifest authority=official-fresh-fetch وURL الرسمي
وHEAD وSHA. يستخدم probe GOTOOLCHAIN=local.
يفرض Go probe وPython controller input/collection/string hard limits؛ فتفشل
المدخلات أوالمجموعات أوالنصوص الضخمة مغلقًا. أما
bounded diagnostic output فيرفق بالعرض الطويل digest كامل المحتوى و
explicit truncated marker. يطبق على كل child خرج وdeadline محدودان؛ وعند
التجاوز تُقتل process group كاملة/process tree وتُصرّف pipes.
تسجل وصلة schema 3 الحالية schema_version=3 و
audit_unix_time=1787534659 وauthority=official-fresh-fetch و
remote=https://github.com/ethereum/go-ethereum.git وref=HEAD وrevision
02b73d4ea7181464175e0a6cbecc0a3a2655a562 وGo 1.24.0 محلية و
stack_limit=1024 وdiagnostics=[]. تغطي 21 fork tables و20 Rules probes
بتصنيف 15 mapped/4 no-op/1 expected-error. يسمي سجلا
mainnet active/scheduled upstream BPO2 المربوط مغلقًا بـNeverD Fusaka.
ومن 23 table targets لا ينشط إلا Amsterdam/Bogota، بنتيجة
1536 candidate executions و6 missing-operand cases. وتتطابق
three handler symbols بين الهدفين النشطين. نجح Python audit 67/67 و
C++ Opcode 10/10. نجح macOS تحت sandbox-exec مع go run نهائي بلا شبكة،
ويفرض Linux bubblewrap.
تمر كل مراحل Go، أي go env وgo mod init وgo mod edit وgo mod tidy و
go mod download وgo run، عبر filesystem sandbox من نوع capability-root.
تسمح القراءة فقط لـprivate probe وfresh geth وresolved GOROOT المتحقق منه وجذور
system runtime المطلوبة بدقة، وتسمح الكتابة فقط في isolated environment roots.
تمنح الشبكة لمراحل dependencies التي تحتاجها وحدها ويبقى run النهائي offline.
تثبت الاختبارات أن sentinels في host HOME/workspace مرفوضة وأن محتواها لا يظهر
في output. ويطابق Linux هذه السياسة بـbubblewrap من دون / broad bind.
python3 -m unittest -v scripts.tests.test_audit_evm_opcode_metadataأهداف اختبار EVM الأحد عشر المسجلة حاليًا في CMake هي:
NeverDEVMOpcodeTests
NeverDEVMBytecodeTests
NeverDEVMLoaderTests
NeverDEVMABITests
NeverDEVMAnalyzerTests
NeverDEVMDecoderPropertyTests
NeverDEVMProxyTests
NeverDEVMCallTests
NeverDEVMSemanticTests
NeverDEVMEmitterTests
NeverDEVMIntegrationTests
يستنفد NeverDEVMDecoderPropertyTests كل مدخلات البايتين في كل fork يغيّر
decoder، ويقارن decode كاملًا وحدود JUMPDEST الدقيقة، ثم يمرر مدخلات عدائية
حتمية محدودة الطول عبر كل forks.
لتغييرات control flow في EVM، شغّل أولًا عقد fixed point وheight domain:
cmake --build build --target NeverDEVMAnalyzerTests --parallel 4
build/bin/NeverDEVMAnalyzerTests \
--gtest_filter='EVMAnalyzer.StackHeightDomain*:EVMAnalyzer.WholeProgram*'تغطي هذه الحالات returns عابرة للـblocks وmerges محدودة متعددة الأهداف وتقارب
loops وترتيب edges الحتمي وwhole-stack lanes الحساسة للمسار وحفظ correlation و
unknown jumps والأهداف غير الصالحة الدقيقة وfail-loud budgets وstack faults.
لا يمثل MayReachable إلا مرشح CFG ولا ينتج حقيقة يقينية. بعدها شغّل أهداف EVM
الأحد عشر كلها مع live upstream audit.
ولتغييرات dataflow في MedIR/HighIR، شغّل أيضًا عقود constant-phi وselector وtyped-operand وmalformed-graph وdeep-chain:
build/bin/NeverDEVMAnalyzerTests \
--gtest_filter='EVMAnalyzer.MediumIR*:EVMAnalyzer.HighIR*:EVMAnalyzer.*Selector*:EVMAnalyzer.*MedIR*:EVMAnalyzer.RecoversStorageAndEventFactsFromTypedOperands:EVMAnalyzer.RecoversComputedCalldataArgumentOffset:EVMAnalyzer.*Return*:EVMAnalyzer.*Receive*'تثبت هذه الحالات phis الدورية المتساوية والمتعارضة، وتعابير selector غير المتجاورة والعابرة للـblocks، وترتيبي operands للمساواة، وفحوص ABI width الدقيقة، وoperands النوعية لـstorage/event/calldata، والتعامل الحتمي مع MedIR malformed، وproducer walk تكرارية من 16,384 قيمة.
يجمع unittests/lift/CMakeLists.txt مصادر C وassembly لأهداف متعددة أثناء
البناء. تنتج triple Clang كائنات ELF لـ x86-64 وi386 وAArch64 وARM32، وكائنات
PE/COFF وصورًا مرتبطة، وكائنات Mach-O i386 PIC/no-PIC. عند توفر LLD، تُربط
كائنات مختارة أيضًا كملفات تنفيذية لاختبارات patch. يعتمد NeverDLiftTests على
هدف lift-test-objects، لذلك يجدّد البناء العادي لذلك الثنائي fixtures المولدة.
تستخدم معظم اختبارات lift NeverDLiftFixture.h لاستدعاء CLI المبنية neverd
وفحص LowIR وMedIR وHighIR وLLVM IR وC المولدة أو ثنائي معاد كتابته. يمكن لمتغير
البيئة NEVERD تجاوز مسار CLI في تجربة يدوية محددة؛ وتستخدم عمليات CTest العادية
الملف التنفيذي الذي يضمنه CMake.
يحتوي unittests/safety/fixtures/binaries على صور PE وELF وMach-O مُودعة
لمعماريتَي x86-64 وAArch64، مع ملف PDB أو dSYM المرافق الذي توفّره كل صيغة،
إضافةً إلى ملف MAP من الرابط لكل صورة. الـMAP هو ما تبقى البُنية المجرّدة من
الرموز تُصدره، لذلك تُحلَّل كل خانة أيضًا مع تسمية الـMAP صراحةً، وهو ما يثبّت
ما يحق للنتيجة أن تدّعيه حين لا تبقى أنواع ولا أسطر مصدرية. يشغّل
NeverDSafetyIntegrationTests الخانات الست كلها على كل مضيف؛ وتفشل التهيئة إذا
غابت أي صورة أو ملف مرافق مطلوب، ولا يملك الطقم أي مسار تخطٍّ يعتمد على سلسلة
أدوات المضيف.
تأتي الثنائيات المتكافئة من ملف مصدري واحد. أعد بناء fixture الدخان الأصلية
للمضيف بـ make، أو أعد توليد المصفوفة المُودعة كاملةً بـ:
make -C unittests/safety/fixtures matrixتحتاج وصفة المصفوفة إلى أهداف Clang المتقاطعة للينكس وويندوز، وأدوات COFF من
LLD، ومعماريتَي Darwin كلتيهما، وdsymutil. تُعاد خرائط مسارات التنقيح ويُعطَّل
تسجيل سطر أوامر CodeView حتى لا تلتقط الملفات المرافقة المُودعة المسار المطلق
لمساحة عمل المطوّر.
تحتاج تغييرات الاستثناءات الجدولية في Windows إلى اختبارات للتمثيل واختبار patch لملف PE مرتبط. يغطي مرشح مجموعة lift المركّز النموذج الموحّد لـ unwind/SEH/C++، ومعالجة المدخلات التالفة، وحواف CFG الاستثنائية، وHighIR، وتوليد LLVM WinEH، واستبدال دليل الاستثناءات، وإعادة بناء Guard CF/EH continuation:
cmake --build build --target NeverDLiftTests --parallel 4
build/bin/NeverDLiftTests \
--gtest_filter='COFFException*:*PatchCOFF_X64.ReconstructsGuardedSEHAndContinuationTable:*PatchCOFF_X64.ReconstructsNativeFH3StateGraph:*PatchCOFF_X64.RejectsInteriorExceptionDirectoryPadding:*PatchCOFF_X64.RebuildsSortedExceptionDirectoryInAppendedSection'تتطلب fixture التجميع x64 المحمية هدف Windows في Clang وlld-link؛ ويستخدم
ربط CMake الخيارين /guard:cf و/guard:ehcont. التخطي بسبب غياب cross-linker
ليس دليلاً على مسار الصورة النهائية. تثبت حالة التكامل الناجحة أن PE المعاد
كتابته يمكن تحميله مجددًا وأن جداول runtime-function وunwind وload-config وGuard
CF وGuard EH continuation مرتبة، ومدعومة ببيانات الملف، وتشير إلى أهداف قابلة
للتنفيذ.
تغطي fixture FH3 المرتبطة إغلاق C++ الأصلي بصورة مستقلة: جداول الحالة الثابتة، وتعليقات HighC، والحفاظ على personality، وأهداف catch المولدة، ومخطط IP-to-state بعد إعادة التحميل.
راجع إعادة بناء استثناءات Windows لمصفوفة دعم التحليل/التوليد الأصلي وعقد patch الذي يفشل بأمان.
كل ما ليس نموذج جداول Windows يقع في هدف واحد مركّز. يغطي
NeverDLanguageEHTests سلسلة إطارات DWARF، ومنطقة البيانات الخاصة باللغة في
Itanium، وARM EHABI، وcompact unwind الخاص بـ Darwin، وبيانات إطارات زمن تشغيل
Go، وآلية panic في Rust، وأزمنة تشغيل Objective-C الثلاثة:
cmake --build build --target NeverDLanguageEHTests --parallel 4
build/bin/NeverDLanguageEHTests --gtest_filter='ObjC*'تُبنى جداول هذه المجموعة بايتًا بايت بدل تصريفها، لأن معظم التوليفات المقصودة لا
تُصدِرها أي سلسلة أدوات واحدة معًا. وObjective-C أوضح مثال: أزمنة التشغيل الثلاثة
تُصدِر جميعها LSDA بصيغة Itanium ولا تختلف إلا فيما تحمله خانة جدول الأنواع، وهذا
الاختلاف كلي لا تدريجي. خانة Apple تُعنون objc_typeinfo الذي صُمِّم حقلاه الأولان
عمدًا ليحاكيا std::type_info؛ وخانة Objective-C++ في GNUstep تُعنون صنفًا مشتقًا
حقيقيًا من std::type_info؛ أما خانة زمن تشغيل GNU فليست مؤشرًا أصلًا بل سلسلة اسم
الصنف نفسها. وتطبيق عرف زمن تشغيل على جدول زمن تشغيل آخر لا يفشل، بل يُبلِّغ عن اسم
صنف قُرئ من وسط شيء آخر تمامًا؛ ولهذا يُحدَّد زمن التشغيل من personality الإطار قبل
قراءة أي خانة.
وتثبِّت المجموعة نفسها تمييزين يسهل دمجهما ويكون دمجهما خطأً. فـ @catch(id) و
@catch(...) معالِجان مختلفان — الأول يستقبل أي كائن Objective-C ويدع الاستثناء
الغريب يمر بجانبه — وكل زمن تشغيل يكتبهما بصورة مختلفة، فالمفكِّك الذي يُبلِّغ عنهما
معًا كـ catch-all يضع معالجًا على استثناءات كانت في الواقع ستمر دون توقف. كما أن
جدول مواقع الاستدعاء في نموذج setjmp/longjmp يفهرس مواقع الاستدعاء لا العناوين،
فالقارئ الذي لا يتعرف على إحدى personalities الخاصة بـ SJLJ لا يُخفق، بل يخترع
نطاقات محمية وlanding pads لم يسمِّها البرنامج قط.
والتعرّف على هذا الشكل ليس كرفض فكّه. فالمدخل الواحد في SJLJ زوج من قيم ULEB128 —
مُحدِّد إرسال وإزاحة action — وهذه الإزاحة تعني هنا ما تعنيه تمامًا في الشكل العنواني،
ولذلك تُقرأ سلسلة الـ action وأنواع الـ catch ومواصفات الاستثناء كلها من جدول لا يسمّي
أي شيفرة على الإطلاق. ولا يبقى مجهولًا سوى النطاق الذي يحرسه كل مدخل، لأن ما ينصّ عليه
هو ما تكتبه الدالة نفسها في خانة call-site الخاصة بها، لا أي شيء في الجدول. كما تثبّت
المجموعة البايت الوحيد الذي لا يجوز الوثوق به هنا: يكتب GCC DW_EH_PE_uleb128 ترميزًا
لـ call-site ويكتب LLVM DW_EH_PE_udata4، ثم يُصدر كلاهما ULEB128 على أي حال، ولا
تقرأه أي personality قط — فلا يجوز لمُفكِّك الترميز أن يقرأه أيضًا.
وتُثبَّت إلى جانب ذلك هوية الـ personality، لأنها هي ما يقرّر كيف يُقرأ كل جدول أعلاه.
فـ GNAT يسمّي إجراءه بالطرق الثلاث التي يسمّي بها GCC إجراء كل واجهة أمامية — _v0
و_sj0 و_seh0 — ويسجّل على Windows رمزًا بينما يحيل إلى آخر، فوجب أن تؤول التهجئات
الأربع جميعها إلى Ada. أما D فهي الصورة المعكوسة: ثلاثة مترجمات، وثلاثة أسماء لإجراء
واحد، ووراءها مجموعة جداول واحدة.
تختبر fixture الدلالية السلوك بدل الشكل النصي:
- اكتب حالة C/assembly صغيرة أو أنشئ LLVM IR.
- اجمعها بـ Clang/LLVM للهدف المطلوب.
- نفّذ شفرة الآلة الأصلية في Unicorn والتقط قيمة العودة المتوقعة أو حالة أخرى تعرفها fixture.
- حمّلها وارفعها عبر NeverD، وأصدر LLVM IR، ثم أعد تجميع النتيجة إلى شفرة آلة.
- نفّذ الشفرة المعاد توليدها بنفس ABI والمدخلات وتخطيط الذاكرة ونموذج CPU.
- قارن النتائج الملحوظة.
التنفيذ الأساسي هو
SemanticRoundTripFixture.h.
تستخدم fixture patch-full Codegen::compileForRewrite، وهو backend إعادة
الكتابة نفسه لعمليات patch، ثم تقارن الشفرة الأساس والمحوّلة عبر شبكة ISA/صيغة
الكاملة 4×3.
يجب أن يكون فشل NeverD الدلالي الحتمي اختبارًا فاشلًا. احصر skips في حدود قدرة خارجية صريحة واقرأ سببها: لا يثبت ملخص أخضر بلا cross-linker أن مسار الصيغة نُفذ.
توفر اختبارات interpreter لـEVM oracle حتميًا بعرض 256 بت. تبني suite الـemitter
وتشغل LLVM، وتحوّل C23 عبر Clang إلى harness host نفسه، وعند توفر solc وanvil
وcast وjq تنشر Solidity مولدًا إلى Anvil محلي. تقارن status وstorage وعدد
تعليمات trace. ويشغل corpus raw-bytecode مستقل ALU قبل Fusaka ونسخ calldata/
memory وMCOPY المتداخل وKeccak وreturn data في EVM الأصلي لـAnvil.
تحفظ اختبارات Low/Med execution lanes لكامل stack الحساسة للـpath وهوية lane في
phi؛ ويكون نفاد أي budget، ومنها MaxAbstractInstructionTransfers، hard error.
لا يرفض strict opcode مجهولة أوfork-inactive إلا على lane ثبت أنها Reachable،
ولا تنتج MayReachable حقائق مؤكدة. يقيد HighIR selector/receive/fallback بالـroot
lane والـterminals الناجحة. لا يمثل selector مشترك دليل standard مستقلًا؛ ولا
تُختار variant وreturn list إلا من KnownFunctionVariantInfo الخاصة بالـstandard
وبعد اتفاق كل terminals الناجحة على return shape الدقيقة.
يجري interpreter typed stack preflight قبل أي أثر خاص بالـopcode. يعرّف
EVMForkSemantics.def البايت 0x44 بأنه DIFFICULTY قبل Paris وPREVRANDAO
بدءًا من Paris. تعيد REVERT وfaults وstep limit ونفاد الموارد حالة transaction
إلى snapshot. يكون فشل allocation من النوع
ExecutionFaultKind::ResourceExhausted؛ وإذا تعذر حتى snapshot الدخول تكون
HasPersistentStateSnapshot بالقيمة false ولا يمكن commit للنتيجة.
تعبث اختبارات الـAPI العامة كلًا على حدة بالـ
Code/Fork/Instructions/JumpDestinations القانونية وبكل table وrange وID
وlane وedge reference في LowIR. يجب أن يعيد execute llvm::Error قبل lookup
التعليمات، وأن يرفض lowerToMedIR كامل LowIR الـmalformed أو المتجاوز للميزانية
قبل بناء index أو تخصيص output متناسب مع input. وتفرض tests في lowerToMedIR
ترتيب validation: options ثم resources ثم structure، وبعدها مقارنة field-by-field
عبر canonical decode replay وقبل lowerCanonicalLowToMedIR. يعيد public HighIR
recovery التحقق من LowIR/MedIR الخارجيين؛ ولا يستخدم
lowerCanonicalLowToMedIR وrecoverCanonicalHighIR على IR القانوني الخاص إلا
analyze، بلا replay عودي أو مكرر ومع إبقاء HighIR option/resource budgets.
ثم تختبر حالات الـinterpreter
الحد الدقيق و+1 لكل حدود EVMInterpreterLimits.def: يحتفظ MaxSteps بـ
StepLimit المخصص، بينما يعيد نفاد MaxMemoryBytes أو MaxTraceEntries أو
MaxLogEntries أو aggregate MaxLogDataBytes أو runtime
MaxPersistentStateEntries القيمة ResourceExhausted مع rollback لتأثيرات
المعاملة. يعد تجاوز aggregate أولي MaxHostReturnDataBytes أو persistent state
خطأ API. كما تعد مجاوزة MaxCalldataBytes أو aggregate
MaxHostEnvironmentEntries عبر BlockHashes وBalances وCodeHashes و
ExternalCode وBlobHashes، أو aggregate MaxExternalCodeBytes، خطأ API.
يرفضها const execute preflight قبل نسخ environment أو snapshot أو result. وتغطي
الاختبارات views return-data من ArrayRef وlookup lower_bound
في الجدول المرتب بلا نسخ buffer أو PC map.
تغطي اختبارات LowIR المنفصلة عند الحد الدقيق ميزانيتي diagnostic الـaggregate
MaxLowDiagnostics وMaxLowDiagnosticBytes: يحاسب linear decode وبناء CFG العدد
الدقيق والبايتات النهائية مسبقًا ويرفضان الصفر.
تغطي اختبارات أمان HighIR مجال Any/Exact/Excluded المرتب لكل lane، ومطابقة/
استبعاد equality، ومطابقة false edge وmismatch true edge في
XOR(selector, constant) الخام، وتنقيح zero word/calldata size/call value،
والإغلاق عند unknown condition. كما تختبر الحدود الدقيقة و-1 في
EVMAnalysisLimits.def
MaxHighDispatchCandidates والـaggregate MaxHighRecoveredArguments و
MaxHighDiagnostics وMaxHighDiagnosticBytes وMaxHighReferenceVisits و
MaxHighMemoryTransferCells وMaxHighMemoryValueVisits من
EVMAnalysisLimits.def. ويجب أن يحاسب كل output diagnostic، بما فيه malformed
diagnostic الثابت، العدد والبايتات النهائية قبل allocation.
وتُختبر ميزانيتا diagnostic في LowIR وHighIR كل على حدة، ويجب أن تحاسب root CFG
region الافتراضية MaxHighRegionBlockReferences قبل reserve أو نسخ block PC.
تغطي regressions نطاق function كلا back-jump عبر EQ وraw XOR إلى dispatcher
مشترك، وتثبت أن function أخرى لا تلوث arguments أوmutability أو
return shape أوregion، مع إبقاء shared bodies وtail calls قابلة للوصول.
تختبر نتائج CALL/CREATE الخارجية كـhost outcomes غير حتمية على حافتي CFG الدقيقتين،
فتبقى استعادة fallback في ERC-1167. ويظل selector condition غير المقروء Unknown ولا
يمكنه اختلاق facts لـfallback أو function.
تستمد اختبارات CFG InvalidJumpDestination من EVMLowFaultKinds.def لحالة
end-of-code JUMPI: true المؤكد إلى هدف غير صالح definite fault بلا successful
tail، وfalse المؤكد ناجح، وunknown يحتفظ فقط بمسار false محتمل النجاح من دون وسم
lane كاملة كـdefinite fault.
تطبق اختبارات ABI حدود grammar من EVMABIParserLimits.def وحدود cardinality/text
للجداول العامة من EVMABITableLimits.def عند الحد الدقيق و+1. كما ترفض
kind/standard/evidence enums غير الصالحة وmetadata غير المتطابقة وsignature/return
list غير القانونية وshared selector الموسوم independent خطأً وvariant المعلق أو
المكرر وevent-topic APInt غير بعرض word، قبل indexed selector أو sorted topic
lookup.
يفرض NeverDEVMOpcodeTests بنية metadata أيضًا: تدور كل opcode مخصصة بين encoding
وtyped value، وتُختبر حدود العائلات وaliases للـhardfork، وتبقى maxima لعقد stack
وhost arguments مشتقة بدل تكرارها في backends.
تتحقق اختبارات بيانات SBF الوصفية من كل ميزة مرتبطة بالإصدار، وحدود تصادم opcodes، وhash Murmur3 لـ syscall، وrelocations، وثوابت ELF machine والسجلات وعناوين VM. تولّد fixtures الخاصة بالـ loader، من دون ثنائيات مضمّنة، تخطيطات sections القديمة لـ v0-v2 وتخطيطات v3/v4 الصارمة الخالية من sections والمعتمدة على program headers.
يفحص NeverDSBFISAConformanceTests كل byte encoding في كل version من v0 إلى
v4 مقابل typed manifest مدقّق بصورة مستقلة. ثم يقارن
NeverDSBFExternalOracleTests قرارات activation وboundary مع official Anza
process مبني بصورة منفصلة. ويعيّن NeverDSBFUpstreamConformanceTests نتيجة
صريحة لكل ملفات ELF الثلاثة والعشرين عند Anza revision المثبتة.
ينفّذ NeverDSBFSemanticTests بايتات التعليمات المتحقق منها مباشرة ولا يستهلك MedIR، لذلك لا يمكن لتغيير IR المطبّع أو إفساده أن يجعل oracle المصدر يتفق مصادفةً مع backend. ويغطي دلالات v2 غير الرتيبة، والذاكرة، وsyscalls، وإطارات الاستدعاء الداخلية، وfaults، وtraces، وحدود الموارد. يجري التحقق من وحدات LLVM؛ ويُجمّع C المولد مع اعتبار warnings أخطاء، وRust مع -D warnings. تمر اختبارات API العامة عبر جميع مراحل IR والتفكيك وCFG والبيانات الوصفية وLLVM وC وRust بدءًا من ملف SBF ELF صارم مولد.
تبني الأهداف المخصصة تبعياتها ثم تشغّل CTest بتوازٍ مشتق من CPU المضيف:
| هدف CMake | الاختيار |
|---|---|
check-neverd |
كل الاختبارات المسجلة |
check-neverd-semantic |
NeverDSemanticTests فقط |
check-neverd-sbf |
جميع أهداف/حالات NeverDSBF*Tests |
check-neverd-patch-full |
NeverDPatchFullTests فقط |
check-neverd-switch-xform |
NeverDSwitchXformTests فقط |
check-neverd-cfgloop-xform |
NeverDCFGLoopXformTests فقط |
check-neverd-twotable-xform |
NeverDTwoTableXformTests فقط |
cmake --build build-release --target check-neverd
cmake --build build-release --target check-neverd-semantic
cmake --build build-release --target check-neverd-sbfلا يملك NeverDIndCallXformTests وNeverDAvxUpperXformTests حاليًا هدف راحة
check-neverd-*. ابنِهما واخترهما بالوسم كما أدناه. كذلك لا يتضمن
check-neverd-semantic ثنائيات التحويل أو patch-full المنفصلة؛ استخدم
check-neverd للتجميع الكامل.
ابنِ الملف التنفيذي المالك أولًا ثم اختر وسمه. يتجنب ذلك إعادة ربط أهداف دلالية كبيرة غير مرتبطة.
# Lifter, loader, and format tests
cmake --build build-release --target NeverDLiftTests --parallel 4
ctest --test-dir build-release --build-config Release \
-L '^NeverDLiftTests$' --output-on-failure --parallel 4
# Main semantic binary
cmake --build build-release --target NeverDSemanticTests --parallel 4
ctest --test-dir build-release --build-config Release \
-L '^NeverDSemanticTests$' --output-on-failure --parallel 4
# A label-only focused transform binary
cmake --build build-release --target NeverDIndCallXformTests --parallel 4
ctest --test-dir build-release --build-config Release \
-L '^NeverDIndCallXformTests$' --output-on-failure --parallel 4
# جميع أهداف/حالات EVM المحددة
cmake --build build-release --target \
NeverDEVMOpcodeTests NeverDEVMBytecodeTests NeverDEVMLoaderTests \
NeverDEVMABITests NeverDEVMAnalyzerTests NeverDEVMDecoderPropertyTests \
NeverDEVMProxyTests NeverDEVMCallTests NeverDEVMSemanticTests \
NeverDEVMEmitterTests \
NeverDEVMIntegrationTests --parallel 4
ctest --test-dir build-release --build-config Release \
-R 'EVM' --output-on-failure --parallel 4
# جميع أهداف/حالات Solana SBF المحددة
cmake --build build-release --target check-neverd-sbf --parallel 4استخدم اسم CTest مشتقًا من GoogleTest لانحدار واحد:
ctest --test-dir build-release --build-config Release -N \
-L '^NeverDLiftTests$'
ctest --test-dir build-release --build-config Release \
-R '^COFFARMPipeline\.ARM32ThumbLiftAndDecompile$' \
--output-on-failureمحددات مفيدة:
| الأمر | الغرض |
|---|---|
ctest --test-dir build-release -N |
سرد الحالات المكتشفة دون تشغيلها |
ctest --test-dir build-release -L '<regex>' |
اختيار وسم ثنائي اختبار |
ctest --test-dir build-release -R '<regex>' |
اختيار أسماء الحالات |
ctest --test-dir build-release --output-on-failure |
عرض التشخيص عند الفشل فقط |
ctest --test-dir build-release --stop-on-failure |
التوقف بعد أول فشل |
ctest --test-dir build-release --parallel 4 |
تشغيل أربع حالات بالتوازي كحد أقصى |
يستخدم اكتشاف GoogleTest DISCOVERY_MODE PRE_TEST، لذلك يجب أن يوجد ثنائي
الاختبار المطابق قبل تعداد CTest. تُعرّف مهلات الحالة والاكتشاف المنفصل في
cmake/AddNeverD.cmake، ولا تُوسّع إلا لمجموعات ذات حالات ثقيلة مقاسة.
| منطقة التغيير | ابدأ بـ | ثم فكّر في |
|---|---|---|
| lifter العمارة أو decode | الحالة المسماة في NeverDLiftTests |
دورة دلالية لـ ISA المطابقة |
| LowIR CFG واكتشاف الدوال وجداول القفز | حالات lift CFG/switch | NeverDSwitchXformTests أو NeverDCFGLoopXformTests أو NeverDTwoTableXformTests |
| MedIR وABI والأعلام والأنواع وSSA | حالات lift MedIR/أعراف الاستدعاء | حالات NeverDSemanticTests العابرة لـ ISA |
| HighIR أو C المنظمة | حالات HighIR/decompile | NeverDCFGLoopXformTests وفحوص تجميع C المولدة |
| loader PE/ELF/Mach-O أو relocation الإدخال | fixture الصيغة المطابقة في unittests/lift |
اختبار تحميل/إعادة تجميع كل المراحل للخلية |
| Rewrite codegen أو relocation الإخراج | حالات RewriteCodegenRTTests |
NeverDPatchFullTests وfixture patch مرتبطة عند توفرها |
| تحويل LLVM IR يستخدمه patch | ثنائي التحويل المحدد | شبكة pass المركبة لـ NeverDPatchFullTests |
| C API أو CLI | اختبار SDK/query مباشر وunittests/semantic/CLIEndToEndTests.cpp |
مجموعة pipeline/صيغة ذات الصلة |
| EVM loader أو opcode أو IR أو backend | أصغر هدف مالك من NeverDEVM*Tests |
جميع أهداف EVM مع فحوص تجميع C/Solidity المولدين |
| SBF loader أو ISA أو IR أو backend | أصغر هدف مالك من NeverDSBF*Tests |
جميع أهداف SBF مع فحوص تجميع C/Rust المولدين |
| تعرف libc | NeverDLibCTests |
حالات call/ABI دلالية إذا تغير السلوك |
| تدقيق عمر الكومة أو صيد فيضان النسخ | NeverDSafetyTests |
الخلايا الست كلها في NeverDSafetyIntegrationTests |
| تنفيذ العمليات أو quoting | NeverDTestProcessTests |
حالة CLI/دلالية متأثرة على كل مضيف مدعوم |
يجب أن تعبر الاختبارات عن العقد عند أدنى حد مستقر. يفيد اختبار شكل LowIR في نسب السلوك إلى lifter؛ وتلزم دورة دلالية إذا كان لشكلين IR معقولين سلوك مختلف. تجنب golden dump لدوال كاملة عندما يكفي assertion صغير على opcode أو CFG أو حالة ملحوظة.
تبني CI Release مع الاختبارات على Linux وmacOS وWindows، ثم تدقق المخزون
المكتشف قبل تطبيق استثناءات الوسوم الخاصة بالمنصة. تُعرّف الملفات في
.github/workflows/ci.yml وscripts/audit_ci_test_inventory.py. يجب أن يضم كل
مضيف في المصفوفة NeverDSafetyTests وNeverDSafetyIntegrationTests؛ وتقرأ كل
عملية تشغيل fixtures نفسها المثبتة لـ PE وELF وMach-O على x86-64 وAArch64.
ولأن لا shard واحدًا من المصفوفة يمثل كل المجموعات المكلفة، يبقى
check-neverd المحلي أوضح إشارة كاملة قبل الدمج عندما تملك الآلة كل الأدوات
العابرة اللازمة.
تحل هذه القائمة الحالية محل قائمة SBF المختصرة أعلاه. تحتاج اختبارات source
differential إلى rustc بالإضافة إلى clang؛ تخطي compiler يعني coverage ناقصة.
يشمل التجميع الكامل NeverDSBFProgramImageTests و
NeverDSBFMalformedCorpusTests وNeverDSBFISAConformanceTests و
NeverDSBFUpstreamConformanceTests وNeverDSBFLLVMDifferentialTests و
NeverDSBFSourceDifferentialTests مع targets metadata/loader/analyzer/semantic/
emitter/integration. يسجل profile المتكامل الأهداف المسماة ونتائجها ولا يثبت
عدداً تجميعياً سريع التغيّر.
يجب بناء profile sanitizer في build-sbf-asan-ubsan منفصلًا. تحتوي package
الجاهزة المثبتة ذات الإصدار المحدد الآن fork-only header المطلوب، لذلك يعمل
integration في profile نفسه بإعدادات ASan وUBSan بنمط fail-fast.
cmake --build build-sbf-asan-ubsan --parallel 4 --target \
NeverDSBFMetadataTests NeverDSBFProgramImageTests NeverDSBFLoaderTests \
NeverDSBFAnalyzerTests NeverDSBFISAConformanceTests \
NeverDSBFVerifierTests NeverDSBFAgaveConformanceTests \
NeverDSBFSemanticTests NeverDSBFEmitterTests NeverDSBFLLVMEmitterTests \
NeverDSBFLLVMDifferentialTests NeverDSBFSourceDifferentialTests \
NeverDSBFMalformedCorpusTests NeverDSBFUpstreamConformanceTests \
NeverDSBFSolanaModelTests NeverDSBFIntegrationTests
ASAN_OPTIONS=abort_on_error=1:detect_leaks=0:strict_string_checks=1 \
UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1 \
NEVERD_SBPF_ROOT=/path/to/sbpf \
NEVERD_AGAVE_CONFORMANCE_ROOT=/path/to/firedancer-test-vectors \
NEVERD_AGAVE_CONFORMANCE_REVISION=68bb4af40235562e8852fa23d5727e49c2a0b862 \
ctest --test-dir build-sbf-asan-ubsan --output-on-failure --parallel 4 \
-L '^NeverDSBF'تثبت البوابة Anza sbpf عند
2510663bb8d894e8e3094be351e4bb4b604f1f84 وAgave عند
ef210d67f2fabeee1730498188fa78854260c679 وSolana SDK عند
122f32e571ce39face4beffaccea733e37c207fd. يمر ELF manifest الرسمي 23/23؛
ويقارن NeverDSBFExternalOracleTests عدد 1,411 من حالات opcode/boundary عبر
SBFOfficialOracleProtocol.def وSBFOfficialVerifierCases.def وSBFOfficialExecutionConstants.def.
SBFOfficialELFMutations.def هو عقد malformed ELF الجدولي، ولا يثبت المستند
عدداً إجمالياً متغيراً.
وبشكل مستقل يشغّل 41-case strict ELF differential كامل مصفوفة strict-v3 عبر
verify-elf-batch الرسمي وNeverD؛ ولا تدخل الحالات الـ41 في مجموع 1,411.
ويصادق NeverDSBFAgaveConformanceTests على corpus Firedancer test-vectors عند
68bb4af40235562e8852fa23d5727e49c2a0b862 ويطابق كل fixtures الـloader البالغ
عددها 1,955 sol_compat_elf_loader_v1 (قبول 1,399 ورفض 556)، ويطابق لكل ELF مقبول
entry_pc وtext_off وtext_cnt وrodata_hash وcalldests_hash. ولا تشغّل هذه gate
الـinstruction verifier اللاحق.
مصفوفة التنفيذ الرسمية الإضافية مستقلة: تضم بالضبط 508 حالات فعالة من
(Version,Opcode) و58 حالة boundary، أي 566 حالة تنفيذ دقيقة. وهي لا تستبدل
ولا تدخل ضمن 1,411 من اختبارات verifier أو 41-case strict ELF differential.
تستخدم Linux Release CI الخيارات --print-pinned-revision و
--print-test-vectors-revision و--print-toolchain، وتصدر
NEVERD_SBPF_ORACLE وNEVERD_AGAVE_CONFORMANCE_ROOT، فتكون البوابتان
الخارجيتان إلزاميتين؛ محلياً، غياب env الصريح للـoracle/corpus يسمح باكتشاف
الحالات ثم skip.
تجعل rows باسم SBF_RUNTIME_VERSION نطاق
RuntimeVersionPolicy::ChainProfile تاريخياً حسب cluster/slot: ينتقل maximum
ISA من V0 إلى V1 ثم V2 ثم V3 مع تفعيل feature accounts الرسمية، والحالي V3.
أما v4 الصريح فيستخدم RuntimeVersionPolicy::UpstreamToolchain للتحليل offline. حد 10 MiB
الحالي هو بالضبط 10'485'760 byte، و65,536 provenance/test تاريخي غير منفذ.
يثبت SBFFaultCodes.def قيم execution fault؛ أما SBFSourceStatuses.def فيثبت
generated-source ABI المستقل.
تحرس fixtures بحجم 10,000 خصائص worklist/function ownership/multi-latch من دون
تثبيت زمن جهاز. وتتيح rows الخاصة بالـcluster/account/slot تنفيذ
RPC activation audit مع بقاء الاختبارات العادية deterministic وoffline.
ابنِ NeverDMobileTests بوضع Release وشغّل الاختبارات ذات تسميته قبل قياس
neverd mobile INPUT --list-classes. تغطي اختبارات القارئ البيانات الوصفية
المتناثرة وUnicode والمراجع غير الصالحة وأجسام الأساليب غير المدعومة والمجاميع
الاختبارية والميزانيات؛ وتفصل اختبارات الأرشيف بين الاستخراج الكامل واستعلامات
المحتويات المحددة. تختبر CLI التصفية بالبادئة ونطاق JSON والحفاظ على الإخراج
وذرّية الإخفاق في multidex.
تتحقق أداة إنشاء fixtures والقياس المستقلة من جرد الواصفات الكامل لكل عملية قبل قبول عينة زمنية:
python3 -m unittest scripts.tests.test_benchmark_mobile_inventory -v
python3 scripts/benchmark_mobile_inventory.py \
--output-dir /tmp/neverd-inventory-benchmark \
--class-count 6000 --dex-count 3 --code-units 64 \
--extra-string-bytes 8388608 --resource-bytes 16777216 \
--repetitions 7 --neverd build-release/bin/neverdاستخدم مجلد إخراج جديدًا لكل تشغيل. يكتب --generate-only بيانات الاختبار
وملف البيان دون قياس الوقت. يختار --workload أنواع المدخلات المشتركة لأمر
--peer-command 'tool {input} {prefix}' الاختياري؛ ويجري تجهيز المدخلات خارج
الأمر المقاس. تحتفظ التقارير بالبصمات والأوامر وجميع العينات من عمليات جديدة
وافتراضات الذاكرة المخبئية الدافئة، وعلى Linux مع GNU time، بأقصى RSS للعملية
الابنة. هذه القيمة ليست الذروة المجمعة لأداة متعددة العمليات. ملفات APK
الاصطناعية حاويات للاستعلام، وليست تطبيقات قابلة للتثبيت. لا تثبت سرعة الجرد
سرعة البحث عن المراجع أو جودة استعادة Java.
على المعالجات الهجينة، ثبّت أداة القياس والعمليات الابنة التي ترث إعداداتها على
المعالج المسموح نفسه (مثل taskset -c 4 python3 ... على Linux)، لتجنب المزج
بين أنوية الأداء وأنوية الكفاءة. يسجل التقرير تقارب CPU الموروث.
تشارك استعلامات المراجع قارئ الاستعادة في حدود التعليمات والتحقق من الشفرة. شغّل مجموعة اختبارات الأجهزة المحمولة بعد تغيير هذا الحد. تغطي اختبارات القارئ أنواع مجمعات المعاملات وأوضاع المطابقة وانتماء الأساليب والشفرة المشتركة وبيانات payload والقيم الفورية المشابهة للمراجع والمدخلات غير السليمة وحدود الموارد. تُفحص تدفقات التنقيح المشتركة مقابل إطار كل جسم مالك ومداه ومعاملاته. أبقِ جرد الأعضاء الكبير والأجسام الكثيفة بالتفرعات ضمن تغطية حدود التخزين؛ فالفهارس الدائمة ونمو الحاويات المؤقتة لهما أعمار مختلفة. افحص أيضًا العناصر المعاد ترتيبها والمتداخلة، والشفرة المشتركة ذات النماذج الأولية غير المتوافقة رغم تساوي العرض، وتخزين المدخلات غير المحاذي، وتطابق السلاسل الجزئية عبر حدود كتل البحث. يجب أن تحافظ تحسينات أداء البيانات الداخلية لمفكك الترميز على نماذج الاستعادة الكاملة المالكة لبياناتها وعلى المجموعات المتعددة لمواضع ظهور المراجع، بما يشمل سلوك الإخفاق عند وجود بيانات وصفية للاستعادة غير مدعومة. ميّز التوقعات المولّدة استقلالًا عن توافق الأدوات على مدخلات حقيقية.
تسجل أداة المراجع المستقلة مواضع الظهور المتوقعة أثناء إصدار التعليمات. وتفحص
هويات الأساليب كاملةً وقيم PC بوحدات الشفرة وأكواد العمليات وهويات الأهداف
ووحدات UTF-16 وعدد التكرارات في كل تشغيل مقاس. كما تفحص أعداد التغطية المتوقعة
لـ NeverD والمحددة استقلالًا، وcode_scan_complete:
NEVERD_REFERENCE_TEST_BINARY="$PWD/build-release/bin/neverd" \
python3 -m unittest scripts.tests.test_benchmark_mobile_references -v
python3 scripts/benchmark_mobile_references.py \
--output-dir /tmp/neverd-reference-benchmark \
--class-count 500 --methods-per-class 64 --matching-methods 2 \
--dex-count 3 --resource-bytes 16777216 \
--repetitions 7 --neverd build-release/bin/neverdاستخدم --kind و--workload لاختيار الحالات. يختبر --extra-strings 65536
فهارس سلاسل فعلية من 32 بت. تُفعّل القيم المضللة في payload افتراضيًا؛ ويحافظ
--no-payload-lookalikes على التخطيط نفسه والمراجع الحقيقية مع استبدال قيم
payload المضللة لإجراء مقارنات على مدخلات مشتركة. احتفظ بنتائج الصحة والتوقيت
معًا. يفشل في التحقق أي استعلام يعيد مراجع زائفة إلى payload أو يفوّت مراجع
حقيقية، ولا يُقبل له قياس زمني.
يقبل --peer-command الاختياري قالب argv يحتوي على {input} و{kind}
و{query}. كيّف صياغة الاستعلام صراحةً عندما تستخدم أداة أخرى دلالات مختلفة،
وقارن المجموعات المتعددة الكاملة لمواضع الظهور. يُحفظ نطاق التحقق المعلن لتلك
الأداة دون ادعاء مسح كامل للشفرة. تنطبق قيود المجلد الجديد وتقارب CPU والعمليات
الجديدة والذاكرة المخبئية الدافئة وRSS نفسها الخاصة بقياس الجرد. يُتخطى اختبار
وحدة CLI الاختياري ما لم يحدد NEVERD_REFERENCE_TEST_BINARY الملف التنفيذي
المبني؛ أبلغ عن هذا التخطي.
يشغّل سير العمل اليدوي Mobile SDK Export Evidence الأمر collect_mobile_ios_sdk_declarations.py --exports-only على إصدارات Xcode SDK المثبتة. ويحتفظ بخرائط الرابط الأصلية لكل من Foundation وCoreFoundation وUIKit من حزم iOS للأجهزة والمحاكي، مع الهدف وإصدار SDK وبصمة إعداداته وحجم الملف وSHA-256. ويحتفظ جامع التصريحات المعتاد بهذه الخرائط أيضًا. يفشل الجمع عند غياب الملفات أو فراغها أو تجاوز حجمها الحد أو وجودها خارج SDK، مع الاحتفاظ بالأدلة المكتملة. تثبت خرائط الرابط تصدير الرموز، لكنها لا تثبت ABI الاستدعاء أو نجاح استعادة الطريقة.
يُصرّف سير العمل اليدوي Mobile Swift String ABI Evidence مسبارات Swift ثابتة للمساواة والترتيب ومسبار C يستخدم swiftcall بواسطة Xcode 26.5 لأجهزة iOS ومحاكياتها بمعمارية arm64. يحتفظ collect_mobile_swift_string_abi.py بالمصدر وLLVM IR والتجميع وهوية المصرّف وإعدادات SDK وlibswiftCore.tbd مع بصماتها. يجب أن تُظهر اللغتان استيراد المقارنة الدقيق بخمسة معاملات ونتيجة i1؛ ويجب أن يوسّع C هذه النتيجة صراحةً إلى بايت. تؤدي الأهداف الخاطئة والتواقيع المتغيرة وفشل الأوامر والمهل المنتهية إلى فشل الجمع مع حفظ الأدلة الجزئية. لا تثبّت هذه الأدلة تصريحًا لوقت التشغيل ولا تثبت استعادة طريقة. اختبر المجمّع دون SDK باستخدام python3 -m unittest scripts.tests.test_mobile_swift_string_abi.
تغطي اختبارات SymSimplifyFinite.* المجالات الكاملة ذات القيمتين بعروض من 8 إلى 512 بت، وحساب كلفة الاستخدامات المشتركة، وكل التعليقات المدعومة التي قد تُنتج poison، وقراءات volatile وقيم freeze المستقلة، وundef/poison الصريحة، والاجتياز التكراري العميق، والميزانيات وعلامة التشويش. يُنفّذ IR الأصلي والمبسّط عند O0/O2 مقابل مرجع مستقل لجميع مدخلات البايت ولمدخلات عشوائية بكامل العرض. تشترط اختبارات كائنات الترجمة هويات تخزين مؤقت مختلفة عند اختلاف ميزانيات القيم المحدودة.
تغطي اختبارات مجال الدمج اختيارات متداخلة وعقد PHI ماسية ودورات نسخ بعرض 8–512 بت، وحواف رجوع متعارضة وشروطًا غير معرّفة ومكوّنات بلا مصدر وملاحظات PHI/freeze مستقلة والاحتفاظ بالمنتجين ذوي العلامات، وحدود العقد والحواف والعمل الدقيقة. تفحص مراجع التنفيذ عند O0/O2 كل أزواج البايت وتغيّر المعاملات بكامل عرضها للاختيار والدمج وحلقات الحالة المحدودة.
تغطي اختبارات القيمتين أيضًا أقنعة اقتران متداخلة بعرض 8–512 بت، وتبديل المعاملات، ورفض OR/undef، والبحث العميق المحدود، وحساب العمل المستقل وعلامة التعتيم، وحد الميزانية الدقيق لأول إعادة كتابة. تفحص مراجع التنفيذ جميع أزواج مدخلات البايت وتغيّر بيانات 64 بت غير المرتبطة، مع مقارنة IR الأصلي والمبسّط عند O0/O2.
تستنفد SymSimplifyPredicates.* إزاحات وإشارات ومدخلات أربعة بتات، وتختبر تركيب الفترات المنطقي والمجموعات المنفصلة، وتشغّل مراجع مستقلة لبايت واحد وللعرض الكامل عند O0/O2. تشمل تعليقات poison والمدخلات غير المعرّفة المخفية عند الدمج والقراءات/freeze المستقلة وPHI الحلقات المحفوظة وجدوى الاستخدامات المشتركة والعمل التراكمي وكثرة الاستخدامات وحدود التكرار وعلامة التمويه. يميّز مفتاحا ذاكرة التخزين المؤقت ميزانيات تحليل الشروط.
تختبر SymExpr.* النوافذ الثابتة فوق البت الأدنى باستنفاد جميع المدخلات والأقنعة ذات الأربعة بتات، مع القيم العريضة والبنى المتداخلة وإعادة تجميع البايتات المعروفة والمجهولة وأمثلة مضادة للحمل الحسابي. تضع اختبارات الميزانية عقدة واسعة عند حد الاستدعاء المتداخل وترفض نسخ ثابت أكبر من الميزانية. يجب أن تبقى النوافذ المجهولة رمزية دون توسيع DAG التعبير. تميّز اختبارات SymState.* أيضًا بين الثوابت العددية المستنتجة والثوابت الحرفية للمناطق في كلا ترتيبي البايتات، دون توسيع DAG أو تغيير الكلمات المخزنة كاملةً.
تغطي SymReadability.* كتابة الطرح والمتمّم، وكلفة العوامل التجميعية، والثوابت ذات البت الواحد والعريضة، وتشبع الأشجار المشتركة، واختيار المرشّحات ضمن ميزانية، والتكافؤ الشامل لثلاثة بتات مع تعطيل أخذ العينات. تقارن SymMBASample.* التحقق الضيق وذا الدقة غير المحدودة بمقيّم AP، بما يشمل كل العوامل والإسنادات الحتمية والمدخلات العريضة غير المستخدمة. عند مقارنة جودة المرشّحات بين إصدارات التقييم، يجب إعادة حساب المخرجين بالمقياس نفسه؛ عدادات الحجم الخاصة بإصدار SDK للتشخيص فقط.
cmake --build build-release --target NeverDSymbolicTests \
NeverDSymSimplifyGuardTests NeverDLiftTests NeverDMBASourceTests \
NeverDHighCStoreForwardingTests NeverDMetadataJSONTests --parallel 4
build-release/bin/NeverDSymbolicTests
build-release/bin/NeverDSymSimplifyGuardTests
build-release/bin/NeverDLiftTests \
--gtest_filter='HighSymSimplify.*:HighFrameStoreForwarding.*:ELFARM32ModeTest.*'
build-release/bin/NeverDHighCStoreForwardingTests
build-release/bin/NeverDMBASourceTests
build-release/bin/NeverDMetadataJSONTests --gtest_filter='ELFARM32ModeCAPITest.*'تشمل المصفوفة أيضًا x86-32 بصيغ ELF/COFF/Mach-O، وARM32 بنمطي ARM وThumb في ELF، وAArch64 بصيغ ELF/COFF/Mach-O، مع خلفيتي C. يجب اختزال إعادة تحميل الإطار الخاص المتكررة إلى جمع أو طرح وأن تنفذ بصورة صحيحة لأزواج البايتات وحدود الكلمات والكلمات العشوائية المحددة عند مستويَي التحسين. تفحص اختبارات Clang AST الدوال الكاملة بحثًا عن عمليات MBA المتبقية مع التمييز بين العناوين الصحيحة. يغطي HighFrameStoreForwarding عرض الوصول وتغير المتغيرات المحلية وكتابات الذاكرة والتداخل والذاكرة المرتبة والرسوم غير الصحيحة وحدود التوسع. تحفظ اختبارات HighCStoreForwarding تعريفات قيم التخزين الحية عبر المعماريات الأربع، وتغطي SymSimplifyGuard هوية التحميل وترتيبه وحالات volatile/atomic وحدود poison. تتحقق اختبارات ELFARM32ModeTest من اختيار ARM/Thumb وتطبيع العناوين وحفظ بيانات الصور المختلطة ورفض الأدلة المتناقضة؛ وتتحقق ELFARM32ModeCAPITest من رفض SDK الصريح ثم استعادة المفكك بعد إعادة تحميل Thumb. تغطي InstructionMode حدود المفكك والمؤشرات والفروع وتوليد الكود. غياب Clang للهدف الآخر يعني تخطي الاختبار، وليس إثبات نجاح الصيغة.
تتحقق اختبارات HighBoundPrivateFrameCopies.* ضمن NeverDHighControlFlowTests من النسخ عبر خانات إطار مكدس خاصة لا تتسرب عناوينها، بعد ربط ABI للاستدعاءات، بما يشمل الفروع وإعادة استخدام الخانات واتفاق الحقائق بين سياقات الشروط. يُنفّذ كود C الناتج لـ x64 وAArch64 عند -O0 و-O2 مع مصائد للسلوك غير المعرّف ومقارنات حسابية مستقلة. تفرض الحالات السلبية إبقاء الدالة الأصلية عند تسرب عنوان الإطار، أو غموض ABI، أو غياب الأسماء البديلة للإطار أو تعارضها، أو إعادة إسناد معاملات الدخول، أو تداخل الوصول، أو الذاكرة المرتبة أو الذرية، أو العبارات غير الصحيحة، أو الدورات، أو نفاد الميزانية. يجب ألا تتحول تحويلات القيم العادية إلى نسخ PHI.
يتحقق HighIntegerSignedness.* في NeverDHighControlFlowTests من المرور المتأخر الذي يعلن كل متغير محلي سجلي أو مؤقت بإشارة أو بدونها بحسب ما تقرؤه معظم استخداماته. تفضّل الحسابات الدائرية والإزاحات المنطقية والمقارنات غير المؤشَّرة النوعَ غير المؤشَّر، وتفضّل المقارنات والقسمة والإزاحات الحسابية المؤشَّرة وتمديد الإشارة النوعَ المؤشَّر، ويحتفظ المتغير الذي له أي استخدام غير صحيح بأنواعه. يُشغَّل كود C الناتج عند -O0 و-O2 مع مصائد السلوك غير المعرّف مقابل حسابات مرجعية مستقلة، بما في ذلك مقارنة مؤشَّرة لمتغير محلي صار غير مؤشَّر.
يتحقق HighValueForward.* في NeverDHighControlFlowTests من متى يمكن لكاتب HighC طيّ قيمة تُستخدم مرة واحدة في موضع استخدامها. يحتفظ شرط الحلقة بقيمة تُسند الحلقة إلى متغيراتها، لأن الاسم الواحد قد يدل على عدة قيم SSA؛ وتحتفظ خانة المكدس المعاد قراءتها بقيمتها عبر الكتابة في الخانة نفسها وتُطوى متجاوزة الكتابة في خانة أخرى. وتحتفظ النسخة بقيمتها عندما يُعاد إسناد مصدرها قبل الاستخدام. تُشغَّل كل حالة عند -O0 و-O2 مع مصائد السلوك غير المعرّف.
يتحقق HighCIntegerConversion.* في NeverDHighControlFlowTests من التحويلات الصحيحة التي يتركها كاتب HighC للغة C. لا يطبع التحويل داخل معامل يحتفظ بالبايتات التي يحتفظ بها تحويل خارجي تحويلًا صريحًا خاصًا به؛ ويحوّل الإسناد إلى متغير محلي صحيح مُصرَّح به وعبارة return ضمنيًا، وتُكتب القيمة الحرفية بالقيمة التي تتحول إليها، بينما يحتفظ المؤشر بتحويله الصريح. وتُحوِّل عمليات التخزين في الذاكرة كما تفعل عمليات الإسناد، ويحتفظ الوسيط الموسَّع بالأصفار المُمرَّر إلى معامل مُنمَّط أعرض بتوسيعه. تُشغَّل كل حالة عند -O0 و-O2 مع مصائد السلوك غير المعرّف مقارنةً بحساب مرجعي.
يعيد إسقاط المصدر التحقق من قوائم الكائنات ذات الوسائط المتغيرة بعد هذا التنظيف: تُقبل نقاط ربط التعليمات الفارغة، وتُرفض التأثيرات المخفية وانتقالات التحكم. يقبل تنظيف المزامنة تمثيلًا واحدًا من نوع int64_t أو uint64_t للمستقبل المحفوظ نفسه؛ وتظل عمليات التضييق والتحويلات العائمة وحساب العناوين وإعادة الإسناد مرفوضة. تُنفّذ مجموعات كائنات Foundation ومسارات فك القفل العادية والاستثنائية عند -O0 و-O2.
تستخدم تعليمات DIV/IDIV في checked x64 نتائج المعالج الحقيقية و#DE. يعتمد KVM على IDT/IST خاصة بالمشرف، ويستخدم WHP خريطة اعتراض صريحة؛ يُحتفظ بالسياق الأصلي وأكواد الخطأ المتاحة بصورة مستقلة عن أخطاء النقل. يستهلك نموذج نظام التشغيل الحدث القابل للاستعادة قبل تثبيت سياق المتابعة. يحوّل نموذج برامج تشغيل Windows القسمة على صفر وفيض خارج القسمة إلى STATUS_INTEGER_DIVIDE_BY_ZERO مع تنفيذ مرشحات SEH و__finally وإعادة المحاولة فعليًا. يُبنى NeverDX64ExceptionTests دون Unicorn، ويتحقق DriverWDMCPUException من أمثلة WDK الأصلية. تُتخطى مضيفات ARM64 غير المتاحة صراحةً.
يحتفظ RAMTransaction فقط باتحاد نطاقات الكتابة الفيزيائية المعلنة للتعليمة وتحت قفل التنفيذ. تُستعاد الذاكرة الأصلية قبل مراقبي النتائج؛ الإلغاء وفشل النقل واستثناءات المراقب لا تنشر RAM أو سجلات جزئية. تحتفظ أخطاء المعالج بحالة الاستثناء المعمارية بعد تراجع RAM. تستخدم كتابات ARM64 المفردة والمزدوجة نفس السلطة. تنفذ x64 تعليمات XCHG وXADD وCMPXCHG بعروض 8/16/32/64 بت، مع محاذاة طبيعية للأشكال المقفلة أو ذات القفل الضمني. تقارن اختبارات NeverDRAMTransactionTests النتائج بمعالج المضيف وتختبر التراجع والمرادفات والصلاحيات؛ تُتخطى المنصات غير المتاحة صراحةً. تبقى الأجهزة وSMP المتوازي خارج هذا العقد، ولا تستعيد لقطات CPU ذاكرة سبق اعتمادها.
تنفّذ CMPXCHG8B وCMPXCHG16B التعليمات الأصلية عبر KVM وWHP وchecked Unicorn في ملفات تشغيل برامج التشغيل والمستخدم. يلزم إذنا القراءة والكتابة سواء نجحت المقارنة أم فشلت، وتُصنَّف أخطاء الوصول كعمليات كتابة. تتحقق CMPXCHG16B من المحاذاة على 16 بايت قبل الوصول إلى الذاكرة وتبلغ عن #GP(0) عند المخالفة. تشترك ملاحظتا النتيجة في معاملة RAM واحدة؛ ولا ينشر التوقف أو الاستثناء في أي منهما تغييرات السجلات أو الذاكرة. يمكن لـCMPXCHG8B دون قفل عبور حدود الصفحات، بينما تتطلب العمليات المقفلة المحاذاة الطبيعية. يقارن X64WideAtomicTests.cpp نتائج التعليمات الأصلية على المضيف والأخطاء الأصلية المباشرة، ويفحص الأسماء المستعارة والبادئات والعنونة والإصلاح والإلغاء. تنفّذ عيناتنا الأصلية لبرنامج تشغيل Windows وPE في ring3 كلا العرضين، وتنفّذ عينة WDK أيضاً _InterlockedCompareExchange128. يجب أن يدعم نموذج CPU التعليمة CMPXCHG16B.
تملك NeverDEmulationArch عقود ISA وجداول الصفحات وتنسيق FP المشترك بين النقل الأصلي وUnicorn. تحفظ سياقات x64 التحكم والحالة وTOP والوسوم الفيزيائية ورمز العملية ومؤشرات التعليمات/البيانات وثمانية سجلات بطول 80 بت. تستخدم FP0–FP7 نوع RegisterValue ويرفض الوصول العددي الاقتطاع. يمثل FPTag قناع السجلات الفيزيائية غير الفارغة. تتحقق NeverDX64FPTests من كل قيم TOP والعمليات الدقيقة بمقارنتها مع FXSAVE/FXRSTOR للمضيف واستعادة السياق. لا يتيح ذلك تعليمات x87 ضمن checked ولا يثبت جميع حالات التقريب. يجري تجاوز المضيفات الأصلية غير المتاحة صراحةً.
يدعم driver-strict كلاً من KVM على مضيف Linux x64 المطابق وWHP على Windows x64 المطابق؛ يختار auto هذا النقل الأصلي، وتستخدم ISA المختلفة Unicorn. يحتفظ Unicorn الصريح وAPI V1 السابق بالملف البرمجي المحمول. يتحقق التنفيذ الأصلي من العناوين القانونية والآثار قبل الدخول؛ ويفشل العتاد غير المتاح دون تراجع. التعليمات وسلوك OS غير المدعومين أخطاء صريحة. تجتاز CI الأصلية على Windows x64 مع تعطيل Unicorn جميع الفحوص الإلزامية البالغ عددها 359: 131 فحص CPU و224 نتيجة لبرامج التشغيل من 26 صورة مدمجة و46 صورة WDK و40 حالة سيناريو عند العناوين المفضلة والمعاد تموضعها، إضافة إلى أربعة فحوص لحدود SEH (9d4c130c). لا تزال أدلة التشغيل الأصلي ARM64 ناقصة، ولا تثبت هذه القدرة توافق أي برنامج تشغيل أو Android/Darwin.
يغطي التحقق الأصلي أعلاه نقاط دخول برامج التشغيل المعلنة والسيناريوهات المنشورة. وتبقى أدلة اختبارات الانحدار التفصيلية لكل ميزة وفحوص C API/CLI/Python الموضحة أدناه مقتصرة على Linux ما لم يُوثَّق تنفيذ Windows صراحةً؛ ولا يعني نجاح مجموعة الحالات الأصلية التحقق من جميع تنويعات الاختبارات على Windows.
يمكن الاستعلام عن الملف المحدد باستخدام executionCapabilities(Contract, ISA, Backend). يصف NativeLegacyX64 التنفيذ الأصلي لبرامج تشغيل x64. تتحقق اختبارات NeverDNativeDriverTests من المجموعة الحالية ويمكن تشغيلها أيضاً في بناء دون Unicorn.
ينفذ workflow CI الحالي كامل دليل اختبارات المحاكاة قبل الملفات العامة، ويحفظ قائمة الاكتشاف ونتائج JUnit وسجل CTest في emulation-focused. لا يمنع فشل وحدة أخرى هذا التشغيل. يظل العتاد غير المتاح وبرامج التشغيل الاختيارية المفقودة حالات تخطٍ صريحة؛ ولا يثبت نجاح التنفيذ البرمجي أو الترجمة التنفيذ الأصلي.
على Linux يُكمل NeverDUnicornDeadlineTests خيط المؤقت الفعلي قبل دخول الضيف باستخدام جدولة pthread مضبوطة. يغطي x64 وARM32 وARM64، ويتحقق من غياب آثار الضيف بعد الإلغاء المسبق ومن استخدام التشغيل التالي ميزانيته المستقلة. يستخدم API العامة دون تغيير الحالة الخاصة للمحرك.
ينفذ X64StateTransition ضمن NeverDX64ExceptionTests قراءات RAM مستقلة وقراءات CR8 على CPU الأصلي. يبدل قواعد TLS والامتيازات، ويستأنف بعد أخطاء قسمة متكررة، ويغير TLS بعد دخول ملغى. بعد تعديل نقل الحالة الأصلي، شغّل وسم CTest المعني مع اختبارات إعادة تعيين الأسماء البديلة وسياقات CPU وحالة FP ومقارنة نتائج برامج التشغيل الأصلية. يبقى عدم توفر KVM/WHP تخطياً صريحاً.
تتحقق اختبارات NeverDKvmRunTests من دوال النقل المستعارة في KvmRunControl دون الحاجة إلى /dev/kvm. يتحقق StateTransfersUseTheEntryThreadAndPrepareOnceAcrossRetries من استخدام خيط واحد للتحضير والقراءة ودخول المضيف المعترض، ومن تنفيذ التحضير مرة واحدة أثناء محاولات الإعادة المتقطعة. تغطي الحالات الأخرى فشل التحضير دون دخول وفشل القراءة والتوقف أثناء التحضير وإلغاء دخول نشط، ثم تشغيل جديد لا يعيد استخدام الدوال السابقة. أبقِ اختبارات الإلغاء الحقيقي والتراجع عن RAM والاستثناءات وبرامج التشغيل الأصلية ضمن التحقق. يتحقق SequentialEntriesReuseWorkerWithoutRetainingPriorTransfers من أن مداخل متعددة ضمن مهلة واحدة تعيد استخدام الخيط، وتنفذ كل نقل مرة واحدة، وتترك حزم الحالة السابقة دون تغيير.
تحد KvmHandoffPolicy كل انتظار نشط إلى 8 μs، وتنتقل إلى الانتظار الحاجب بعد محاولتين متتاليتين دون نتيجة، ثم تعيد المحاولة بعد 256 عملية تسليم. يتكيف خيط الاستدعاء والخيط العامل بشكل مستقل، ويراعي خيط الاستدعاء أيضًا المهلة ورمز الإيقاف الأصليين. أعلام الجاهزية الذرية مجرد مؤشرات للجدولة؛ ويظل القفل مسؤولًا عن الحزم وعمر دوال الاستدعاء وتأكيد الإلغاء. تتحقق NeverDKvmRunTests من حد الانتظار غير المجدي والتعافي وتغير زمن استجابة الطرف الآخر والإلغاء قبل إعادة استخدام الحزم.
يستخدم KVM x64/ARM64 المتحكم KvmRunControl لتحضير الحالة والدخول إلى KVM_RUN وقراءتها على عامل vCPU خاص واحد. يحدث التحضير مرة واحدة حتى مع EINTR؛ يمنع الإلغاء وفشل القراءة نشر الحالة. ينفذ KvmAArch64Machine.cpp صيانة ترجمة العناوين ونقل الحالة العددية والمتجهية الكاملة بمهلة خطوة واحدة. ينشر المستدعي بعد تأكيد الانتهاء؛ ويبقى فك ISA ومعاملات RAM وسياسة النظام والمراقبون على خيط المستدعي. ما زال إثبات ARM64 الأصلي مطلوباً.
يتحقق ReusesCapturedStateAndInstallsHostChangesAcrossFaultsAndStops من استمرار التنفيذ وكتابات CPU الحقيقية بعد تعديل المضيف للسجلات العامة وأول وآخر سجل XMM وMXCSR وكلمة تحكم x87. تتحقق بايتات FXSAVE64 الفعلية من جميع السجلات المادية ذات 80 بت وTOP والوسوم ورمز العملية والمؤشرات بعد دخول متوقف؛ كما تبطل أخطاء القسمة المتكررة إعادة الاستخدام. لا تسمح اختبارات حدود الآلة هذه بتعليمات x87 إضافية في ملفات checked.
يحقن NeverDKvmStateTransferTests فشل قراءة سجلات أو XSAVE بعد تنفيذ KVM حقيقي، ثم يعيد المحاولة بمدخلات لم تتغير. تثبت نتائج الأعداد الصحيحة والبايتات المجمعة المستقلة أن فشل القراءة لا يعيد استخدام الحالة الأصلية التي تقدمت بالفعل. هذا الملف التنفيذي وحده يغلّف ioctl؛ وتُتجاوز المضيفات الأصلية غير المتاحة صراحةً.
تختبر NeverDKvmStateTransferTests على KVM فعلي غياب مجموعات KVM_CAP_SYNC_REGS ودعمها منفردة ومجتمعة وفشل الاستعلام عنها. يحصي SynchronizedCapturesRemoveOnlySupportedReadIoctls عمليات القراءة الفعلية ويتحقق من حالة CPU كاملة بعد خطوات متتابعة. يفرض CancelledWarmEntryRequiresFreshSpecialStateOnRetry قراءة جديدة للسجلات الخاصة بعد الإلغاء. تشمل المصفوفة نفسها فشل الالتقاط وإعادة محاولات الأعداد الصحيحة وSIMD والتراجع عن RAM التخمينية وأولوية الاستثناءات؛ ويُعلن صراحة عن تخطي التغطية الأصلية غير المتاحة.
تستخدم checked ARM64 حدّاً موحداً للحالة الكاملة. يحدد Registers.def عدد 39 حقلاً عددياً و32 متجهاً بعرض 128 بت؛ يجمع captureAArch64State جميع القراءات ويطبق العروض وتطبيع NZCV قبل نشر واحد. تنقل Unicorn وKVM وWHP وHVF المجموعة نفسها، بما فيها TPIDR_EL0 وTPIDRRO_EL0 وTPIDR_EL1 وFPCR وFPSR. تفعّل الواجهات الأصلية FP/SIMD عبر CPACR_EL1. فشل أي قراءة أو إلغاء الدخول يحفظ كامل حالة المستدعي.
ينفذ بدء ARM64 KVM/WHP/HVF البرنامج الخاص AArch64MachineProbe.def: NOP وجمع FP32 بتقريب نحو اللانهاية الموجبة وجمع SIMD بمسارين. تقارن كل خطوة جميع الحقول العددية الـ39 والمتجهات الـ32، بما فيها TLS وNZCV وتصفير البتات العليا للنتيجة وحالة FPCR/FPSR المحفوظة والمتراكمة. يستخدم الفحص ذاكرة مراقب المشرف فقط وموعداً نهائياً إجمالياً واحداً. تثبت هذه الفحوص التهيئة المحدودة فقط. لا يزال التحقق من أحمال Linux ARM64 KVM وWindows ARM64 WHP معلقاً؛ نتائج macOS الأصلية مسجلة في دليل HVF. يتضمن البرنامج أيضًا توقيع عناوين العودة A/B والمصادقة عليها مع تعطيل المفاتيح، وأشكال BTI الأربعة على الصفحات غير المحمية.
ينفذ الفحص أيضًا MRS CTR_EL0 مرتين، وDC CVAU وDSB ISH وIC IVAU وISB، للتحقق من ثبات بنية الذاكرة المخبئية والحالة الكاملة. تقبل Checked EL0/EL1 التعليمات الأصلية وجميع خيارات DSB الأساسية المسماة وISB SY فقط. تأتي CTR من المعالج الافتراضي المختار وقد تختلف بين وسائل النقل. يجب أن تشير أهداف الصيانة إلى RAM عادية قابلة للقراءة بالصلاحيات الحالية، مع السماح بالعناوين غير المحاذاة والأسماء المستعارة؛ تُرفض الأهداف الأخرى باعتبارها غير مدعومة. لا تنشئ الصيانة أحداث مراقبة لقراءة البيانات أو كتابتها. يحافظ الإسقاط على اتساق تنفيذ التعليمات دون نمذجة محتويات مخابئ خاصة أو SMP عتادي متوازٍ. تختبر NeverDAArch64CacheTests الحالة ونهايات الصفحات للقراءة فقط والرفض والتوقف والسياقات والميزانيات وتحديث كود الضيف عبر أسماء RW/RX المستعارة الممتدة بين صفحتين. تُتخطى مضيفات KVM/WHP غير المتاحة صراحةً.
تنفذ تهيئة x64 الأصلية في KVM/WHP/HVF برنامج X64MachineProbe.def داخل صفحات supervisor خاصة. تشمل مهلة واحدة NOP وجمع FP32 بتقريب نحو اللانهاية الموجبة وجمع SIMD ذي مسارين وتحميل FS/GS وقراءة CS/SS/CR8؛ وتقارن كل خطوة الحالة الكاملة للقيم المفردة وXMM وسجلات x87 الفيزيائية وحقول التحكم. تتطلب اختبارات x64 وARM64 حق التنفيذ الحصري للذاكرة الفيزيائية. يملك MemoryProjection هوية التخزين المؤقت (ISA وفضاء العناوين وجيل التعيينات والامتياز ومتغير المراقب) وسجل الجذور المعتمدة لكل ISA. تبطل أدوات البناء التخزين المؤقت قبل إعادة الكتابة، فلا تعيد المحاولة الفاشلة استخدام جداول جزئية ولا يمرر المستدعي جذورًا قديمة. تثبت هذه الفحوص التهيئة المحدودة فقط. لا يزال التحقق من أحمال Linux ARM64 KVM وWindows ARM64 WHP معلقاً؛ نتائج macOS الأصلية مسجلة في دليل HVF.
يميّز مفكك XSAVE المشترك بين حالة SSE الابتدائية في التنسيق القياسي والمضغوط. عندما تكون XSTATE_BV[1] صفراً، يهيّئ كلاهما XMM؛ لكن القياسي يواصل قراءة MXCSR والتحقق منه، بينما يهيّئه المضغوط. يوفر X64XsaveCases.def تخطيطات مستقلة وبرامج XRSTOR أصلية للمضيف. يتحقق X64XsaveTests.cpp من ذرّية الرفض ويقارن التنسيقين بالتنفيذ الحقيقي مع حفظ حالة FP/SSE للجهة المستدعية. يُعلن صراحةً عن تخطي المقارنة عند غياب معمارية المضيف أو ميزة التعليمات المطلوبة.
يعلن X64FPState.def تخطيطات النقل المضغوطة لـ AVX وAVX-512 وCET_U/CET_S وAMX، بما فيها محاذاة المكونات إلى 64 بايت. يجب أن تمثل بيانات الامتداد الحاضرة الحالة الابتدائية المصفّرة؛ ولا تحدد المكونات الغائبة وحشو المحاذاة حالةً. تحدد بتات التخطيط الإزاحات، وتُرفض التخطيطات المجهولة والبيانات غير الابتدائية والأطوال الخاطئة قبل النشر. تغطي CompactedOffsetsFollowLayoutRatherThanPresentBits وWideLayoutIgnoresAbsentComponentsAndAlignmentPadding وInitialCETComponentsDoNotHideFPState وInitialWideComponentsDoNotHideFPState حزم WHP ذات 872 و10752 بايت. لا يتيح هذا النقل تنفيذ تعليمات هذه الامتدادات.
يكمل WhpXsaveRegisters.def حزم XSAVE الكاملة بسجلات تحكم x87/SSE المسماة. يكتب آخر رمز عملية ومؤشري التعليمة والبيانات صراحة ويقرؤها من المضيف. يمكن استكمال حقول الحزمة الصفرية، لكن تعارض البيانات غير الصفرية أو حقول التحكم المشتركة يفشل قبل نشر الحالة. يتحقق NamedMetadataRestoresOmittedPacketFields من الحقول المفقودة مع الاحتفاظ بكل بيانات FP.
تتبع الحقول الأصلية FOP/FIP/FDP قواعد حفظ واستعادة x87 للمضيف. قد يصفرها AMD عند غياب استثناء معلق غير مقنّع؛ وتحتفظ اللقطات بالقيم المرصودة. يهيئ X64MachineProbe.def واختبارات NOP والسياق الدقيقة استثناءً معلقاً متسقاً ليظل كل حقل صالحاً وتتم مقارنته دون إخفاء الفروق. يتحقق مرجع FXRSTOR64/FXSAVE64 في عملية المضيف من الحالتين؛ ولا تستبدل الخلفيات نتائج المضيف ببيانات الإدخال الوصفية.
يقارن NativeGuestRAMDistinguishesEntryFromCaptureLoss حالة FP/SSE الكاملة التي تحفظها FXSAVE64 الفعلية للضيف في RAM مع التقاط XSAVE للمضيف. تختبر واجهتا API التثبيت المباشر وFXRSTOR64 داخل الضيف، باستخدام إعداد حفظ المؤشرات الافتراضي ثم الإعداد المدعوم من المضيف المحدد صراحةً. يميز الاختبار الدخول والتنفيذ والالتقاط دون تصحيح القيم؛ ويظل الاختلاف فشلاً. تغطي المصفوفة أيضاً استثناء x87 معلقاً غير مقنّع، وتسجل مرجع FXRSTOR64/FXSAVE64 منفذاً في عملية المضيف ومورّد المعالج، لتمييز دلالات حفظ المؤشرات المشروط عن سلوك نقل الحالة عبر WHP.
يملك المرمز المشترك encodeX64XsaveState / decodeX64XsaveState حزم FP/SSE القياسية والمضغوطة ودوران TOP الفيزيائي والحالة الأولية للمكونات الغائبة والتحقق الذري. يستخدم WHP واجهات XSAVE الكاملة، مع تفضيل WHvGetVirtualProcessorState / WHvSetVirtualProcessorState وإبقاء واجهات XSAVE القديمة لمسار التوافق. لا تستبدل واجهة سجلات x87 الفردية القديمة الحزم الكاملة. تفشل صراحة المكونات الموسعة غير الابتدائية والرؤوس المشوهة وقيم التحكم غير الصالحة وقراءات الحالة المبتورة. تحفظ أخطاء تعيين WHP قيم HRESULT وGPA والحجم للتشخيص.
يقبل CheckedX64Instructions.def الضرب غير الموقّع MUL بعرض 8/16/32/64 بت والتعليمات CBW/CWDE/CDQE/CWD/CDQ/CQO عبر ناقل CPU الحالي. يستخدم NeverDX64IntegerTests ترميزات وقيماً متوقعة مستقلة من X64IntegerCases.def عند مستويَي الامتياز: حفظ أجزاء السجلات غير المتأثرة، والتمديد بالأصفار عند الكتابة بعرض 32 بت، ونصفي حاصل الضرب، ونتائج CF/OF المحددة، وثبات الأعلام عند تمديد الإشارة. يحتفظ الضرب في RAM العادية بفحص صلاحيات نطاق الوصول كاملاً ومراقبي القراءة؛ ويحفظ الخطأ أو توقف المراقب سجلات الخرج الضمنية وPC. تبقى معاملات الأجهزة غير مدعومة. تُنفّذ الحالات أيضاً على checked Unicorn، ويُعلن صراحةً عن تخطي النواقل الأصلية غير المتاحة.
يتيح X64BitInstructions.def تعليمات BT/BTS/BTR/BTC للسجلات وRAM العادية بعرض 16/32/64 بت. يُفسَّر فهرس السجل كقيمة موقَّعة بعرض المعامل ويختار كلمة كاملة؛ أما الفهرس الفوري فيبقى داخل الكلمة الأساسية. يحدث الاقتطاع إلى عرض العنوان قبل إضافة قاعدة FS/GS. يوفر المعالج CF والقيم المكتوبة، ويبقي RAMTransaction النتيجة خاصة حتى تقبلها دوال المراقبة. تُفحص الصلاحيات على النطاق الكامل، بما فيه الصفحات المخصصة منفصلًا والعناوين البديلة. يحافظ التوقف وفشل الاستدعاء الراجع ورفض الوصول على حالة CPU وRAM الأصلية. يقتصر LOCK على تعديل الذاكرة ذي المحاذاة الطبيعية؛ ولا يشمل الدعم MMIO أو SMP العتادي المتوازي. يقارن X64BitStringTests.cpp ترميزات مستقلة بالتنفيذ الفعلي على مضيف x64، ويفحص الفهارس السالبة واقتطاع العرض وعبور الصفحات والإلغاء وصيغ LOCK غير الصالحة. راجع مرجع تعليمات Intel.
يحدد X64StringInstructions.def تعليمات MOVS/STOS/LODS بعروض 8/16/32/64 بت على RAM العادية؛ ويغيّر CLD/STD علم الاتجاه وحده. يتحقق كل عنصر REP من كامل المعامل قبل المراقبة، ثم يثبت أثره عند حد يسمح بالاستئناف. يحافظ العطل اللاحق على العناصر المكتملة، بينما يترك الإيقاف أو استثناء المراقب العنصر الحالي دون تغيير. يضاف FS/GS إلى المصدر فقط بعد اختزال عرض العنوان. تحتفظ عمليات تحميل AL/AX بالبتات العليا، بينما يمدد EAX بالأصفار. تتطلب REP ذات العداد الصفري وعنونة 32 بت أن تكون بتات العداد العليا صفرًا، وكذلك بتات العناوين المشاركة في MOVS/STOS، لأن المعالجات الفعلية تختلف بخلاف ذلك. لا تزال REPNE مع MOVS/STOS/LODS ومعاملات الأجهزة لـ STOS/LODS غير مدعومة. يقارن X64StringTransferTests.cpp العروض والاتجاه والتداخل والعداد الصفري بتعليمات مضيف مستقلة، ويختبر الصلاحيات والأسماء البديلة والتفاف العنوان والأعطال والاستئناف. ينفذ برنامج تشغيل موارد WDK الأصلي عروض STOS/LODS الأربعة عبر driver_resource_strings.def.
يحدد X64StringInstructions.def أيضًا CMPS/SCAS على RAM العادية بعروض 8/16/32/64 بت مع REPE/REPNE. يتحقق كل عنصر من جميع القراءات قبل المراقبين، ويحدث أعلام الحساب الستة، وينتهي عند أول شرط توقف. يعيد عطل البيانات الأعلام إلى بداية REP المتصلة مع إبقاء تحديثات المؤشرات والعداد المكتملة؛ ويبدأ الاستئناف عبر الواجهة العامة من حالة CPU المنشورة. لا يغير الإيقاف أو استثناء المراقب العنصر الحالي، ولا تقرأ النهاية المبكرة العنصر التالي. يؤثر FS/GS في مصدر CMPS وحده، ويحافظ SCAS على المجمّع وسجل المصدر غير المستخدم. تبقى الأجهزة والبتات العليا الملتبسة عند عداد صفري بعرض 32 بت خارج النطاق. يقارن X64StringComparisonTests.cpp تعليمات المضيف المستقلة والأعلام والاتجاه والأسماء البديلة والتفاف العناوين والصلاحيات والاستئناف؛ ويلتقط اختبار إشارات Linux x64 السجلات عند العطل الحقيقي. ينفذ برنامج تشغيل WDK الأصلي شكلي التكرار الشرطي بكل العروض عبر driver_resource_strings.def. راجع مرجع Intel. يتحقق الاختبار الأصلي في Linux من الأخطاء قبل العنصر الأول وبعده، ويميّز بين استعادة flags الأولية على Intel والاحتفاظ بقيم آخر مقارنة المرصودة على AMD EPYC 7763 تحت Hyper-V (الرصد الأصلي)؛ ويفشل صراحة عند مصنّع CPU غير معروف. تستعيد ضيوف checked قيم flags الأولية على جميع الخلفيات.
تشترك وحدات CPU القائمة في WHP في قسم أصلي واحد؛ ويحمي قفل السجل نفسه الإغلاق النهائي وإعادة الإنشاء. يعيد WhpResourceCache.h استخدام VP 0 التعاوني؛ وعند تبديل CPU المنطقي يُحذف ذلك المعالج وتُلغى تعييناته أولًا. تحتفظ الوحدات المتوازية بمعالجات VP ونطاقات GPA مستقلة. تُوجَّه عمليات نقل السجلات وXSAVE والإلغاء إلى VP الخاص بها. يحتفظ x64 بميزات XSAVE الافتراضية للمضيف ويتحقق من الإعداد الفعلي عبر WHvGetPartitionProperty. تبقى الجدولة تعاونية افتراضيًا.
يفحص NeverDX64FPTests مواضع تلف حالة البدء الـ79 وينفذ تعليمات X64ProbeCases.def المجمعة بصورة مستقلة على وسائل النقل الأصلية، مع مهلة واحدة وRAM ضيف دون تغيير. يغطي NeverDProjectionCacheTests تغير المستدعي وترتيب ISA وسجل الجذور ومتغيرات الامتياز/المراقب والأجيال وهوية فضاءات العناوين وفشل الاستبدال. تتضمن NeverDRunControlTests ملف WhpXsaveTests.cpp لحزم API الحديثة والقديمة وكل TOP وحدود الحجم وثبات الحالة عند الفشل؛ ولا تثبت اختبارات البروتوكول في الذاكرة تنفيذ WHP الأصلي. تتخطى وسائل النقل الأصلية غير المتاحة صراحة.
تميّز تشخيصات XSAVE بين استعلام الحجم والتحضير المحلي وفك ترميز الحزمة الملتقطة. وتحتفظ باسم API وعدد البايتات المُعادة والسعة وحقول محدودة من الترويسة والتحكم، مع توقعات مستقلة في WhpHostFailureCases.def، دون طباعة محتويات سجلات الضيف. يتحقق InvalidInputReportsPreparationWithoutHostMutation أيضاً من أن المدخل المرفوض لا يستدعي المضيف ولا يغير حزمته. ويبقى مرمّز ISA المشترك المرجع الوحيد للتحقق.
تحتفظ أخطاء مضيف WHP أثناء استعلامات الإمكانات وإعداد الأقسام ووحدات CPU الافتراضية ونقل السجلات وXSAVE والتنفيذ بقيمة HRESULT واسم واجهة API المعلن في WhpProtocol.def؛ وتحتفظ استعلامات الإمكانات الفاشلة بنتيجة عدم التوفر ذات النوع المحدد. يوفّر WhpHostFailureCases.def توقعات مستقلة لفشل المضيف المتزامن مع الإلغاء، ولأخطاء الاستعلام والتثبيت والتقاط الحالة في واجهات XSAVE الحديثة والقديمة. يتطلب CI المخصص لـ Windows نجاح 210 حالة أصلية: 16 للتعيين، وحالتين للبدء، و10 لـ FP والسياق، و7 للـ CPU المشترك، و8 للأعداد الصحيحة، ونسختي API من NativeInstallRetainsFPStateBeforeAnyGuestExecution. تقارن الحالتان الأخيرتان FP/SSE الكامل والبيانات الوصفية المقروءة مستقلاً قبل تنفيذ كود الضيف. يؤدي التسجيل المفقود أو الاختبار المتخطى أو المعطل أو غير المنفذ إلى فشل تدقيق أدلة التنفيذ الأصلي. تغطي الفحوص الإضافية البالغ عددها 26 جميع حالات X64BitStringTests.cpp عند مستويَي الامتياز. يضيف Windows PE64 الآن 67 حالة لعمليات WHP وإحدى عشرة حالة مقارنة مستقلة بالتنفيذ الأصلي على Windows.
يُبنى NeverDMemoryLifecycleTests بصورة مستقلة عن Unicorn، بما فيها إعدادات الخلفيات الأصلية فقط. تُتخطى حالات الإسقاط والأجهزة الخاصة بالمحاكاة البرمجية صراحة عند تعطيل Unicorn، بينما تبقى اختبارات مشاركة المعالج على المضيف المطابق مسجلة. يعزل WhpMemoryTests.cpp واجهة الذاكرة الأصلية عبر 16 حالة في WhpMemoryCases.def: حجم صفحة أو إسقاط، وتخصيصات مشتركة أو مستقلة، وبايتات لم تُلمس أو مقيمة، ووجود المعالج الافتراضي الأول أو غيابه. تُبقي كل حالة مالكين منطقيين، وتبدل القسم المعين بينهما مراراً، ثم تحذف المالك غير النشط وتتحقق من استمرار عمل التعيين المتبقي دون إعادة إنشائه. تحتفظ أخطاء الربط الحقيقية بقيمة HRESULT وتُفشل الاختبار؛ هذا دليل لواجهة الذاكرة وليس إثباتاً لتنفيذ التعليمات.
يغطي تحدد تشخيصات X64MachineProbe.def تعليمة بدء التشغيل الفاشلة وكل اختلاف في القيم العددية وTLS والامتياز وحقول تحكم x87 ومسارات FP الفيزيائية وكلمات XMM، مع القيم المتوقعة والمرصودة. يتحقق DiagnosticIdentifiesStepFieldAndBothValues من رسائل مرجعية مستقلة. تبقى مقارنة الحالة دقيقة؛ يميز التشخيص فقدان النقل عن مشكلة تنفيذ التعليمة ولا يعد الاختبار الأصلي الفاشل نجاحاً.
WhpResourceTests.cpp إعادة الاستخدام والحذف قبل الاستبدال والتعافي من الفشل والتزامن مع الإيقاف أو انتهاء المهلة. يتناوب LogicalCPUSwitchingRestoresPhysicalFPAndTLS بين جهازين في نمطي الامتياز، ويتحقق من استقلال الحالة الفيزيائية لـ x87/XMM وFS/GS، ثم يستأنف الجهاز المتبقي بعد حذف الآخر. تتطلب CI على Windows نجاح حالتي WHP.
تكون NEVERD_ENABLE_SEMANTIC_TESTS بقيمة ON افتراضياً، وتتحكم في مجموعة unittests/semantic وأهداف تشغيلها المجمعة. لبناء اختبارات CPU الأصلية دون Unicorn، أبقِ BUILD_TESTING=ON واضبط NEVERD_ENABLE_SEMANTIC_TESTS=OFF وNEVERD_EMULATION_BACKEND_UNICORN=OFF. تظل اختبارات KVM/WHP الأصلية متاحة، بما فيها إعداد Windows ARM64/MSVC مع ترويسات SDK المناسبة. لا يزال تفعيل Unicorn على Windows ARM64 يتطلب سلسلة أدوات ARM64 LLVM-MinGW. فصل البناء هذا لا يثبت تنفيذ ARM64 على عتاد أصلي.
يهيئ CI الخاص بالـ CPU الأصلي مصادر Capstone عند المراجعة المثبتة ويستخدم حزمة LLVM المبنية مسبقاً والمتحقق منها. مع NEVERD_ENABLE_SEMANTIC_TESTS=OFF وتعطيل محول Unicorn، لا تتطلب تهيئة اختبارات CPU أو بناؤها أو ربطها مصادر Unicorn، ولا التواقيع أو مجموعة الاختبار الخارجية. يبقي CI الافتراضي مجموعة الاختبارات الدلالية كاملة مفعّلة.
يختار الملف اليدوي native_cpu_only في ci.yml مضيف Windows x64 باستخدام native_cpu_backend=whp افتراضياً، أو Ubuntu x64 باستخدام native_cpu_backend=kvm. يشارك NativeCPUTests.def متطلبات CPU والعمليات ويعلن الأهداف والحالات الخاصة بكل ناقل بشكل منفصل. يتحقق run_native_cpu_ci.py --require-whp أو --require-kvm من المضيف، ويبني جميع الأهداف قبل CTest، ويحفظ القائمة وJUnit والسجلات وأعداد النتائج. يؤدي غياب حالة إلزامية أو تخطيها إلى الفشل حتى إن نجح CTest. يعطّل CI Unicorn؛ ويتطلب --with-drivers مجموعة برامج التشغيل نفسها بعناوينها الأصلية والمنقولة على الناقل المختار. لا تثبت الترجمة أو اختبارات التهيئة تنفيذ الضيف أو قبول ARM64. يستخدم ملف Ubuntu حزم Clang/LLD 21 الموقعة من مشروع LLVM؛ تتعارض تعريفات CR8 في Clang 18/19 مع ترويسات WDK المثبتة. يستخدم التحقق الأصلي على Linux الإصدار CMake 4.2.3. يحدد NeverDNativeDriverTests الخيار NO_PRETTY_VALUES كي يحتفظ CTest بأسماء الحالات المعلنة بصرف النظر عن العرض التشخيصي للمعاملات.
قبل البناء، يفحص CI الأصلي الذاكرة المؤقتة باستخدام sccache --zero-stats. إذا فشل الفحص، يعطّل مشغّلي مترجمي C وC++ مع إبقاء إعدادات المترجمين وجميع الاختبارات الإلزامية. تظل أخطاء التهيئة أو البناء سبباً لفشل المهمة.
يتطلب قبول KVM إلغاء vCPU حقيقي لا يخرج تلقائياً و48 نتيجة لنقل الحالة من KvmStateTransferCases.def، بما فيها الالتقاط عبر ioctl وفشل استعلامات القدرات الاختيارية. تعمل أوضاع السجلات المتزامنة الإضافية عندما يدعمها المضيف، وإلا تسجّل تخطياً صريحاً. لا تعتمد أسماء المعاملات الثابتة على أرقام ioctl أو تنسيق الصفوف. تكمل اختبارات البروتوكول التنفيذ الأصلي ولا تحل محله.
يشغّل native-host-probe.yml الأداة المستقلة probe_native_host.py على runners مستضافة لـ Linux وWindows بمعماريتَي x64/ARM64. يحدد NativeHostProbe.def ترتيب أدلة القدرات وإنشاء VM/vCPU وتحرير الموارد. تحفظ التقارير بصمات المصدر والملف التنفيذي وISA الأصلية للمضيف وكل رمز حالة. تثبت setup_ready الإعداد فقط؛ لا تُنفَّذ تعليمات ضيف. تُسجَّل قدرات API/الجهاز الغائبة كـ unavailable، بينما تُفشل أخطاء البناء والإعداد والتحرير والمهلة وتنسيق الأدلة المهمة. يجب رصد توافر ARM64 في كل تشغيل؛ لا يثبت هذا الفحص قبول أحمال ARM64. يستخدم مسارا Linux الأداة prepare_kvm_ci.py لمنح حساب runner المستضاف الحالي وحده حق الوصول إلى جهاز KVM المحرفي الموجود، مع تسجيل هويته وصلاحياته. تُرفض الأجهزة المحلية وذاتية الاستضافة، ولا تُنشأ أجهزة مفقودة.
يستخدم windows-alignment-oracle.yml كلاً من check_windows_alignment.py وWindowsAlignmentCases.def لجمع 72 ملاحظة أصلية لاستثناءات Windows x64: تسعة أشكال SSE تتطلب المحاذاة، لكل منها سبع حالات عناوين/صلاحيات غير محاذاة وحالة ضابطة بعنوان محاذى في صفحة غير قابلة للوصول. تُحفظ رموز الاستثناءات ومعاملاتها ومواضع PC والسياقات والمخرجات الأصلية وبصمات المصادر والملفات التنفيذية، مع التحقق من ثبات المدخلات وRAM. هذه أدلة على سلوك نظام التشغيل فقط؛ ولا تثبت تنفيذ KVM/WHP أو تضيف دعم SEH.
عند ضبط native_cpu_only=true، يفعّل native_driver_tests=true اختبارات NeverDNativeDriverTests دون Unicorn. قبل التهيئة، يتحقق build_wdk_driver_fixtures.py من SHA-256 الكامل لحزم Microsoft الرسمية WDK/SDK 10.0.26100.6584 ويعيد بناء 46 صورة برنامج تشغيل عادية أو CFG أو DBG من المصادر الأصلية. يحدد WDKDriverFixtures.def هويات الحزم ومعاملات المترجم والرابط وربط عينات الاختبار. تبقى ملفات Microsoft غير المعدلة وتراخيصها في مجلدات البناء أو التخزين المؤقت المحلية؛ ولا يرفع CI إلا بيانات البناء الوصفية وسجلاته. يسجل البيان إصدارات الأدوات والأوامر وبصمات المصادر والترويسات وصور الخرج.
يفرض NativeDriverTests.def تعداد 226 نتيجة WHP لجميع أحمال العمل الـ113 في DriverBuiltinImages.def وDriverBackendParityCases.def: 27 صورة مدمجة و46 صورة WDK و40 سيناريو طلب، بالعناوين الأصلية وبعد إعادة التموضع. ومع 4887 فحص CPU و25 اختبار SEH و77 اختبار جدولة يصبح المجموع 5215 نتيجة إلزامية. تحتفظ الصور الثابتة برفض إعادة التموضع المتوقع. يؤدي غياب صور أو سيناريوهات WDK أو تخطيها إلى فشل مهمة CI الاختيارية هذه؛ وتظل العينات الخارجية اختيارية في البناء المحلي المعتاد. يسجل run_native_cpu_ci.py --with-drivers أهداف الاختبار المهيأة وجميع أدلة الجرد وJUnit. بناء الصور لا يثبت التنفيذ الأصلي على Windows أو ARM64. يمكن إعادة البناء محليًا بالأوامر التالية، أو تحميل ملف التخزين المؤقت الناتج في بناء محاكاة موجود. 4887 CPU + 226 WHP + 25 SEH + 77 scheduling = 5215.
يحقن InterruptionRetainsPhaseCauseDeadlineAndLease انتهاء المهلة والتوقف وكليهما قبل تعليمتين مختلفتين أثناء البدء. ويتحقق من تشخيص المرحلة الدقيق وعمر الرسالة المملوكة ونوع الخطأ وبتات أسبابه وبقاء الموعد النهائي موحداً وتحرير ملكية الذاكرة. تظل إخفاقات النقل الفعلية واختلافات الحالة متميزة. تبلغ ميزانية التحقق الأولي لـ x64 الأصلي 5 s، ولا تتغير مهل الضيف العادية أو سماح الخطوة الواحدة.
يمنح WhpResourcePolicy.def إنشاء موارد WHP على x64 وARM64 مهلة مستقلة مقدارها 30 s قبل التحقق من مجموعة التعليمات. يُفحص إعداد المضيف المتزامن مقابل الموعد النهائي قبل نشر المورد. تحتفظ اختبارات التعليمات ومهل الضيف العادية بحدودها. يتحقق WhpResourceTests.cpp من نوع مقاطعة التهيئة وتشخيص أسبابها والتخلص من المورد بعد الإلغاء وأولوية خطأ المضيف وعدم تغيير مهل التنفيذ العادي.
يفحص X64PopFlagsTests.cpp مستويَي الامتياز وdriver-strict: جميع صور الأعلام المسموح بها وعددها 256 مع حالتين ابتدائيتين، وتسعة ترميزات، وكل بتات الإدخال الـ64، والأسماء المستعارة للقراءة فقط أو للتنفيذ، وأخطاء عبور الصفحات وإصلاحها، وإلغاء المراقبين وفشلهم، ورفض مكدسات الأجهزة، وحدود التعليمات الأصلية التالية. ينفّذ X64PopFlagsOracle التعليمات الأصلية بصورة مستقلة على x64 للتحقق من CPL3/IOPL0 واستهلاك المكدس بدقة. يجعل driver_resource_flags.def برنامج تشغيل موارد WDK الأصلي يضبط الأعلام ويمسحها ويستعيدها بكلا عرضَي المعامل. تبقى حالات الأعداد الصحيحة والتحكم وx87 وSSE كاملة؛ ولا يثبت ذلك دعم TF/NT/AC/ID للضيف أو التنفيذ الأصلي على ARM64.
يفحص X64StatusFlagsTests.cpp تعليمات CLC/STC/CMC وLAHF/SAHF ومدخلات AH البالغ عددها 256 وتركيبات الأعلام المقبولة وكل REX وحالة CPU الكاملة وثبات الذاكرة وتوقف المراقب وأخطاءه والسياقات والاستئناف الأصلي عبر ADC والكتابة. يُرفض LOCK غير الصالح دون آثار. يفحص مرجع مستقل 24 تسلسلاً للبادئات بعد التحقق من CPUID. تنفذ برامج تشغيل موارد WDK الأصلية التعليمات الخمس، وتضاف 22 نتيجة أصلية إلزامية. تُتجاوز حالات المضيف أو ISA غير المتاحة صراحةً. ينفذ ملف Unicorn المحمول الحالات السبع نفسها؛ وتغطي الاختبارات المباشرة للاعتماد سلوك AH وLOCK في أوضاع 16/32/64 بت، وسجلات REX الصريحة، والرفض عند غياب الميزة في الوضع الطويل.
يغطي X64DoubleShiftTests.cpp كل عدّادات imm8/CL المقبولة، والسجلات المتداخلة والموسعة، والأعلام المحددة، ومراقبة RAM عبر الصفحات، والإلغاء، وأخطاء الصلاحيات والصفحات غير المعينة والأجهزة، ورفض LOCK والعدّادات غير المحددة، والسياقات واستئناف ADC الأصلي. يفحص مرجع مستقل 5,184 تنفيذاً أصلياً، وتغطي 12 أداة فحص في برامج تشغيل WDK السجلات وRAM. يضيف التحقق الأصلي 145 نتيجة إلزامية.
يفحص X64ScalarShiftTests.cpp جميع قيم العدد ذات البايت الواحد وقيمتي الحمل الداخل والمعاملات الصفرية وذات البتات الواحدة والموقعة وصيغ العدد الضمني 1 وأسماء AH/SPL وسجل العد البديلة وحالة CPU الكاملة ونطاقات RAM الدقيقة والتراجع عند المراقبة والأخطاء واستئناف السياق. يتحقق مرجع أصلي مستقل من 65,536 عملية تنفيذ. يضيف برنامج تشغيل موارد WDK عدد 72 من المجسات الأصلية. ويتطلب فحص KVM/WHP نجاح 769 نتيجة لهذه العائلة. لا يُضمن حفظ جميع الأعلام إلا عندما يكون العداد بعد القناع صفرًا. تحفظ دورة كاملة غير صفرية لحلقة الحمل في RCL/RCR المعامل وCF، لكن OF يظل غير معرّف؛ لذلك يستبعد المرجع هذا البت غير المعرّف وحده.
يغطي X64LoopTests.cpp عدد 21 ترميزًا أصليًا، والتفاف العدادات، والأهداف النسبية الموقعة فوق 4 GiB، وحفظ حالة CPU/RAM الكاملة، وإلغاء المراقبين، والتعليمات الممتدة عبر صفحات مستقلة، وأخطاء جلب الهدف واستعادة السياق. تُرفض التعليمات غير المكتملة قبل التنفيذ؛ أما خطأ جلب الهدف فيُبقي العداد وPC الناتجين عن الفرع المنفذ. يضيف برنامج تشغيل موارد WDK عدد 12 مسبارًا أصليًا. تتطلب KVM/WHP عدد 379 نتيجة لهذه العائلة ضمن عقود المشرف والمستخدم وبرنامج التشغيل. ينفذ مرجع تعليمات المضيف الأصلية حتى 1,008 حالات ويبلغ عددها. تتجه فروع AMD المأخوذة مع 66H إلى الذاكرة المنخفضة المحجوزة لنظام المضيف؛ لذلك تُنفذ هذه الأشكال ضمن مصفوفة الضيف مع تعيين الأهداف المنخفضة صراحة. يُتحقق من عرضَي أهداف Intel وAMD وأولوية REX.W بشكل منفصل.
يفحص X64BranchTests.cpp شروط Jcc الستة عشر وJMP النسبي، وتسع سلاسل بادئات، والصيغ القصيرة والقريبة، والأهداف النسبية الموقعة فوق 4 GiB، وكامل حالة CPU/RAM، وإيقاف المراقبين وأخطاءهم، وفك الترميز عبر الصفحات، وأخطاء جلب الهدف، واستعادة السياق. ينفذ المرجع المستقل على مضيف Intel عدد 9,792 من التعليمات الأصلية؛ وتبقى صيغ AMD ذات الهدف المنخفض ضمن اختبارات الضيف. يفحص النموذجان البايتات الكاملة والمبتورة، وتختبر الفحوص الأصلية فشل النشر. تختبر أربعة فحوص WDK أصلية سياسة التعريفات. تضيف كل بوابة KVM/WHP عدد 274 نتيجة إلزامية. لا تثبت تغطية نموذج AMD البرمجي تنفيذًا أصليًا على AMD أو ARM64.
يغطي X64StackTests.cpp عدد 42 ترميزًا في تسع مجموعات: العروض والعنونة والحالة الكاملة وترتيب المراقبين والإلغاء والصلاحيات وحدود الصفحات والأسماء الفيزيائية البديلة وإصلاح الأخطاء ورفض الأجهزة واستعادة السياق. ينفذ مرجع مضيف مستقل التعليمات الأصلية؛ وتفحص ستة مجسات WDK مسار التعريف. تضيف كل بوابة أصلية KVM/WHP عدد 1135 نتيجة إلزامية. تبقى آليات التنفيذ غير المتاحة متجاوزة صراحة خارج بوابتها الأصلية الإلزامية.
يغطي X64FrameExitTests.cpp عددًا قدره 14 ترميزًا لتعليمة LEAVE، وترتيب البادئات الفعلي، والعنونة الكاملة عبر RBP، وجميع السجلات، والأسماء المستعارة للقراءة فقط، وأعطال الإطارات العابرة للصفحات وإصلاحها، والصلاحيات، والمراقبين، والعناوين غير الصالحة، ورفض الأجهزة وإعادة تشغيل السياق. ينفذ مرجع مضيف مستقل 42 تعليمة أصلية، وتتحقق خمسة مجسات WDK من تنفيذ برامج التشغيل. تضيف كل بوابة تحقق أصلية 379 نتيجة إلزامية.
يغطي X64FrameEntryTests.cpp عدد 14 ترميزًا والتداخل والتراكب والعناوين البديلة الفيزيائية وفحوص الكتابة فقط وأخطاء حدود الصفحات وإصلاحها وإيقاف المراقب والصلاحيات ورفض البادئات وإعادة السياق. تقارن اختبارات مستقلة على المضيف بايتات المكدس والسجلات في 882 تنفيذًا ناجحًا و84 خطأ على Linux x64. يميّز اختباران بحقن النقل بين التراجع عند الإيقاف أو الفشل وتثبيت الخطأ المعماري. تنفّذ ستة مجسّات WDK تعليمات المشغّل الأصلية. تضيف بوابات الاختبار الأصلي 508 نتائج إلزامية لـKVM و507 لـWHP.
يشغّل DriverSIMDSEHTests.cpp ثمانية أخطاء SSE أصلية بأربعة قرارات مدعومة ورفض تعديل x87 وعقدَي التنفيذ الأصلي وصور WDK العادية/CFG وعنوانَي تحميل. تلزم عشر نتائج لكل خلفية وثلاثة فحوص مستقلة لسجلات SSE في النواة. يحدد driver_seh_simd.def الحالات والأنماط وتغطي جداول الفك غير المتزامنة الدالة المسببة للخطأ. توفر نواة Microsoft 10.0.26100.9549 دليلاً مستقلاً: 107,744 تصنيفاً و8,192 استعادة عبر مسارات تعليمات معزولة. لا يمثل ذلك تشغيل برنامج تشغيل داخل نواة Windows كاملة؛ وما زال KVM/WHP الأصلي على ARM64 غير متحقق منه.
تبقى نطاقات C SEH نصف مفتوحة، فلا تشمل عنوان النهاية. قد تقع نقطة انتقال صالحة لـ __C_specific_handler داخل النطاق المحمي: يُصدر LLVM 20.1.8 القيمة EndLabel + 1 كحد نهائي. يحتفظ نموذج Windows بالحدود الأصلية ويتحقق بصورة مستقلة من قابلية تنفيذ الهدف وانتمائه إلى الدالة وتطابق عنوان المتابعة، بما في ذلك بعد إعادة التموضع. يحفظ KernelSEHContinuationCases.def تخطيط العينة الأصلية، ويختبر ScopeEndLabelMayOverlapTheHandlerLandingPad المعالجات الثابتة والمرشحات. تتحقق الاختبارات المصاحبة من استبعاد النهاية ورفض الأهداف غير الصالحة دون استهلاك حالة الإرسال، بحيث يمكن إعادة المحاولة. تعمل هذه الاختبارات الخالصة ضمن NeverDNativeDriverTests مع تعطيل Unicorn.
يستخدم فك المكدس نحو الهدف حد النطاق الأصلي أيضًا: لا يغادر نطاق finally إذا ظل هدف المعالج داخله. يختبر FinallyRespectsRawScopeEndAtHandlerTarget جانبي هذا الحد ويقارنهما مباشرة مع ntdll.dll!__C_specific_handler على Windows x64. لا يصلح NeverD النطاقات التي يولدها المترجم. تعيد نسخ العينة الأصلية المبنية بـ Clang 20/21 فشلًا من الضيف في النمطين T وJ لأن النهاية المنحازة تشمل الهدف المختار، بينما ينفذ Clang 23 عمليتي التنظيف. يزيل تغيير LLVM #144745 انحياز +1 القديم. تُسجل هذه النتائج الخاصة بالمترجم بصورة منفصلة عن أعطال الخلفية.
يشمل سجل البناء جميع برامج C الأصلية لـ WDM/KMDF وجميع مسارات WDK الاختيارية في CMake. لكل ملف منشور driver-*-scenario.json حالتان عادية وCFG في DriverBackendParityCases.def؛ ويؤدي غياب ربط مصدر أو بناء أو سيناريو إلى فشل اختبارات السجل. يلغي Original تجاوز عنوان التحميل في السيناريو ويتحقق من قاعدة الصورة المفضلة، بينما يتحقق Rebased من قاعدة النقل المعلنة. يلغي سيناريو IRP المملوك لبرنامج التشغيل طلباً فرعياً عمداً، لذلك يحتفظ DriverNativeOutcomes.def بالنتيجة الإجمالية السلبية المتوقعة بعد التنظيف الناجح.
python3 scripts/build_wdk_driver_fixtures.py \
--output build-driver-fixtures --cache build-driver-packages
cmake -S . -B build-native -G Ninja \
-C build-driver-fixtures/fixtures.cmake \
-DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON \
-DNEVERD_ENABLE_DRIVER_EMULATION=ON \
-DNEVERD_ENABLE_SEMANTIC_TESTS=OFF \
-DNEVERD_EMULATION_BACKEND_UNICORN=OFFتختبر NeverDAArch64StateTests فساد كل حقل عددي وكلتا كلمتي كل متجه وتغير الامتياز وعدم تنفيذ FP وحفظ تشخيص النقل. تنفذ NeverDAArch64FPTests اختبار OriginalProgramChecksCompleteStateAndOneDeadline عند الامتيازين على واجهات حقيقية باستخدام تعليمات AArch64ProbeCases.def المجمعة مستقلاً. ينقل الاختبار الكلمات المستقلة عن PC إلى كود الضيف دون منح المستخدم وصولاً لصفحات المراقب. لا يحل تنفيذ Unicorn والتخطي الأصلي الصريح محل دليل بدء ARM64 الأصلي.
يجيز CheckedAArch64Instructions.def وAArch64InstructionEffects في EL0/EL1 مجموعة محدودة من حساب FP32/FP64 الأساسي والمقارنة والنقل وSIMD ثابت العرض. يحفظ FPCR أنماط التقريب الأربعة وFZ وDN، ويحفظ FPSR الحالة المتراكمة وQC. تُرفض البتات غير المدعومة قبل التعديل. يفشل حساب FP16 وSVE/SME والاستثناء غير المقنّع والامتدادات الاختيارية والأشكال غير المدرجة صراحةً. لا يضيف ذلك تحميل برامج تشغيل Windows ARM64 أو بيئة نظام أخرى.
يمتلك AArch64InstructionEffects نطاقات RAM العددية وFP/SIMD الفردية والمزدوجة حتى 128 بت لكل معامل. يتحقق فضاء العناوين المشترك من كل صفحة قبل الدخول، ولا يثبت RAMTransaction إلا الكتابات الفيزيائية المعلنة كاملةً. يستقبل مراقب كتابة 128 بت كلمتين مرتبتين من 64 بت قبل الأثر. يحفظ التوقف والعطل RAM والمتجهات وتحديث العنوان. تساوي رقمي Xn/Vn مسموح؛ وتُرفض النطاقات المزدوجة التي تلتف عناوينها. يستخدم NeverDAArch64MemoryTests ترميزات مستقلة في AArch64CrossPageCases.def وAArch64VectorMemoryCases.def.
تختبر NeverDAArch64MemoryTests 18 شكلاً عددياً ومزدوجاً مع Unicorn وKVM وWHP عند مستويي الامتياز: جميع إزاحات عبور الصفحات، والإشارة والعرض، وترتيب المراقبين، ورفض الصفحة الثانية أو غيابها، واستهلاك العطل صراحة ثم إعادة المحاولة، وتكرار الأسماء البديلة المادية، واستعادة السياق بعد استبدالها. أُعيد إنتاج الرفض السابق لتحميل صالح عابر للصفحات قبل التعديل. تُتخطى وسائل النقل غير المتاحة صراحة؛ ولا تحل اختبارات Unicorn والترجمة المتقاطعة محل الدليل الأصلي لـ ARM64 KVM/WHP.
تتحقق NeverDDriverGuardMetadataTests (DriverGuardCases.def) من بيانات CFG غير المفعّلة ذات الأعلام الصفرية، وبقاء المؤشرات البديلة عند عنوانَي التحميل، والخانات أو الأهداف غير الصالحة وإعادة التمركز المفقودة. تختار حالات التنفيذ Unicorn/KVM/WHP صراحةً مع driver-strict وchecked-x64-v1؛ وتُتخطّى المحركات غير المتاحة كلٌّ على حدة. تختار DriverPublicCLICases.def الخيار --backend unicorn لمقارنة CLI مع واجهة C API v1 المتوافقة. يحتفظ اختيار المحرك الأصلي وauto بتغطية عامة مستقلة، ولا يحدث انتقال صامت إلى محرك آخر عند غياب واجهة المضيف.
يستخدم Unicorn المتحقق منه MachineRunControl: يغطي سماح واحد صيانة ARM64 وتنفيذ الضيف والتقاط الحالة كاملةً. يتحقق UC_HOOK_CODE من رمز التوقف المستعار والمهلة عند دخول التعليمة. يحرر استدعاء المحرك المتزامن مرجع hook قبل العودة، لكن خطوة الآلة تحتفظ بالتحكم حتى النشر. يجمع Unicorn وWHP حالة CPU كاملةً بشكل خاص ويتحققان من التحكم نفسه قبل نشر خطوة ناجحة. ينشئ WHP السماح مرة واحدة قبل التحضير. يتقدم استثناء CPU x64 المؤكد على توقف يصل أثناء الالتقاط. تتخلى معاملة RAM المتحقق منها عن الكتابات المؤقتة عند إلغاء الالتقاط، ولا يتغير العقد البرمجي غير المقيد. يميز MachineInterruptedError الإلغاء المؤكد عن فشل المضيف أو الالتقاط. تعيد CPU المشتركة المتحقق منها Stopped أو Deadline وتحفظ CPU/RAM وتسمح بإعادة المحاولة؛ وتظل الأعطال الحقيقية BackendFailure حتى مع توقف متزامن.
اختبارات التقاط الحالة: NeverDUnicornStateTransferTests, NeverDUnicornMachineControlTests: StopDuringCaptureCannotPublishAndAllowsRetry, ExpiredCaptureCannotPublishAndAllowsRetry, CompletedStoreCannotPublishCancelledCapture, StopDuringCaptureCannotHideRealGuestException. UnicornPublicCapture.CancellationKeepsTypedExitStateAndRAMConsistent; NeverDKvmStateTransferTests: PublicCancellationRetainsStateRAMAndFailurePriority.
تستخدم NeverDUnicornMachineControlTests تعليمات التخزين الأصلية من UnicornMachineControlCases.def على محركات x64 وARM64 حقيقية عند مستويَي الامتياز. يتحقق RejectedEntryPreservesStateAndRAMAndAllowsRetry من الإلغاء قبل الخطوة والتوقف أو انتهاء المهلة عند دخول الضيف الفعلي والحفاظ على كامل حالة الإدخال وRAM ثم نجاح عملية تخزين واحدة لاحقة. لا يتطلب غلاف الدخول المخصص للاختبار مراقباً افتراضياً ولا يثبت التنفيذ الأصلي ARM64/WHP.
يفحص NeverDAArch64StateTests جميع مواضع القراءة الـ71 للحالة الكاملة عند الامتيازين، والعروض والقارئات المفقودة وإعادة المحاولة. ينفذ NeverDAArch64FPTests تعليمات AArch64FPCases.def الأصلية للتحقق من جميع مسارات المتجهات والحساب المعبأ وFP العددي والمتجهي والتقريبات الأربعة وFZ/DN وFPSR المتراكم والسياقات والرفض. يفحص NeverDAArch64MemoryTests كل عبور صفحة وترتيب المراقبين وتوقفهم والصلاحيات والأسماء البديلة والمتجهات المستعادة. يحقن NeverDUnicornStateTransferTests (UnicornStateTransferCases.def, CapturesDeclaredWidthsWithoutStaleUpperBits) كل فشل قراءة عددية ومتجهية بعد تنفيذ حقيقي. تُتخطى الواجهات الأصلية غير المتاحة صراحةً؛ ولا تحل هذه الاختبارات محل إثبات ARM64 KVM/WHP الأصلي.
يرفض RunDeadline::invoke دخول WHP المتوقف أو المنتهية مهلته قبل استدعاء المضيف، ويحفظ نتيجة المضيف الفعلية أثناء الإلغاء، ويؤكد انتهاء استدعاءات المقاطعة قبل تحرير رمز التوقف المستعار. يتحقق KVM وWHP من الحالة الخاصة المقروءة بالكامل على خيط الاستدعاء المالك لحق التنفيذ قبل تصنيف توقف أو انتهاء مهلة متزامن. تحتفظ أخطاء المضيف أو قراءة الحالة الفعلية واستثناءات CPU x64 الموثقة بالأولوية. تبقى الحالة الناجحة العادية خاصة حتى تنتهي فحوص الإلغاء؛ وتتخلص المقاطعة المؤكدة من آثار CPU/RAM التخمينية وتسمح بإعادة المحاولة. يشترك التحضير والتنفيذ الأصلي وقراءة الحالة في سماح واحد لكل خطوة. هذا التحكم تعاوني ولا يضمن حدًا صارمًا للوقت الفعلي.
تتضمن NeverDRunControlTests الاختبارات المحمولة NativeEntryTests.cpp وملف WhpEntryControlTests.cpp عند تفعيل WHP في Windows. تتحقق استدعاءات المضيف في الذاكرة من رفض الدخول وإعادة المحاولة والإلغاء المتأخر وحفظ الأخطاء وأولوية النتيجة وعمر الاستدعاء المؤكد دون Hyper-V. تتحقق NeverDKvmRunTests من الإكمال على خيط الاستدعاء وأولوية الأخطاء ورفض إعادة الدخول. تنفذ NeverDKvmStateTransferTests الفعلية التعليمات الأصلية من KvmStateTransferCases.def؛ ويتوقف ActualCPUExceptionOutranksStopDuringCapture وPublicCPUExceptionOutranksStopDuringCapture بعد قراءة السجلات/XSAVE الفعلية مع حفظ استثناء القسمة والسياق الأصلي وRAM والاستعادة الصريحة. تقدم الاختبارات المحمولة باستخدام Windows ABI على Wine دليلًا للخيوط والتحكم فقط، ولا تثبت تنفيذ WHP الأصلي. تبقى وسائل النقل الأصلية غير المتاحة حالات تخطٍّ صريحة.
تشغّل NeverDInstructionFetchTests برامج checked لمعمارَي x64/ARM64 عبر Unicorn وKVM وWHP في وضعي المشرف والمستخدم. تغطي InstructionFetchCases.def تبدّل صيغ المعاملات والفروع النسبية وكتابة الضيف والمضيف عبر عناوين الكود البديلة واستعادة السياق وسحب الصلاحيات وتخزين الصفحات المنفصل والقراءة الاستباقية عند نهاية الصفحة والترميزات غير الصالحة أو المبتورة ورفض الدخول العودي. تشترط CI الأصلية على Windows نجاح جميع حالات WHP x64. تُتجاوز أزواج المضيف/ISA غير المتاحة صراحة؛ ولا يثبت تنفيذ ARM64 القابل للنقل دعماً أصلياً لمعمار ARM64.
تحقن WhpStateTransferTests.cpp عمليات نقل لكلا جيلي XSAVE للتحقق من المجموعات المتغيرة والالتقاط الكامل وتجاهل الحشو والفشل الجزئي والإلغاء وأولوية الاستثناء واستبدال القسم. يحصي ContinuedStepsReuseCapturedRegistersAndFP عمليات التثبيت المتجنبة، ويفرض PartialTransferFailuresPreserveStateAndForceFullRetry الاستعادة الكاملة. هذه اختبارات بروتوكول؛ وتبقى اختبارات FP وانتقالات الحالة وبرامج التشغيل وring3 الأصلية ضرورية.
تغطي WhpStateTransferCases.def أيضًا الفشل بعد كل بادئة جزئية من القراءة المجمعة لـ32 سجلًا والتعارضات في حقول البيانات الوصفية السبعة. يجب أن يحافظ جيلا XSAVE على حالة المستدعي وأن يفرضا استعادة كاملة عند إعادة المحاولة. تتحقق المجموعة من قراءة سجلات واحدة لكل خطوة واستعادة البيانات الوصفية التي أغفلها XSAVE من تلك القراءة.
يدعم windows-pe64-v1 عمليات طرفية محدودة لـWindows x64/ARM64 مع PEB/TEB وTLS ثابت وديناميكي وDllMain وواجهات Win32 مسماة ورسوم DLL صريحة بلا دورات. تدعم الوحدات استيراد الشيفرة والبيانات بالاسم أو الرقم وDIR64 والتصدير المحال وهويات قوائم المحمّل الفعلية. تستخدم LoadLibraryA / LoadLibraryW وFreeLibrary وGetProcAddress دليل الوحدات المضبوط. ما زالت CRT/GUI وSEH للمستخدم على ARM64 القائم على إطارات المكدس والخيوط والتوافق العام مع Windows غير مكتملة، وكذلك أدلة ARM64 الأصلية لـKVM/WHP.
تخضع بايتات الإدخال الإجمالية ونطاقات الصور كل منهما إلى memory_limit؛ وتستهلك خرائط البيئة أيضاً ميزانية الصور. تشترك التهيئة في 65,536 سجلاً و64 MiB من قراءة البيانات الوصفية وحدود الأسماء والمهلة العامة دون ضمان صارم لزمن I/O المضيف. يتحقق المثال الأصلي EXE→DLL→DLL من التموضع والأرقام والبيانات المشتركة وهوية API وMEM_IMAGE والقوائم وattach/detach لـTLS EXE. يشمل NeverDWindowsProcessTests مرجع Windows الأصلي، وNeverDPEProgramExportsTests البيانات المشوهة والميزانية، وNeverDProcessPublicTests تطابق C ABI/CLI. تُسجل المحركات غير المتاحة كتجاوز صريح.
ينفذ WindowsProcessLifetime استدعاءات TLS ثم DllMain لملفات DLL بترتيب الاعتماد ثم TLS ومدخل EXE، على CPU واحد وبميزانية مشتركة. لكل وحدة فهرس TLS وكتلة مستقلة محاذاة من الصورة المعاد تموضعها وربطها ضمن مساحة 64 KiB مشتركة. وسيط TLS المحجوز صفر؛ ويتلقى DllMain عند البدء/إنهاء العملية قيمة معتمة غير صفرية. يفصل الخروج الصريح DLL التي اكتملت تهيئتها بعكس ترتيب قائمة المحمّل ثم TLS EXE، حتى قبل تهيئة EXE. ينهي DllMain(FALSE) عند البدء العملية بالحالة 0xc0000142 دون إشعارات فصل. لا تختلق الأخطاء ونفاد الميزانية تنظيفاً. تتطلب عودة مدخل PE مع DLL ضيفة إنهاء خيط غير مدعوم فتتوقف صراحةً. لا يُدعم SizeOfZeroFill غير الصفري بعد؛ وتُدعم البايتات الصفرية في قالب TLS الفعلي. تتلقى DLL بلا مدخل إشعارات TLS attach دون إشعارات فصل العملية.
يوحّد WindowsProcessExports حل الأسماء والأرقام بين الاستيراد الثابت وGetProcAddress، بما يشمل الشيفرة والبيانات والأسماء البديلة وسلاسل الإحالة. تضيف إحالات البدء المستخدمة فقط وحدات الكتالوج واعتماديات التهيئة؛ ولا تحمّل الإحالات غير المستخدمة ملفات. تراعي الأسماء حالة الأحرف؛ يعيد الاسم المفقود NULL والخطأ 127، والرقم المفقود عند الاستعلام المباشر بما فيه الفجوات NULL والخطأ 182، ووسيط الاستعلام NULL الخطأ 87، ويحفظ النجاح LastError. تبقى مقابض الوحدات غير المعروفة غير مدعومة. تُحجز مداخل API الدقيقة حسب المزوّد والاسم مرة واحدة من السجل المحدود. يتحقق الحل من ترويسات PE وبيانات التصدير الحالية لكل صورة، ويرفض التغييرات والبايتات غير المقروءة، ويحد السلاسل إلى 64 عنصراً مع مشاركة رصيد بيانات الإعداد المتبقي والموعد النهائي للتنفيذ. تعيد الإحالة إلى فجوة عنوان قاعدة الصورة المستهدفة وتحفظ LastError، وتعيد الإحالة إلى الرقم صفر الخطأ 87. القاعدة عنوان بيانات ولا تمنح إذن تنفيذ ترويسات الصورة. يمكن لإحالات وقت التشغيل تحميل الوحدات المضبوطة وإكمال تهيئتها قبل إعادة نتيجة الاستعلام. لا يزال تعديل جداول التصدير النشطة غير مدعوم.
يحمّل WindowsProcessLoader أسماء DLL الأساسية بصيغة ASCII من windows.modules ويدير المراجع الصريحة والاعتماديات المشتركة والاحتفاظ بوحدات البدء. لا تضيف استعلامات الإحالة المتكررة مراجع إضافية. تمنح إعادة التحميل خانة الدليل جيلاً مقيماً جديداً. يعمل TLS وDllMain على CPU نفسه أسفل إطارات API المعلقة؛ تحافظ استعادة السجلات على كتابات الضيف وتستخدم عنوان العودة الحالي. مؤشرات attach/detach الديناميكية المحجوزة تساوي صفراً. يعيد فشل attach أثناء التحميل الصريح الخطأ 1114 بعد التنظيف مع الاحتفاظ بالتحميلات المتداخلة المستقلة الناجحة. يحرر الإلغاء الصورة وTLS وتستعيد إعادة التحميل البايتات الأصلية. تُرفض تغييرات قوائم المحمّل أو مؤشرات TLS خارج النموذج صراحةً. تبقى ميزانيات الملفات والصور والبيانات الوصفية تراكمية بعد الفشل وإعادة التحميل. يستخدم مزوّدو النظام قواعد PE المعيّنة كمقابض للوحدات. لا يدعم النموذج بحث الملفات أو المسارات غير ASCII أو خيارات LoadLibraryEx أو دورات الاستيراد أو انتقالات إعادة الدخول للوحدة نفسها أثناء تهيئتها أو إلغائها.
GetEnvironmentVariableW, SetEnvironmentVariableW, GetEnvironmentStringsW, FreeEnvironmentStringsW, ExpandEnvironmentStringsW تستخدم كتلة بيئة الضيف الحالية نفسها ضمن معاملات العملية في PEB. الأسماء ASCII دون تمييز حالة الأحرف، والقيم UTF-16. تتحقق التعديلات من المدخلات والسعة وصلاحية الكتابة قبل النشر. تبقى النسخ مستقلة عن التعديلات اللاحقة وتحرر ذاكرة الضيف عند إعتاقها. يحدد النموذج حجم الكتلة بـ 64 KiB؛ تخضع السلاسل والتوسعة لحدود وفحص مهلة التنفيذ. لا تدعم ملكية المؤشرات المجهولة أو الكتل المشوهة أو صفحات ترميز ANSI أو تداخل مخازن التوسعة. يقارن WindowsEnvironmentTests.cpp عينات x64/ARM64 أصلية عبر الخلفيات المتاحة، وتشترط CI مرجعاً مستقلاً يعمل على Windows أصلي.
يجمع WindowsProcessHeap تخصيص كومة العملية وHeapReAlloc والتحرير والاستعلام عن الحجم. يحفظ تغيير الحجم البايتات المحتفظ بها؛ يصفّر HEAP_ZERO_MEMORY البايتات المضافة ويمنع HEAP_REALLOC_IN_PLACE_ONLY نقل الكتلة. يحفظ فشل إعادة التخصيص الكتلة القديمة ويعيد NULL مع ضبط ERROR_NOT_ENOUGH_MEMORY (8)، وفقاً للمشاهدات الأصلية. تعيد الصفحات المستقلة السعة عند التقليص والتحرير، ويفحص التوسيع المرحلي والنسخ المحدود مهلة التنفيذ. تتوقف صراحةً الأكوام المخصصة وأعلام توليد الاستثناءات والملكية المجهولة ونطاقات النسخ أو التصفير غير القابلة للوصول. يغطي WindowsHeapTests.cpp المعماريتين والنقل الإجباري وإعادة استخدام الميزانية وذرية الفشل؛ وتشغّل CI ملف EXE الأصلي نفسه على Windows أصلي. تستخدم حالات PE المجمعة مهلة CTest الخارجية المشتركة البالغة 120 ثانية، مع إبقاء ميزانية محدودة لكل ضيف. تسمح عينة الكومة بـ 20 ثانية لكل عملية للتحقق الكامل من البيانات عبر WHP.
ينشئ WindowsSystemModules صور PE64 نموذجية محدودة لـ ntdll.dll وkernelbase.dll وkernel32.dll على المعماريتين. تتشارك استعلامات ASCII عبر GetModuleHandleA / GetModuleHandleW وLoadLibraryA / LoadLibraryW وGetProcAddress قواعد الصور المعيّنة؛ وتصف PEB/LDR وMEM_IMAGE الصور نفسها. تستخدم الاستيرادات الثابتة والاستعلامات بالاسم وإحالات الضيف بوابات API ومحلل صادرات موحدين. يبقى المزوّدون مثبتين في الذاكرة دون استدعاءات تهيئة للضيف، ولا يمنعون عودة نقطة الدخول بعد إلغاء تحميل DLL الضيف العادية. يوقف تغيير الترويسات أو بيانات التصدير الوصفية الاستعلام. تتوقف صراحةً أسماء صادرات النظام غير الممثلة والاستعلامات بأرقام ترتيب غير صفرية؛ يعيد اختلاف حالة الأحرف فقط لاسم ممثل أو الاسم الفارغ الخطأ 127، ويعيد استعلام NULL الخطأ 87. البايتات والعناوين المولدة سياسة للنموذج، ولا تعيد إنشاء تخطيطات إصدارات Windows أو أرقامها الأصلية أو الأسماء المستعارة بين المزوّدين. يقارن WindowsSystemTests.cpp ملفات EXE أصلية لـ x64/ARM64 مع Windows أصلي، بما فيها ثماني ملاحظات مستقلة لعودة الخيط الأول.
ينفذ WindowsProcessExceptions واجهات AddVectoredExceptionHandler وRemoveVectoredExceptionHandler وRaiseException على CPU واحد وبميزانية العملية نفسها. يمكن للمعالجات المرتبة تعديل التسجيلات وإثارة استثناءات متداخلة واستدعاء API الممثلة وتحميل DLL وإنهاء العملية. يمكن متابعة أخطاء الوصول إلى البيانات على x64/ARM64 والقسمة الصحيحة على x64 بعد التحقق من تعديلات الضيف على CONTEXT، مع حفظ السجلات العامة وSIMD وحالة FP المدعومة. تستأنف الاستثناءات البرمجية عبر تعليمة عودة فعلية داخل المزوّد الممثل. الحدود هي 128 تسجيلاً محتفظاً به و16 إطاراً متداخلاً. تفشل صراحةً نتائج المعالجة غير الصالحة والمؤشرات المعدلة والحقول غير المدعومة وتجاوز الحدود. ما زال SEH وفك المكدس القائمان على إطارات ARM64 والمصحح وأخطاء التنفيذ والحراسة غير مدعومة. يقارن WindowsExceptionTests.cpp سيناريوهات EXE/DLL أصلية مع Windows أصلي؛ وما زالت أدلة ARM64 KVM/WHP الأصلية مطلوبة. تحمل سجلات الاستثناءات البرمجية EXCEPTION_SOFTWARE_ORIGINATE (0x80) بصورة مستقلة عن علم عدم قابلية الاستمرار الذي يمرره المستدعي؛ ويتحقق ملف Windows التنفيذي الأصلي من القيم الدقيقة لأعلام الاستثناءات البرمجية والعتادية.
يحفظ WindowsProcessContext أصل كل إطار توزيع. تُظهر أخطاء x64 المدعومة للوصول إلى البيانات والقسمة علم RF (0x10000) في CONTEXT.EFlags؛ أما RaiseException، بما فيه رموز انتهاك الوصول البرمجية، فيحفظ السياق الحالي. يبقى الأصل محفوظاً خلال VEH/VCH والبحث وفك المكدس في SEH. تستعيد المتابعة الصالحة أعلام CPU المنطقية دون RF، وتُرفض تعديلات الضيف على RF قبل نشر الحالة. لا يحاكي هذا الملف المحدود نقاط توقف التعليمات أو تحكم الضيف في RF. يتحقق WindowsExceptionTests.cpp من السجلات المحفوظة والاستعادة وبقاء CPU/RAM دون تغيير عند الرفض.
استنادًا إلى رصد أصلي مستقل، يحوّل Windows ring3 أخطاء checked x64 ذات السبب operand_alignment إلى STATUS_ACCESS_VIOLATION بمعاملات [read, UINT64_MAX]، بما يشمل تعليمات الكتابة. توفر طبقة CPU السبب؛ ولا يخمّنه Windows من المتجه 13 أو يعيد فك التعليمة. ينفذ WindowsAlignmentProcessTests.cpp تعليمات PE الأصلية في 72 سيناريو خطأ و9 محاولات بعد إصلاح العنوان (72 + 9)، مع فحص PC وRF وXMM وRAM. تُرفض الأخطاء غير المصنفة أو المتناقضة. تحفظ تقارير العمليات وبرامج التشغيل حقلي cause وerror_code الست عشري القابلين للقيمة null، مع التمييز بين الغياب والصفر. ينطبق هذا التسليم على ملف المستخدم checked x64. بعد كل خطأ أو إعادة محاولة بعنوان مصحح، يصدّر البرنامج صفحة الذاكرة كاملة بحجم 4096 بايت؛ ويتحقق المضيف من اللقطات الـ81 كلها ومن عدادات الإكمال الفعلية دون تغيير مهلة الضيف. تستخدم مراقبة العمليات والخيوط الأولية الأصلية CREATE_DEFAULT_ERROR_MODE؛ إذ يفعّل GoogleTest العلم الموروث SEM_NOALIGNMENTFAULTEXCEPT، الذي قد يجعل Windows يصلح الأخطاء الجاري قياسها تلقائيًا. وبذلك يرصد الاختبار السلوك الافتراضي للنظام دون تأثير سياسة إطار الاختبار.
تدير AddVectoredContinueHandler وRemoveVectoredContinueHandler قائمة مرتبة مستقلة تتشارك مع معالجات الاستثناءات حد 128 تسجيلاً محتفظاً به. بعد قبول معالج استثناء متجهي استئناف التنفيذ، ترى معالجات المتابعة سجل الاستثناء وCONTEXT القابلين للتعديل نفسيهما. يجري التحقق النهائي من السياق بعد هذه الاستدعاءات، بما فيها الاستثناءات المتداخلة وإشعارات DLL. لا يمكن إزالة مقبض عبر عائلة المعالجات الأخرى. يقارن WindowsContinuationTests.cpp ملفات EXE أصلية مع Windows الأصلي للتحقق من الترتيب والإنهاء المبكر وتعديل التسجيلات وإصلاح السياق والتداخل واستدعاءات المحمّل وخروج العملية. يسمح المسار المتجهي المختبر على Windows x64 بالمتابعة مع EXCEPTION_NONCONTINUABLE؛ ولا يثبت ذلك سلوك SEH القائم على إطارات المكدس. لم يُتحقق بعد من التنفيذ الأصلي على ARM64.
تتوفر RtlCaptureContext عبر kernel32.dll وntdll.dll لكل من x64 وARM64. تحفظ طبقتا WindowsProcessContext وIntegerABI المشتركتان PC/SP للمتصل دون تغيير حالة CPU أو LastError. تؤكد ملاحظات Windows الأصلية أعلام x64 بالقيمة 0x10000f، والحفاظ على مناطق home والتصحيح والمتجهات غير المكتوبة، وحقول عناوين x87 القديمة ذات 32 بت؛ وفي ARM64 يُنسخ LR إلى PC ويُصفّر X0/LR في السجل. تأتي السجلات وSIMD وضوابط الفاصلة العائمة من الضيف، بينما تتبع محددات x64 وقناع قدرات MXCSR إعداد CPU الضيف. تفشل الوجهات غير الصالحة أو غير المحاذاة أو غير المتاحة جزئياً قبل الكتابة. تختبر WindowsContextTests.cpp الاستيراد المباشر والبحث لدى المزوّد واستدعاءات VEH والكتابة عبر الصفحات وذرية الفشل. يشغّل scripts/check_windows_context.py البرنامج الأصلي على Windows x64 وARM64، مع اختبار أصلي مستقل لحالة x87 غير الفارغة. لا تثبت ملاحظات ARM64 هذه التنفيذ الأصلي عبر KVM/WHP. تبقى استعادة السياق وتتبع المكدس وجداول الدوال الديناميكية مهام منفصلة. يحدد WindowsProcessServices.def قيود الوحدات بدقة: يعيد البحث في kernelbase.dll الخطأ ERROR_PROC_NOT_FOUND (127)، بما يطابق الملاحظات الأصلية دون اختراع تصدير إضافي. RtlCaptureContext.
يستخدم WindowsProcessSEH المكوّن المشترك X64SEH في os/windows/exception/ ضمن NeverDEmulationWindowsException المتاح دون برامج التشغيل، لمعالجة x64 __C_specific_handler وUNWIND_INFO V1. بعد بحث VEH يدعم المرشحات وfinally والانتقال غير المحلي والتداخل وتعارض فك المكدس وإطارات EXE/DLL المعاد تموضعها، مع حفظ GPR/XMM غير المتطايرة. تشغّل متابعة المرشح VCH باستخدام CONTEXT نفسه. يقارن WindowsSEHTests.cpp عدد 23 سيناريو أصلياً مع Windows أصلي؛ وتتشارك KVM/WHP/Unicorn هذه الدلالات. تشمل ميزانية العملية إعادة فحص أجيال الصور والترويسات وبايتات فك المكدس والنطاقات ومناطق معالج اللغة وروابط IAT. تفشل صراحةً البيانات المعدلة أو الصور المحتفظ بها بعد إلغاء تحميلها. لا تزال SEH لإطارات ARM64 وC++ EH وجداول الدوال الديناميكية وRtlUnwind/NtContinue العامة وفك المكدس عبر حدود استدعاءات المحمّل/VEH/VCH غير مدعومة.
عند وجود EXCEPTION_NONCONTINUABLE وإرجاع مرشح x64 القيمة EXCEPTION_CONTINUE_EXECUTION، يُرسل STATUS_NONCONTINUABLE_EXCEPTION بسياق جديد (0xc0000025، الأعلام 0x81، ومؤشر السجل المرتبط null). يُشغّل VEH مجدداً قبل البحث في المكدس المنطقي المحفوظ، مع حفظ ترتيب finally وهوية إطارات EXE/DLL وميزانيتي العمق والتنفيذ نفسيهما. تشمل السيناريوهات الأصلية البالغ عددها 23 تنفيذات ناجحة عددها 21 وحالتي إنهاء: قبول VEH/VCH متابعة هذا الاستثناء الثانوي يتركه دون معالجة حتى بعد استعادة CONTEXT الأصلي، ويبلغ النموذج عن فشل وقت التشغيل. يساوي عنوان الاستثناء البرمجي قيمة PC المحفوظة؛ ويحدد النموذج عناوين الموزع الداخلي وتخطيط السجلات. Windows x64 CI.
يقارن WindowsDynamicTests.cpp ملفات DLL/EXE أصلية لـx64/ARM64 بملاحظات Windows أصلية مستقلة: المراجع والاعتماديات المشتركة والتحميل المتداخل وتنظيف الفشل والإحالات والخروج والوحدات بلا مدخل وTLS الجديد عند إعادة التحميل. ترفض اختبارات إضافية البيانات المعدّلة ومؤشرات الشيفرة الملغاة وتحافظ على الميزانيات التراكمية ونتائج API المعلقة غير المكتملة. يفرض CI الخاص بـWindows المرجع الأصلي وحالات WHP؛ ولا تثبت الترجمة المتقاطعة أو Unicorn ARM64 تنفيذاً أصلياً لـARM64.
يعيد غياب مكتبة في أي موضع من سلسلة إحالة GetProcAddress الخطأ 127، بينما يعيد LoadLibrary الصريح لوحدة غائبة عن الدليل الخطأ 126. يتحقق المرجع الأصلي وكل خلفية متاحة من السيناريوهات الـ41 المعلنة كلها. في Windows تُرصد العودة بعد تفريغ جميع DLL عدد 16 مرة لكل نوع من DLL. يعيد فشل التهيئة عبر إحالة GetProcAddress أيضاً 127 بعد التنظيف. تحافظ استدعاءات فصل العملية على محتويات مكدس الطرف الذي طلب الإنهاء.
يستخدم WindowsExportTests.cpp ملفات DLL وEXE أصلية لـx64/ARM64 لفحص استدعاءات الشيفرة والبيانات والأرقام المحالة، والأسماء البديلة، والاستعلام أثناء التهيئة، وإعادة التموضع، وحالة الأحرف، والعناصر المفقودة، وLastError، والدورات والأهداف غير المقيمة، والمؤشرات غير الصالحة، وتغيّر البيانات بعد استعلام ناجح. يملك EXE نفسه مرجع Windows أصلياً مستقلاً؛ وحالات WHP إلزامية في CI الأصلي. تقارن اختبارات C ABI/CLI التقارير كاملة. ما زالت أدلة أجهزة ARM64 الأصلية معلقة. تغطي نسخ EXE بجدول تصدير ومن دونه كلا الرسمين وترتيب PEB والفصل وأخطاء الاسم والرقم وNULL.
يقارن WindowsLifetimeTests.cpp آثاراً ثابتة بعمليات Windows أصلية مستقلة وتنفيذ KVM/WHP/Unicorn: الخروج العادي وعودة المدخل وفشلي DLL وأربعة مخارج مبكرة وDLL بلا مدخل. ويتحقق أيضاً من أخطاء الاستدعاءات والميزانية المشتركة وحقول TLS المعاد تموضعها والسعة الإجمالية. يحتفظ مسبار العودة الأصلي بمقبض الخيط الأول ويفحص رمز خروجه وتسلسل إشعارات الخيط/العملية بدقة 64 مرة. تُنهى الخيوط الفرعية الباقية بعد المراقبة؛ ولا يُعد خروج العملية قيمة عودة المدخل.
تغطي NeverDUnpackTests وNeverDUnpackExecutionTests وNeverDUnpackPublicTests استعادة الصور المحزومة؛ انظر فك الحزم. يتحقق UnpackGeneratedTests.cpp من قواعد نقطة الدخول على x86-64 وARM64 ببرنامج يحزمه الاختبار نفسه. يتحقق X64ReturnPrefixTests.cpp من الرجوع القريب ذي البايتين على كل ناقل ومن أن كل رجوع آخر ببادئة يبقى مرفوضًا. ويتحقق WindowsDeferredTests.cpp من المداخل المعتمة ومن رصد العملية المتوقفة؛ ويتحقق ExecutionSessionTests.cpp من مراقبات التنفيذ.
تضيف الذاكرة الافتراضية في Windows دعم VirtualAlloc وVirtualFree وVirtualProtect وVirtualQuery وFlushInstructionCache للعملية الحالية. تدير طبقة OS الحجوزات، وتبقى AddressSpace المرجع للصفحات الملتزم بها والصلاحيات والتخزين الفعلي. تشمل الاختبارات تعديل الشيفرة وأخطاء الوصول وإعادة استخدام ميزانية الذاكرة.
NeverDEmulationWindowsProcess → os/windows/process/; NeverDWindowsProcessTests + NeverDProcessPublicTests: windows-pe64-v1.
تغطي اختبارات الفصل الميزانيات الدقيقة والناقصة، والكلمات الجزئية، وترتيبي البايتات، وهوية الذاكرة غير الملموسة، وحدود الخانات الأفينية الكاملة، والكتابة من أسلاف متأخرين، والإبطال الافتراضي. تفحص C API/CLI توافق v6 والنطاقات غير الصالحة. تُنفذ مخرجات HighC وLLVMC عند O0/O2 مع فحص الإرجاع والذاكرة والمكدس والحالة المحفوظة؛ وليست هذه شهادة تكافؤ أصلي.
تغطي اختبارات التوزيع المحدود المراحل في السجلات والإطار، وترتيبي البايتات، والفروع غير الصالحة القابلة للوصول، والأسلاف المتأخرين، والشروط الداخلية المستنفدة، وحدود البحث المتجاورة. تغطي اختبارات الزيارات العلاقات الحسابية والحلقات المتداخلة وأوضاع الفك وحساب المرور التسلسلي وميزانية العمل الكلية وأولوية العلم القديم. تشغّل CLI مساري C وواجهتي المصدر عند O0/O2، وتتحقق اختبارات C/Python v8 من التخطيط والحقول غير الصالحة وتجاهل الذيول المستقبلية. تتحقق اختبارات التراجع أيضًا من بقاء ميزانية البحث للشروط الأصلية بعد محددات كبيرة محدودة الأهداف وغير ذات صلة، ومن تخصيص آخر تحسين مسموح لمنتج سبق ترشيحه.
ينفذ NeverDLLVMCPhiTests تحديثات حلقات مستقلة وأخرى ذات اعتماد متبادل عند O0/O2، مع صفر تكرارات وحدود التكرار وقيم أولية عشوائية بعرض البتات الكامل. تشترط اختبارات المقروئية عدم إنشاء نسخ محلية للتحديثات المستقلة، والاحتفاظ بالنسخة اللازمة فقط للتبادلات المركبة. وتواصل حالات الفروع وswitch والفروع المنقولة وحلقات التبادل التحقق من الحافة المختارة ودلالات الإسناد المتزامن.
تغطي الاختبارات الخمسة المستقلة في LLVMCInternalExitRegions القطبيتين وعدم تنفيذ الحلقة وتبادلات PHI المتوازية وتركيبات التداخل الأربع وترتيب المراقبة. تتحقق الوجهات المشتركة والاستمرارات المبكرة من البديل القابل للتنفيذ؛ يجب ألا تنشر منطقة مرفوضة بعد حلقة صالحة بنية جزئية. يتطابق إخراج الوحدة والدالة المختارة دون تغيير LLVM. تُقارن LLVM الأصلية وC الناتجة بمراجع مستقلة غير موقّعة عند O0/O2 عبر 294,912 استدعاء، مع مصائد للسلوك غير المعرّف في C.
تتحقق NeverDLLVMCPhiTests أيضاً من مخارج الحلقات المشتركة مع أزواج PHI المختلفة للكتل اللاحقة، وترتيب استدعاءات المراقبة، وذاكرة الخرج، وبقاء IR الخاص بالمستدعي دون تغيير. تقارن C للوحدة كاملة وللدالة المحددة بمراجع مستقلة عند O0/O2. تختبر المقارنات المختلفة والأسلاف الإضافية المعالجة التحفظية.
تتحقق NeverDLLVMCPhiTests من دمج عمليات الحلقات متعددة الحواف الراجعة بواسطة مراجع مستقلة عند O0/O2، وترتيب استدعاءات المراقبة، ولقطات القيم قبل الاستدعاءات المعدلة للذاكرة، والالتفاف المعياري للأنواع الضيقة وتمديد الإشارة. يحافظ إخراج الوحدة والدالة المختارة على IR الأصلي. تشمل الاختبارات الحواف المتعارضة والجذور المشتركة وسمات poison والمعاملات غير المعرفة والإزاحات المتغيرة وعمليات intrinsic المقيدة والاستثناءات والرفض الكامل عند نفاد الميزانية. لا تدمج الدورانات إلا عند تطابق العمليات على جميع الحواف الداخلة.
تشغل NeverDLLVMCPhiTests أيضا المناطق القياسية المنظمة عند O0/O2: حلقات متداخلة مع تغيير ترتيب الكتل، وفروع ماسية، وصفر تكرارات، والتفاف الأعداد الضيقة، واستدعاءات المراقبة في الرأس، وتبادل PHI، والقيم الخارجية الحية، والخطوات المشتركة وحدود إزاحات القمع. تتحقق الاختبارات من ثبات IR الأصلي والدمج إلى ثلاثة متغيرات محلية ومن البديل القابل للتنفيذ للرسوم متعددة المخارج أو غير القابلة للاختزال أو الكبيرة جدا. هذه حالات اصطناعية مستقلة؛ ولا يشكل إخراج المصدر شهادة للاستعادة الأصلية.
يقارن NeverDLLVMCValueTests شيفرة C للحلقات القياسية ذات الأنواع مع LLVM المترجم مباشرة وباستقلال عند O0/O2، مع تفعيل مصائد السلوك غير المعرّف في C الناتجة. تغطي القيم الحدية والمدخلات الحتمية بكامل العرض الضرب الضيق والالتفاف قبل الإزاحة والضرب والإزاحة بعد التوسيع والاقتطاع المنطقي والمقارنات والتوسيع الموقعين والأسبقية والتعبيرات الشرطية والحساب المنطقي والرجوع للعمليات غير المدعومة وتجسيد التعبيرات العميقة. تتحقق الاختبارات أيضاً من ثبات IR الخاصة بالمستدعي وإزالة التحويلات الزائدة.
تغطي NeverDLLVMCPhiTests وNeverDLLVMCValueTests عدادات البايت مع الالتفاف عند الزيادة والنقصان وقيم الخروج المدمجة والاستخدام المضمن بعد الحلقة والقيم الخارجية الحية ولقطات PHI. تتحقق مقارنات مستقلة عند O0/O2 مع مصائد السلوك غير المعرّف من الجمع المركب ورفض الطرح المعكوس والضرب الضيق والأقنعة المنطقية. تشترط اختبارات المناطق المتداخلة عدادات محلية للحلقات ونتيجة منفصلة مع بقاء LLVM المصدر دون تغيير. يجعل اختبار تسمية قابل للتنفيذ أسماء الدوال الخارجية تتعارض مع أسماء النتيجة والعداد المولدة أولاً، ثم يتحقق من بقاء الاستدعاءات وآثارها المرصودة.
تتحقق NeverDLLVMCValueTests من موضعي الفرع المحايد في الجمع والطرح والعمليات البتية، والقيم الأساسية غير المتغيرة، واعتماد التعبيرات المضمنة على القيم القديمة، ولقطات الشروط، واختبارات الأعداد الضيقة، والفروع غير المحايدة، وقيم select المشتركة. يُنفذ C الناتج عند O0/O2 مقابل LLVM مترجم بصورة مستقلة، مع تفعيل مصائد السلوك غير المعرّف. وتتحقق NeverDLLVMCPhiTests أيضاً من اللقطات المتوازية والتهيئة المعتمدة على الفروع التي يجب أن تبقى في النطاق المشترك. يبقى IR المستدعي دون تغيير.
تتحقق NeverDUnicornDecodeTests من بتات EVEX المحجوزة لصيغ السجلات في نماذج CPU ذات AVX-512/APX، ومن أولوية أخطاء ذاكرة ROUND وحفظ الحالة واستئناف التنفيذ. يؤكد برنامج مستقل على مضيف Linux x64 أخطاء المحاذاة للترميز التقليدي وأخطاء الصفحات للصيغ العددية/VEX. لا توسّع اختبارات المحرك هذه التعليمات المقبولة في وضع checked ولا تثبت تنفيذ APX الأصلي.
استخدم بناء CPU بنمط Release. يتطلب HVF الصريح macOS ARM64 أصليًا؛ فعّل Unicorn للمقارنة البرمجية. تُراجع كل نتيجة. تُقاس التهيئة منفصلة؛ يشمل تبديل CPU استدعاءات API والفحوص الوسيطة، بينما تستثني الأحمال الأخرى الإعداد والتحقق.
cmake --build build-cpu --target neverd-cpu-bench --parallel 4
build-cpu/bin/neverd-cpu-bench --backend hvf --samples 7 --warmup 1
build-cpu/bin/neverd-cpu-bench --backend unicorn --samples 7 --warmup 1احفظ الملف التنفيذي المرجعي قبل إعادة البناء. يبدّل Python 3.11+ ترتيب القياس. احتفظ بالإعدادات وتسميات المصدر وبصمات الملفات والعينات الكاملة، ولا تشغّل بناءً أو اختبارات بالتوازي.
python3 scripts/benchmark_cpu.py \
--baseline /path/to/before --baseline-label BEFORE_COMMIT \
--candidate /path/to/after --candidate-label AFTER_COMMIT \
--pairs 15 --output /path/to/new-comparison.jsonعدّ الدخول تشخيص منفصل يضيف كلفة ويشمل مجسات البدء؛ لا تُدرج أزمنته ضمن نتائج الأداء. هذه الأحمال لا تمثل نظام تشغيل كاملًا أو مقارنة بين ISA.
تختبر NeverDLLVMPrivateFrameTests الكتابات المتداخلة وجميع مسارات الدخول وحواف الرجوع وحفظ العناوين وتداخل المخرجات الخارجية والذاكرة غير المهيأة أو المرتبة أو المجهولة والبيانات الوصفية والرفض دون تغيير عند الميزانية الدقيقة أو الناقصة بوحدة. تقارن مراجع مستقلة عند O0/O2 قيم الإرجاع كاملة والكائنات الخارجية وبايتات الإطار مع مصائد السلوك غير المعرّف. الترجمة لأهداف x86-64 وAArch64 وAArch64 كبير النهاية وARM32 لا تثبت الاستعادة الأصلية لهذه المعماريات. أعد NeverDByteMemoryForwardingTests عند تغيير أدوات العناوين والتأثيرات المشتركة.
cmake --build build-release --target NeverDLLVMPrivateFrameTests NeverDByteMemoryForwardingTests --parallel 4
build-release/bin/NeverDLLVMPrivateFrameTests
build-release/bin/NeverDByteMemoryForwardingTestsتغطي NeverDByteCellScalarizationTests الكلمات المتداخلة ومساري دخول وحافتين راجعتين والوصولات العريضة والأحجام غير الأسية للعدد اثنين وترتيبي البايتات وحفظ اختيارات القيم والتزامات poison والكتابة الجزئية فوق poison ورفض الاستخدامات والميزانيات الدقيقة والناقصة عبر كائنات متعددة. يجب أن يزيل مسار Thin/Deep المعتاد المصفوفات المتبقية. تقارن مراجع O0/O2 مستقلة جميع بايتات الخرج البالغ عددها 24 وبايتات الحراسة وقيمة الإرجاع لعدد 8,192 مدخلاً في ثلاث نسخ، أي 49,152 استدعاء مع مصائد السلوك غير المعرف. فحوص ترجمة x86-64 وAArch64 وAArch64 بترتيب بايتات كبير وARM32 منفصلة عن تغطية التنفيذ الأصلي. شغّل هذا الهدف مع اختبارات تمرير البايتات والإطار الخاص عند تغيير عقود الذاكرة المشتركة.
cmake --build build-release --target NeverDByteCellScalarizationTests --parallel 4
build-release/bin/NeverDByteCellScalarizationTestsتختبر AndroidMutexTests.cpp ببرامج مستقلة O0/O2 وتغليف عادي/APS2/RELR ثلاثة أنواع mutex، وعدة منتظرين، والمنافسة المتكررة، والتحرير النهائي للقفل المتكرر، وerrno، والأحداث، والذاكرة غير الصالحة، والتعطل المتبادل وحد التعليمات التراكمي. تعمل الحالات على Unicorn وKVM/WHP/HVF المتاحة مع تخطٍّ صريح لغير المتاح. لا تثبت هذه النتائج التكافؤ مع جهاز Android أو SMP متوازٍ.
يفحص HighControlFlowSemantics.DeepStableContainersPreserveEveryReturnPath أجسام الكتل والحلقات وswitch والاستثناءات ذات 48 مستوى باستخدام مفسّر مستقل على المسارات التي تدخلها والتي تتجاوزها. يكشف حد زمني واسع تكرار الاجتياز العودي. يخص هذا الاختبار HighIR المهيكل؛ وتظل استعادة طرق الصورة كاملة بحاجة إلى فحوص مستقلة وكاملة للقائمة والتبعيات.
يفحص SwiftOnceSources.EarlyReturnsKeepExactObjCOnceThunkProofs حالات ARM64/x64 ذات استدعاءات retain المدمجة أو المنفصلة. يرفض EarlyOnceCopyReturnsRequireTheSameCompleteTail التخزين المعدل و retain المفقود أو المعاد ترتيبه والتحميل المرتب والنتائج المعدلة والمداخل الخارجية. يفحص IgnoredNestedReturnCopiesDoNotObserveOnceContext مخرجي callback الممكنين ذي النتيجة void ويعيد فحص تدفق المصدر بعد الإسقاط.
يقارن HighControlFlowSemantics.ReturnTailCopyKeepsTheOuterLabelOwner مسارات الدخول والتجاوز بمفسر مستقل عند تكرار عنوان داخل كتلة متداخلة. يحافظ ReturnTailCopyIncludesTheFirstChildOfItsLabel على الحالة الصحيحة للأب وأول عبارة فرعية وعلى عملية الإسناد. لا تحل هذه الفحوص المحددة محل المقارنات الكاملة للطرق والتبعيات الأصلية.
يفحص JumpTailCopyKeepsTheOuterLabelOwner قاعدة الملكية نفسها لذيول القفز.
يفحص EarlyStringGetterReturnsKeepOnlyInertOnceAnchors نقاط ارتساء التعليمات الفارغة بين الإرجاع المبكر واستدعاء once، ويرفض الاستدعاءات أو التخزين بينهما.
SwiftOnceSources.ObjCThunkRootsShareTheNestedCallbackProof يفحص برهان الجذر المشترك والرفض بعد أن تبدأ عقدة ورقية بملاحظة سياقها.
يتحقق SourceABI.SwiftPointActionRequiresTwoDoublesAndContext / ObjCCallHints.CoreGraphicsPointActionsKeepSwiftFloatingCarriers من المعماريتين ويرفض تغيّر المزوّد والاستيرادات الضعيفة وتعارض التخزين وناقلات ABI القديمة. ينفذ HighCSourceCalls.SwiftCoreGraphicsPointActionsKeepCoordinatesContextAndOrder كود C المولّد عند O0/O2 باستخدام تحقق مستقل من ناقلات Swift، لفحص بتات الإحداثيات بما فيها الصفر الموقّع والأعداد دون الطبيعية وNaN، وهوية المستقبِل وترتيب الاستدعاء وقيم الحماية. تثبت هذه الفحوص ABI الاستدعاء، ولا تثبت الاستعادة الكاملة للطرق العليا.
يتحقق NativeSourceHints.CGContextCGRectMethodKeepsOrdinaryAndSwiftContextInputs من شجرة الأسلوب كاملة ومواضع النقل الدقيقة، بما فيها الأعضاء الخاصة والتواقيع المرفوضة. يختبر SwiftFieldReceiver.CGRectMethodSelfKeepsItsLogicalParameterIdentity وCGRectMethodRejectsChangedEntryAndReceiverParameter خط المعالجة وإعادة تحقق النشر، ويرفضان تغيير فهرس self أو المدخل أو نوع الوسيط. تشمل سجلات المترجم أربعة أهداف macOS/Mac Catalyst؛ ويظل تصريح المدخل محصوراً في arm64. يشغّل HighCSourceCalls.SwiftCGRectMethodKeepsContextReceiverAndAllCoordinateBits شيفرة C الناتجة عند O0/O2 مقابل مرجع مستقل لناقلات Swift القياسية، للتحقق من بتات الإحداثيات الأربعة ومؤشري context/self المنفصلين والاستدعاء الوحيد وحواجز التخزين.
تشغّل NeverDLowInstructionBoundaryTests اختبارات منشأ تعليمات LowIR دون بناء جميع تجهيزات مجموعة الرفع. يتحقق BackwardSharedReturnEpilogueKeepsReturnAndCallerFrame من تحرير المكدس المحاذى عبر ADD وLDP ذي الفهرسة اللاحقة، بما في ذلك استعادة سجل الربط في المستدعي؛ وتبقى RET X30 الأصلية والمدخل المشترك ممثلين بصورة مستقلة. يرفض BackwardSharedReturnEpilogueRejectsChangedReturnAndOwnership سجل عودة آخر وBR X30 والتحرير الغائب أو غير المحاذى والاستعادة الضيقة والمداخل الداخلية والتصحيحات والتعيينات القابلة للكتابة أو الملتبسة والمدخلات القابلة لإعادة التموضع والصيغ الأخرى. لا يثبت فك الذيل المشترك ABI أصلية: غياب الحفظ أو تخصيص المكدس في المستدعي يظل سببًا لفشل دليل الإطار القائم.
يغطي NeverDOwnInteriorCallTests استدعاءات x64 المباشرة إلى تسمية داخل نطاق فك اللف الخاص بالدالة نفسها. يُرفع الاستدعاء الذي يُجرى فقط من أجل عنوان العودة الذي يدفعه على أنه دفع ثم قفز، ويُشغَّل كود C الناتج للحالتين الخطية والحلقية عند -O0 و-O2 مع AddressSanitizer ومصائد السلوك غير المعرّف. يبقى الهدف الذي تسحب عوداته عنوان العودة الخاص بذلك الاستدعاء استدعاءً عاديًا. أما العودة التي قد تسحب عنوانًا دفعته الدالة بنفسها، بعد استعادة غير متوازنة أو تبديل للمكدس، فتؤدي إلى رفض الدالة مع تحديد تلك العودة.
يفحص ObjCCallHints.CIImageAffineValueKeepsProviderAndPhysicalCopyCarrier جهة CoreImage ومصنع CIImage والسجل المنطقي الكامل ذي 48 بايت ومؤشر x2، ويرفض الجهات المفقودة أو الخاطئة وx86_64 والتصريحات المتعارضة. يحافظ ObjCImageValueCopy.OriginalFrameAndCompleteBodyAuthorizePublication على الاستدعاء الأصلي مستقلاً عن إسنادات النتيجة عند عنوان الآلة نفسه. يرفض RejectsChangedCopyCallBodyAndCurrentImage عدد 24 تعديلاً للإيصالات والمعاملات والكتابات والإطارات والبيانات الوصفية والاستيرادات والاستدعاءات المكررة وIR المحفوظ، بما في ذلك تعديلات متسقة على MedIR وHighIR معاً. ينفذ GeneratedCExecutesAgainstIndependentPhysicalCopyABI الشيفرة C الناتجة دون تعديل عند O0/O2 على ARM64 مقابل دالة تتلقى مؤشر x2 الذي رُصد مستقلاً من المترجم؛ ويتحقق من أنماط البتات الستة وهوية المستقبل والمحدد وتنفيذ واحد والكائن المعاد والكتابات القانونية إلى النسخة وثبات المدخلات وحواجز الحدود. تتجاوز المنصات الأخرى اختبار التنفيذ المادي هذا.
يرفض ObjCCallHints.CurrentMethodEncodingMustAgreeWithCachedDeclaration أي ABI مخزّن لا يطابق ترميز الطريقة الحالي غير الفارغ أو محددها؛ ويحتفظ العملاء الذين يوفرون التصريح وحده بعقدهم السابق.
يغطي DarwinIndirectRecordCalls.MatrixFrameEffectsRequireExactCurrentContract عقود المصفوفات والتحويلات الحالية و22 تعديلًا مرفوضًا للعقد. يثبت ObjCAffineImageValueCopy.CurrentProducerInitializesThePublishedCopy وصول نتيجة SDK إلى نسخة CoreImage وإعادة بناء الجسم المستقلة للنشر. يفحص RejectsWrongProducerFrameAndSavedIR اثني عشر تعديلًا لكل منتج، تشمل كتابات الإدخال المفقودة والنتائج خارج الإطار ومزودي الرموز أو حوامل ABI الخاطئة وإعادة استخدام إدخال Concat المستهلك. يشغل GeneratedCMatchesOriginalMachineAndSDKResults كود C المولد دون تعديل وكلمات ARM64 الأصلية مقابل CoreGraphics الأصلي عند O0/O2 على Apple ARM64؛ تقارن 1000 حالة لكل منتج جميع بايتات النتيجة الـ48، وسجلي الإدخال، وهوية المحدد والمستقبل، واستدعاءً واحدًا، والكائن المرتجع، وكتابات النسخة الخاصة وحدود التخزين. تتخطى الأنظمة الأخرى اختبار SDK الأصلي.
يفحص MatrixFrameEffectsRequireExactCurrentContract أيضًا مستهلك CGRect و22 تعديلًا مرفوضًا. يتحقق ObjCAffineImageValueCopy.CGRectInputUsesTheSameCurrentFrameOwner من التسلسل: دوران ثم استعارة CGRect ثم إعادة التهيئة بالدوران ثم نشر CoreImage. يرفض CGRectBorrowRejectsExpiredInputsAndChangedABI ثمانية تعديلات على التهيئة والحدود والاستيرادات وحوامل ABI. يشغل GeneratedCMatchesOriginalMachineAndSDKResults هذا التسلسل أيضًا عند O0/O2 في 1000 حالة مقابل كلمات التعليمات الأصلية وSDK الأصلي، مع فحص الزاوية المحفوظة وجميع بايتات النتيجة الـ48 والكائنات وقيم الحماية.
يتحقق FrameMetadataAccessorUsesCurrentCatalogAndABI من التصريح المشترك وحاملي الاستجابة ونشر witness الإطار الحالي. يرفض FrameMetadataAccessorRejectsChangedImportAndBytes الاستيرادات الضعيفة وتغييرات المزوّد/الاسم/addend والطلبات ذات العناوين الخاصة وعمليات spill الجزئية وإعادة التحميل الخاطئة وتغيير الاستدعاءات الأصلية. يستدعي مرجع مقارنة ARM64 الأصلي مع C المُولّد أيضاً موصل البيانات الوصفية الحقيقي لـ Foundation URL: ينفذ كل فرع 2048 حالة عند O0/O2 ويتحقق من اختيار witness الديناميكي وجميع بايتات النتائج وحفظ المدخلات وعدد الاستدعاءات والقيم الحارسة. لا يثبت ذلك التخصيص الديناميكي للمكدس أو تأثيرات ذاكرة witness.
يغطي AArch64ExclusiveTests.cpp العروض والأزواج وصيغ acquire/release وتداخل السجلات والأسماء البديلة والأخطاء واللقطات وإلغاء المراقبين أو فشلهم وتنافس وحدات CPU. ويغطي RAMReservationTests.cpp الكتابات المتطابقة وABA وإعادة التخصيص والتراجع وتأثير تعليمات السلاسل وENTER في KVM/Unicorn. تنفذ عينات عمليات Windows ARM64 الأصلية حلقات حصرية. يشغّل scripts/check_aarch64_exclusives.py التعليمات الأصلية ويسجل استثناءات المحاذاة في Windows ARM64 CI. لا تثبت هذه المشاهدات تنفيذ خلفيات ARM64 KVM/WHP؛ وتبقى الملفات غير المتاحة مسجلة بوضوح كتغطية متجاوزة. تغطي الحالات نفسها Unicorn البرمجي والتداخل بين العقود والكتابات المتطابقة وABA والأسماء البديلة القابلة للتنفيذ ضمن التشغيل نفسه، إضافة إلى DC ZVA والإلغاء بواسطة المراقبين.
يشغّل windows-alignment-oracle.yml مسبار ARM64 أيضًا: تغطي 1,320 مشاهدة كل إزاحة غير محاذاة وأربعة تسلسلات تحميل وتخزين وذاكرة قابلة للكتابة أو للقراءة فقط أو محظورة أو عابرة لحدود الصفحات. يحتفظ المسبار بعرض قيم السجلات الابتدائية كاملًا ويسجل أي كتابة جزئية معتمدة قبل الخطأ. يقارن WindowsExclusiveProcessTests.cpp عدد 1,320 مشاهدة أصلية لـ Windows ARM64 بالبصمات الأصلية في WindowsExclusiveNative.def. يطبّع مواضع الشفرة والبيانات فقط، مع إبقاء قيم السجلات وبيانات الاستثناءات وتأثيرات RAM.
يغطي AArch64AtomicTests.cpp عدد 168 ترميزًا مستقل التجميع لتعليمات LSE، وتداخل السجلات والمقارنات الموقعة والصلاحيات والإلغاء والحجوزات المادية ونقل NZCV. يجمع scripts/check_aarch64_atomics.py عدد 1,100 سجل أصلي من Windows ARM64 يتضمن النتائج وسياق الاستثناء ونطاق RAM كاملًا؛ وترفض اختبارات المحلل الأدلة الناقصة أو غير المتسقة. يظل تنفيذ KVM/WHP الأصلي بحاجة إلى تحقق مستقل. ينفذ WindowsAtomicProcessTests.cpp اختبار تراجع العملية checked، ويحفظ WindowsAtomicResults.def بصمات السجلات الكاملة.
تستخدم الأهداف الأصلية الثابتة بنيويًا آلية الجدولة الحالية مع التحقق من إمكانية التنفيذ مباشرة. ولا يحتفظ الهدف الرمزي الوحيد بالمحمول الوارد إلا بعد تعداد شامل. تتحقق اختبارات الانحدار من 128 انتقالًا ثابتًا ضمن ميزانية استعلامات التنفيذ الخطي، ومن 32 انتقالًا محسوبًا باستعلامي تعداد لكل انتقال، مع الحفاظ على بتات العنوان العليا الحرة ومجالات الفروع. تُرفض تغييرات الحالة الكاملة وغياب المحاذاة وحدّ الأهداف الصفري وميزانيات الاستعلامات أو التعليمات غير الكافية. تظل فحوص رفض الأهداف المتعددة والتعداد غير المكتمل مطلوبة.
يحتفظ الفرع الأصلي بالمجال الوارد على حافة واحدة فقط بعد اكتمال إثبات UNSAT الذي يستبعد الحافة الأخرى. تتحقق الاختبارات من 32 انتقالًا شرطيًا في كلا الاتجاهين ضمن 512 بوابة للمحلّل، ومن ميزانيات الاستعلام الدقيقة والناقصة باستعلام واحد ونفاد البوابات. يجب رفض المحاذاة المعدّلة أو المفقودة والمقارنات المعكوسة والحالة النهائية المعدّلة؛ وتظل اختبارات التحكم غير المعرّف الاعتباطي وإمكانية تنفيذ كلتا الحافتين مطلوبة.
تسجل ذاكرات التخزين المؤقت للترميز البتي وذاكرة الاجتياز عقد التعبيرات والمتغيرات التي تم الوصول إليها فقط. يتحقق NeverDSolverTests من المعرّفات العالية المتناثرة ونمو السياق بين التأكيدات التزايدية وإعادة استخدام البتات المخزنة واستخراج النماذج وتغيير الافتراضات. تظل التعبيرات العريضة غير المرتبطة دون ترميز؛ ويستمر رفض مخالفات العرض التي يصل إليها الاجتياز والجذور غير الصالحة ونفاد ميزانيات البوابات.
تختبر SourceFrameAnalysis.CallStorage* مواضع الاستدعاء والتعريفات الواصلة والتهيئة والحشو والتسرب والحدود والدورات دون منح بوابة مصدر. تختبر ObjCFrameBlockBorrows.* الاستعارة المتزامنة المحدودة بالواصف و19 حالة تغيير في الاستيراد والترويسة وABI والتعليمات. يبقى الحشو غير مثبت، وتُرفض حقول الملكية غير المهيأة؛ يظل بناء الكتلة وقراءة الالتقاط وإغلاق الاستدعاء فحوص نشر مستقلة.
تغطي اختبارات نشر block والنسخة أيضاً نطاقين منفصلين بحجم 48 بايت، وتداخل الوصف، وتغيّر أجسام ردود النداء، وتعليمات الآلة وIR القديمة، ومواضع الاستدعاء المنفصلة عن الجسم، وترتيب الإسقاط الدقيق. يفحص MixedWidthFrameCopiesMeetEveryInitializedByte وFrameCoverageCannotHideMissingBytesOrPointerJoins تخزين 8/16 بايت بترتيبي الدمج، والبايتات المفقودة، والإبطال بعد الاستعارة القابلة للكتابة، وهويات المؤشر الباقية بعد الكتابة الجزئية.
تغطي اختبارات علاقات الحلقات قيم الدالة المؤقتة الثابتة والمتغيرة مع تكرارات اعتباطية، وإزاحات مستقلة، وخطط مقترنة، ونطاقات جزئية وغير محاذاة، وترتيبي البايتات ورتباً مؤقتة. يبقى التخزين الجديد في جانب المرشح عند التركيب الأصلي. يُرفض التصديق عند غياب البادئة أو وجود بايتات غير معلنة أو غير معرّفة أو إسقاط خاطئ أو إسناد مفقود أو سلوك متغير أو تعاريف متعارضة. تنجح ميزانيات التنفيذ والاستعلام والملاحظة الدقيقة ويفشل الحد الأقل بوحدة؛ ولا يزيد الاستدلال ميزانية البرهان اللاحق. تبقى الأعمار مرتبطة بالبصمة دون إثبات ABI أصلي عادي.
تختبر علاقات الحلقات الأصلية الجمع الشرطي المؤجل وحدود الرفض غير المدققة عبر عدد اعتباطي من التكرارات. تعيد الخطط اليدوية والمستنتجة فحص مجال الدخول والاستقراء كاملاً؛ وترفض الشهادات عند إمكان الوصول إلى فرع غير صالح أو تغيير تحديث أصلي أو نفاد ميزانية الاستعلامات أو التعليمات. تربط الاختبارات بايتات الحدود غير القابلة للوصول بعد تعديلها وتحافظ على الافتراضات الصارمة ورفض الخطط المشوهة، وتفحص الشاهدين والخيارات المجمعة ورفض الواجهات الثابتة والتعليمات المتداخلة. يربط المخطط الدلالي 17 هذا القبول؛ ويبقى ABI الأصلي العادي وتركيب المصدر التزامين مستقلين.
تغطي ObjCSuperGetterSources جالبات CGRect بأربع حوامل، وعشرة تعديلات مرفوضة في بيانات النشر، ومستدعي Boolean وCGRect الذين يشتركون في جسم الآلة. يتحقق اختبار التنفيذ عند O0 وO2 من بتات النتيجة الدقيقة (بما فيها الصفر السالب واللانهاية وحمولة NaN)، وهوية المتلقي والفئة، وتحميل المحدد بعد استدعاء البيانات الوصفية. ينفذ Apple ARM64 مقطع thunk الأصلي للمترجم وC المولد؛ وتنفذ الأجهزة الأخرى C المولد وفق ABI الأصلي للسجلات.
تغطي اختبارات LowIRLoopInference عدادات مسقطة بعرض 8 و24 و32 بت مع بتات عليا ابتدائية حرة، والاتجاهين، والسجلات، والأطر، ومؤقتات الدالة وترتيبي البايتات. تنجح البراهين الذاتية الكاملة وتُرفض النتائج المعدلة والتوقف عن التقدم والالتفاف الضيق وتجاوز مخارج المساواة. تنجح الميزانيات الدقيقة للعمليات والاستعلامات والمسارات ومرشحي الرتبة والتوسيع، وتفشل عند إنقاص وحدة واحدة. وتُفحص ميزانيات العمليات والاستعلامات والملاحظات للبرهان النهائي على نحو مستقل.
تختبر ObjCCallHints.SDKRecordData* السجلين الخارجيين وإزاحات جميع قيم double ومعماريتَي Darwin والأسماء البديلة للمزوّد، مع الاستيرادات المعدّلة والضعيفة والمكتبات المفقودة والتعارضات في التصحيحات والتخزين القابل للكتابة والنطاقات الناقصة. يفحص python3 -m unittest scripts.tests.test_generate_darwin_record_data_declarations scripts.tests.test_generate_darwin_data_declarations تعارض الملفات والتخطيطات البديلة والأحجام والمحاذاة غير الصالحة وTLS والتصدير الخاص بكل معمارية. يُعاد إنتاج الفهرس بواسطة generate_darwin_record_data_declarations.py مع SDK وlibclang المثبّتَين ومسار المخرجات و--check؛ ولا يثبت هذا الفحص تهيئة النتيجة الأصلية غير المباشرة أو استعادة الطرق.
تغطي اختبارات LowIRLoopInference.ProjectedBounds* مخارج المساواة مع بتات عليا حرة في العدادات والحدود، وحقولًا بعرض 8 و24 و32 بت، وأنواع التخزين الثلاثة وترتيبي البايتات. ترفض البراهين تغيير الحدود والتوقف عن التقدم وتجاوز المخارج والالتفاف وتغيير بايتات الإدخال العليا المرصودة. وتبقى ميزانيات الاستدلال والبرهان مستقلة مع فحص الحد الدقيق والحد الأقل بوحدة واحدة.
تغطي اختبارات LowIRLoopInference.LateCounter* التهيئة الثابتة التي لا تكشف حقول 8 و24 و32 بت إلا بعد التعميم، عبر السجلات والإطارات ومتغيرات الدالة المؤقتة وترتيبي البايتات والبتات العليا الحرة للحدود. تنجح براهين مخارج المساواة، وتُرفض حالات التوقف عن التقدم وتجاوز المخارج وتغير الحدود وتعديل البايتات العليا المرصودة. تُفحص الميزانيات الدقيقة والأقل بوحدة واحدة للاستدلال والبرهان النهائي بصورة مستقلة.
تختبر LowIRLoopInference.ProjectedComparisonBits* المساواة الضيقة المخزنة عند رؤوس الحلقات مع بتات عليا حرة للحدود: 8 و24 و32 بت، وثلاثة أنواع تخزين، وترتيبا البايتات، وتهيئة ثابتة أو مع بتات عليا. ترفض البراهين تغيير المخزن والبايتات العليا المرصودة والحدود، وكذلك التوقف عن التقدم وتجاوز المخارج. تُفحص الميزانيات الدقيقة والأقل بوحدة واحدة للاستدلال والبرهان النهائي بصورة مستقلة.
تغطي اختبارات LowIRLoopInference.OrderedComparisonBits* الترميزين المنطقيين لمخارج الترتيب غير الموقع مع عدادات 8 و24 و32 بت، وثلاثة أنواع تخزين وترتيبي البايتات. ترفض البراهين التحديثات غير المنتهية وتغيير المقارنات أو الحدود أو البايتات العليا المرصودة. تبقى الميزانيات الدقيقة والأقل بوحدة واحدة مستقلة. تعيد تجهيزات الاختبار التي تغير الترميز ربط ملخص العمليات الأصلية قبل البرهان.
تغطي اختبارات LowIRLoopInference.MutablePrefixBounds* حدودًا مشتقة من 8 و24 و32 بت مع تغير البتات العليا، وثلاثة أنواع تخزين للعداد، وترتيبي البايتات، ومخارج مباشرة أو مخزنة. وتفحص عدم الانتهاء وحدود المساواة المتحركة وتغييرات البتات العليا والمقارنات المرصودة والميزانيات الدقيقة والأقل بوحدة. قد ينتهي حد متحرك بمقارنة ترتيب غير موقعة عند الالتفاف، وله اختبار مستقل ببرهان كامل.
يثبت LowIRLoopInference.SharedTemplatesFitIndependentOperationBudgets العدادات الجزئية المتداخلة ضمن 1,024 عملية استدلال و640 عملية إثبات مستقل. تُشارك التعبيرات النقية المتطابقة وقراءات البادئة الثابتة فقط داخل إعادة بناء واحدة لنقطة القطع، مع الحفاظ على هوية المعاملات وعرض المخرجات وفضاءات المواقع. تراقب الاختبارات الكلمات الكاملة للعدادات والحدود، وترفض حساب البادئة المعدّل والميزانيات التي تنقص عملية واحدة. تظل حالات السجلات والإطارات والقيم المؤقتة للدوال وترتيب البايتات وعدم الانتهاء الموجودة مطلوبة.
تتحقق اختبارات LowIRLoopInference.CompletedEntailments* من عزل الجلسات بين حلقات إطار منتهية وغير منتهية بكلا ترتيبي البايتات، ونفاد حدود المحلّل والعقد، وميزانيات الإثبات المستقلة. تتحقق اختبارات الحدود المتغيرة من ميزانية الاستعلامات المنطقية الدقيقة والأقل بواحد مع إصابات الذاكرة المؤقتة؛ وتتحقق الإثباتات الأصلية ذات السياقات المتكررة من مراعاة المجال عند إعادة الاستخدام.
LowIRLoopInference.IncrementalEntailmentsKeepRollingBudgets يتحقق من إعادة استخدام المرمّز داخل نطاق قيود واحد. يؤدي تغيير النطاق إلى التخلص من المرمّز؛ وعند استنفاد السعة التراكمية للبوابات، تجري محاولة واحدة فقط بمرمّز جديد تُحتسب استعلامًا إضافيًا. تبقى كلمات العدادات والحدود كاملةً مرصودة في كلا ترتيبي البايتات، مع اختبار ميزانية الاستعلامات الدقيقة وتلك الأقل باستعلام واحد، ورفض تجاوز حدود البوابات أو العرض أو البحث، وميزانية مستقلة للإثبات النهائي.
LowIRLoopInference.RebuiltCounterLanes* يغطي التحديثات المسقطة المطابقة تمامًا عندما تُعاد صياغة بتات العداد الأخرى من قيم البادئة أو تتغير بشكل مستقل. تشمل حالات السجلات والإطار والقيم المؤقتة للدالة كلا ترتيبي البايتات، وعدادات بعرض 1 و3 و4 بايتات، وشروط خروج مباشرة أو مخزنة، مع رصد العدادات والحدود والوسوم كاملةً. يجب الاستمرار في رفض حذف وسم علوي مرصود، والتحديثات غير المنتهية، وغياب حراس الخروج، وميزانيات الاستدلال أو الإثبات الأقل بوحدة واحدة. لا يقترح التطابق البنيوي للعلاقة التكرارية سوى التوسيع والرتب؛ وتظل إثباتات الانتقالات الكاملة والإثبات النهائي مطلوبة. تغطي ميزانيات ثابتة للعمليات والاستعلامات أيضًا العدادات الرمزية المسقطة، دون تحويل التطابقات العرضية في البادئة الثابتة إلى علاقات إضافية.
تغطي LowIRLoopInference.ProjectedCounterCopies* حلقات متداخلة تنسخ جزءًا من العداد عبر كلمة ذات وسم مستقل قبل زيادته. تشمل حالات الحالة الكاملة البالغ عددها 144 السجلات والإطارات والقيم المؤقتة للدالة وترتيبي البايتات وأجزاء من 1/3/4 بايت وشروط خروج مباشرة أو مخزنة، مع نسخ الكلمات الكاملة للمقارنة. يجب إثبات المساواة المسقطة في حالات الوصول المحفوظة وكل انتقال وارد، وتبقى البتات العليا مستقلة. يمكن لإثبات الاستلزام ضمن مجال الانتقال تحديد تكرار جمعي عبر معاملات مختلفة. يستمر رفض حذف الوسوم العليا والتحديثات غير الصالحة وغياب شروط الحماية ونقص ميزانية الاستدلال أو الإثبات النهائي بمقدار وحدة واحدة.
تغطي LowIRLoopInference.TransferredCounters* عدادًا ينتقل بين مواضع تخزين مختلفة عند نقاط القطع، بينما تستطيع حلقات أخرى تجاوز كل نقطة. تقترح عمليات النقل الرمزية الدقيقة بخطوة واحدة شروط حماية للعداد المصدر وترتيبًا بديلًا يقرأ موضعًا مختلفًا عند نقطة واحدة؛ وتظل جميع الشروط والترتيبات بحاجة إلى إثبات كامل للانتقالات. تشمل حالات الحالة الكاملة البالغ عددها 192 السجلات والإطارات والقيم المؤقتة للدالة وترتيبي البايتات وعدادات من 1/3/4/8 بايت والوسوم المستقلة وحالات مقارنة ذات مواضع ثابتة. تُرفض النتائج أو الوسوم المتغيرة وتعيينات الترتيب غير الصالحة والتحديثات غير المنتهية وغياب الحماية ونقص ميزانية الاستدلال أو الإثبات النهائي. يستخدم الاجتياز حد العقد الرمزية الحالي، ويمكن إبقاء ميزانية محددات الرسم الاختيارية عند الصفر. تشمل الحالات التناقص إلى الصفر والتزايد حتى حد مُدخل. عند اكتشاف عداد جديد، يؤجَّل حذف الحدود وشروط حماية الجزء حتى إعادة بناء قوالب جميع نقاط القطع؛ وتستمر خطوات التوسيع المعتادة والإثبات المستقل.
تغطي اختبارات LowIRLoopRefinement.GuardedCuts* وBinaryLowIRLoopRefinement.GuardedCuts* العناوين المتكررة والسجلات والإطار والأعلام وترتيبي البايتات والمسارات غير المختارة المحدودة والدورية والتداخل والطرف الخاطئ وتعميم البادئة وشواهد القيم غير المعرّفة والبيانات الوصفية والملخصات والميزانيات. تثبت اختبارات أصلية مستقلة سياقي R10 عند عنوان حلقة واحد وأسبقية الحدود غير المدققة. يبقى إثبات ABI العادي عملًا مستقلًا.
تغطي اختبارات BinaryLowIRLoopInference.NativeSelectors* سياقَي سجل وسياقات لا يميزها إلا الإطار واقترانات ثلاثة مجالات وقوالب لا يمكن فصلها وتغييرات المصادر والجسم الأصلي والميزانيات المستقلة الدقيقة أو الأقل بواحد. عدد التكرارات غير مقيد ولا تُضاف ثوابت دخول.
يفحص DarwinIndirectRecordCalls عقد MakeScale الحالي و22 تغييرًا في الاستيراد وABI، ثم يستخدم نتيجة خاصة كاملة بحجم 48 بايت عبر البرهان المشترك للنسخ بالقيمة. تُرفض نطاقات النتائج غير المحاذاة أو المزاحة أو المتداخلة أو الخارجة عن الإطار. ويُرفض أيضًا حذف أثر الكتابة المؤكدة حتى مع إبقاء ABI الكامل للإرجاع.
يرفض SourceFrameAnalysis.IncomingResultAddressNeedsCompleteEntryIdentity عشرة تغييرات في الدخول أو الحامل أو الكتابة وغياب ABI الدخول. يعيد NativeSourceHints.IndirectResultTailCallRetainsExplicitOutputAddress رفع الاستدعاء الطرفي المباشر ويتحقق من معامل الإخراج الصريح وست كتابات وبوابة النشر.
يتحقق NativeSourceHints.FourDoubleCallerDemandNeedsEveryUnchangedCarrier من المسارات المنخفضة الأربعة والكتابات العليا المستقلة وتسعة تغييرات في التصريح أو التحكم. يرفض FourDoubleReturnRequiresEveryComputedLowLane اثنتي عشرة حالة لنتائج ناقصة أو عقود غير سارية. يقارن DarwinNativeRecordReturns.FourComputedDoublesExecuteAtO0AndO2 جميع بايتات النتيجة البالغ عددها 32 بمرجع حسابي مستقل في 2048 حالة لكل مستوى تحسين.
يشغّل DarwinIndirectRecordCalls.AffineInvertSnapshotsItsCompleteAliasedInput عدد 2560 حالة عند كل من O0 وO2، مع مواضع إدخال وإخراج متطابقة أو متداخلة أو منفصلة. ويتحقق من أنماط بتات الإدخال واستدعاء واحد وجميع بايتات النتيجة الـ48 وكامل مساحة التخزين المحمية. هذا مرجع للنسخ المادي واللقطة، وليس تنفيذًا لآلة الأصل أو SDK الأصلي. يحتفظ اختبار عقود المصفوفات والتحويلات الحالية برفض 22 تغييرًا لكل عقد.
يشغّل DarwinIndirectRecordCalls.AffineTranslatePreservesScalarBitsAndSnapshotsAliasedInput عدد 2560 حالة عند كل من O0 وO2، ويتحقق من نمطي بتات القيمتين، وحقول الإدخال الستة، واستدعاء واحد، وكل بايتات الإخراج والتخزين المحمي مع مواضع متطابقة ومتداخلة ومنفصلة. تُرفض أربعة تغييرات في ABI للقيم العددية و22 تغييرًا مشتركًا في الاستيراد/ABI. يتحقق البديل البتي من الوسائط الفعلية واللقطة؛ وليس مرجعًا رياضيًا للترجمة ولا تنفيذًا للشيفرة الآلية الأصلية.
NativeFloatingReturnProof.HFAResultFieldsNeedTheExactCompleteDefinedCall يغطي تسعة اختيارات للحقول ويرفض سبعة عشر تغييرًا في الاستدعاء أو الحامل أو العرض أو الإزاحة أو SSA. يرفض HFAFieldExtractionNeedsADominatingCall منتجًا في مسار شقيق. يرفع NativeSourceHints.HFAFieldTypeRequiresCurrentCallAndFrameProofForPublication مستدعي ARM64 من خمس تعليمات، ويعيد رفع النتيجة العددية المستنتجة ويفحص بوابة المصدر؛ ويُرفض المزوّد الخاطئ أو غياب استعادة LR/SP. تثبت هذه الفحوص سلوك نوع المصدر وإسقاطه، وليس تنفيذ جسم الآلة الأصلي.
توضح جدولة التعريفات الاستباق الصريح على CPU0 ودلالات الساعة الافتراضية والحدود الحالية.
SwiftOnceSources.FoldedObjCGetterTailsExecuteOnceAndRetainsAtO0AndO2 يطوي ذيول إرجاع ARM64/x64 الفعلية، مع retain مدمج أو منفصل ومحمولات منفصلة أو مضمَّنة، ثم ينفذ C الناتج باستخدام بدائل وقت التشغيل عند O0/O2. يفحص بتات النتيجة، والتهيئة مرة واحدة، وترتيب الاستدعاءات وتغيّر القيمة المخزنة. يرفض FoldedObjCGetterTailsRevalidateCurrentStorageAndCalls تغييرات العرض والترتيب والعمليات الجوهرية والتخزين والنتيجة والاستدعاءات والاستيرادات الحالية حتى مع خطة محفوظة. هذه فحوص مصدر وبدائل مضبوطة، وليست تنفيذ آلة WMF الأصلية أو وقت تشغيل Swift الأصلي.
تغطي اختبارات SourceFrameAnalysis.CompleteOutput* البوادئ الكاملة والقصيرة ودمج جميع مسارات العودة وكتابات استدعاء SDK الطرفي والبايتات الناقصة وتسريب المؤشرات وقيود حوامل ABI. ترفض حالات المستدعي الشهادات الناقصة أو القصيرة وسوء المحاذاة وتجاوز حدود الإطار والتداخل مع السجلات المحفوظة والأسماء المستعارة وإبطال الحقائق بكتابات لاحقة والتداخل مع القيم المعتمة الحية. تعيد NativeSourceHints.CompleteNativeOutput* التحقق من منتجين ومستهلكين ARM64 مجمّعين، وتتطلب كامل نطاق إدخال SDK وترفض أدلة الشفرة وCFG وABI والتدقيق والمزوّد وموضع الاستدعاء القديمة. تتحقق هذه الاختبارات من تهيئة البايتات وبوابة قبول المصدر، ولا تنفذ الجسم الآلي الأصلي ولا تثبت عودة منطقية أصلية.
MedCallingConvValueFlow.FPInputsFollowOnlyAuthenticatedCallPrefixes / NativeSourceHints.PreservedFPPrefixesRetainAllEntryInputsAfterSDKCalls: تتحقق اختبارات البادئة من ثلاث قراءات صحيحة وتسع عشرة حالة مرفوضة تتعلق بالحوامل والبوادئ وملكية الاستدعاءات والقيم غير المستخدمة. يحفظ مستدعٍ ARM64 مجمّع جميع مسارات double الأربعة الواردة عبر استدعاء SDK، ويعيد الرفع للتحقق من ABI الكامل للمعاملات وبوابة المصدر. تجتاز طريقة WMF المقبولة وغير المعدلة 0x36350 أيضاً 2048 حالة عند O0 ومثلها عند O2 مقارنة بتعبير CoreGraphics أصلي مستقل للقلب والإزاحة والتطبيع والدمج والتطبيق، مع فحص جميع بايتات النتيجة الـ32 والمستقبِل والمحدِّد وحماية المدخلات، بما فيها الأبعاد الصفرية والسالبة واللانهائية وNaN. لا يتم تنفيذ الجسم الآلي الأصلي لـ WMF.
يتحقق SourceABI.SwiftEntryCapturesAndReturnsTheErrorRegisterOnEveryPath من التقاط الدخول على ARM64/x64 ومساري العودة ورفض براهين النقل المفقودة أو المعدّلة. يحتفظ NativeSwiftCallsKeepBothResultsAndPostCallErrorBranches بنتيجة الاستدعاء وسجل الخطأ المحدّث والشرط التالي، ويختبر تعارض الأسماء الخاصة وترتيبي الإخراج. تُنفّذ شيفرة C الناتجة بمستويي O0/O2 على هدف Darwin الأصلي وتقارن بمرجع مستقل للنجاح والفشل. يرفض SwiftFunctionSymbols.RegularExpressionInitializerRetainsContextAndError الأسماء البديلة وتغيير الرموز الكاملة والمداخل خارج الشيفرة وصيغ الصور غير المدعومة. لا تنفذ هذه الفحوص مُنشئ WMF الأصلي ولا تثبت الاستعادة الكاملة للدوال الأعلى.
تُعيد اختبارات NativeSourceHints.SwiftErrorDeclaration* رفع نقاط دخول ARM64/x64 المجمّعة بعد استبدال ABI عددي مستنتج بتصريح المترجم. يمنع غياب التدقيق الحالي أو عدم اكتماله هذا الاستبدال؛ وتحتفظ عقود المصدر الصريحة في الخيارات أو MedIR أو HighIR بأولويتها. وترفض اختبارات الدخول أيضاً غياب علامة خرج الخطأ في MedIR أو عرض معامل غير صحيح قبل التحويل إلى HighIR.
يبقى التقاط قيمة الدخول جذراً لحيوية القيم عندما تستبدل جميع المسارات سجل الخطأ، بما في ذلك التنظيف النهائي للمصدر بعد ربط once. ترفض اختبارات NativeSourceHints.SwiftErrorCallsRequireCurrentDirectNativeProjection الدوال المستدعاة الغائبة أو الفارغة أو المعدّلة أو غير المثبتة، والأهداف المعدّلة والاستدعاءات غير المباشرة والنتائج غير المكتملة والمعاملات المفقودة والتأثيرات غير المتوافقة.
يتحقق SwiftFunctionSymbols.RepeatedDeclarationsKeepEveryRecordField من السجلات المكررة المتطابقة ويرفض الأسماء والأحجام ومصدر الحدود والأصول المعدّلة. تختبر NativeSourceHints.SwiftErrorCallResults* الاستنتاج التلقائي لمتصل ARM64/x64 وترفض الدوال الحالية الغائبة والعمليات الآلية المعدّلة والتدقيق القديم وABI غير المكتمل واستخراج النتائج الغائب أو الضيق أو غير المرتبط. يشمل تنفيذ مصدر الدخول أيضاً تصريحات تصحيح اختيارية متعارضة مع الحفاظ على الاتفاقية المرتبطة ودوري الخطأ والسياق.
تتحقق مولدات Swift witness من CurrentValueSubject: Publisher وRange<Bound: Comparable>: RangeExpression على ARM64/x86-64 في macOS وMac Catalyst. يرفض scripts.tests.test_generate_swift_witness_contracts تغييرات المدخلات العامة وأنواع استجابة البيانات الوصفية أو أعضائها والنماذج الأولية ومزودي الصادرات والتدفق غير الكامل. يفحص ObjCSourceBindings.SwiftWitnessUndefRequiresExactDescriptorContract وSwiftWitnessUndefRejectsUnprovedInputAndABI الواصفين على المعماريتين، مع 33 طفرة لكل واصف ومعمارية لهوية runtime/الاستيراد والتخزين الضعيف أو المتعارض وABI والآثار. لا تمنح هذه الفهارس عقداً لتخطيط إطار المكدس أو استعارته.
يفحص scripts.tests.test_generate_swift_data_declarations استعلام واصف String.Index الكامل ويرفض تغييرات الخلايا الرمزية وبايتات الوصفة أو طولها وتدفق البيانات الوصفية/المخبأ وABI الخاص بـ runtime والتعريفات المكررة أو المفقودة. يفحص ObjCSourceBindings.SwiftRangeIndexDescriptorKeepsItsCompleteRecipe الواصف غير الأول عند الإزاحة 3 على المعماريتين؛ ويرفض SwiftRangeIndexDescriptorRejectsStaleIdentityAndRecipe عشرين طفرة لكل معمارية ويعيد التحقق من تلميحات العناوين المنشورة وإخراج helper.
يغطي ObjCSourceBindings.PrivateFramePointerTailRequiresExactStoreOnEveryPath دورات متغيرات الكائنات بعد دمج PHI وقيمة إطار خاص داخل الدورة نفسها. تحافظ دورة الكائن على تخزين المؤشر الدقيق؛ وترفض دورة الإطار والكتابات الجزئية وتسربات الإطار غير المعروفة الإثبات.
يتحقق ObjCCallHints.FoundationGenericNSRangeKeepsSixPointersAndTwoWords من المعماريتين والمورّدين وحوامل المعاملات والنتيجة، ويرفض الواردات الضعيفة والإزاحات والمورّدين الأجانب والرموز القديمة وتأثيرات الاستعارة المختلقة.
يتحقق قارئ الشاهد في scripts.tests.test_generate_swift_witness_contracts من التدفق الكامل ويرفض 28 تغييراً في التخزين وABI والتدفق وسبعة تصريحات ملتبسة، ويفرض حد الإدخال. تغطي اختبارات الربط الواصفات الأربعة على المعماريتين مع 33 تغييراً لكل زوج. لا يمنح الواصف تخطيط إطار أو إذن استعارة.
تختبر PreparedFiniteKeys.* إتلاف السياق وإعادة التسمية وترتيب الإسقاط وحدوده والإبطال الصريح بعد النقل والنتائج المشوهة وغير المكتملة والمجالات الفارغة وغير الفريدة وحدود السعة الدقيقة. تغطي اختبارات ذاكرة التخزين المؤقت والإطار الحالية هذا المسار أيضًا.
يرفض SourceABI.SwiftPointTransformKeepsTwoFloatingInputsAndResults تغييرات السجلات والتخطيط ودور السياق والنتائج غير المباشرة على المعماريتين. ينفّذ SourceABI.SwiftPointForwardingPreservesBothIEEECarriers المصدر الممرّر عند -O0/-O2 ويتحقق من الأصفار الموقّعة والأعداد دون الطبيعية واللانهايات وحمولات NaN في الحقلين. تقبل اختبارات التصريح أشكال المترجم والمعاملات المسماة وترفض التوقيعات المعدّلة وهويات الصور الغامضة.
تتحقق عينة MainActor من التدفق الكامل للبيانات الوصفية الثابتة والجدول الثابت، وترفض تغييرات التخزين والواجهة والاستخراج والهوية والآثار الإضافية والتصريحات المفقودة أو المكررة ونفاد ميزانية الإدخال. يشترط الفهرسان التصديرات الثلاثة لكل هدف. تغطي اختبارات ربط الشواهد الواصفات الأربعة على arm64/x64 مع 33 تغييرًا لكل واصف ومعمارية. وتقارن تجربة وقت التشغيل على المضيف الجدول العام باستخدام خمسة أنماط بتات لمعامل الاستنساخ.
يختبر BitVectorEncodingClone.WatchMigrationAndGrowthOutliveTheSource توسعة الجداول وقوائم المراقبة بعد النسخ وإتلاف المصدر وتعديل نسخة شقيقة باستقلال وإيقاف الانتشار بعد زيارة واحدة، ويتحقق من النماذج الكاملة بعد الاستئناف باستخدام العبارات الأصلية وعلاقات منطقية مستقلة.
يتحقق ObjCCallHints.SwiftPublishedAccessorsKeepOpaqueValueAndAllKeyPaths من أداتي الوصول على ARM64/x86-64 ومن مزودي Combine المعتمدين، ويرفض تسعة تغييرات ABI وثمانية تغييرات لهوية الاستيراد لكل تركيبة. يشغّل تحقق SDK المستقل كود C المولد لتهيئتي المصدر عند O0/O2 على مضيف ARM64، ويقارن جميع بايتات الحمولة الأربعة والعشرين وحراس الإدخال والإخراج وهويتي owner عبر 128 استدعاءً. تغطي ثماني تهيئات ترجمة متقاطعة المعماريتين على macOS/Mac Catalyst. يحافظ اختبار وقت التشغيل على المراجع التي يستهلكها الكاتب ولا يمنح المنتج اختصارًا للاستعارة أو الملكية.
يتحقق ObjCCallHints.SwiftMainActorSharedKeepsObjectAndMetatypeContext من حوامل النتيجة وswiftself كاملة على ARM64 وx86-64، ويرفض عشرة تغييرات في ABI وعشرة تغييرات في هوية الاستيراد لكل معمارية. ينفذ التحقق المستقل من SDK شفرة C المولدة دون تعديل لكلا إعدادَي معمارية المصدر باستخدام O0 وO2 على مضيف ARM64: تحافظ 128 مكالمة على هوية النسخة الوحيدة والنوع الوصفي مع موازنة ملكية المراجع. تغطي ثمانية إعدادات للترجمة المتقاطعة macOS وMac Catalyst على المعماريتين؛ يبقى التنفيذ الأصلي على x86-64 تغطية مستقلة.
BitVectorEncodingClone.RootQueuePreservesDecisionsAcrossGrowthAndBudgets يختبر اختلاط متغيرات الجذر والمتغيرات غير المحسومة، ومتغيرات الجذر غير المخصصة للقرار، ونسخ النسخة، وحذف المصادر، وإضافة المتغيرات، والقطبيتين الافتراضيتين، والانقطاع ضمن الميزانية والاستئناف، والتعارضات وإعادة البدء. يجب أن تطابق النماذج الكاملة وجميع عدادات البحث ترميزًا جديدًا.
تختبر ContextFiniteProofs.* عزل السياقات والمالكين واستبدال المالك ونقل الرموز والشروط الدقيقة والإسقاطات المرتبة وإضافة العقد والنتائج المكتملة وغير المكتملة وحدود التخزين وإزالة الأقل استخدامًا مؤخرًا. تشترط اختبارات الإطار استعلام التفرد النهائي قبل التخزين وتحافظ على حد العقد الرمزية عند العثور على نتيجة مخزنة.
تختبر LinuxPriorityTests.cpp الحالة الصريحة للمهام وعزل الخيوط والملاحظات الغائبة وJSON غير الصحيح وقبول ملفات التعريف وآثار الرفض. تتحقق برامج خام مستقلة على x64 وAArch64 عند O0/O2 من حدود nice وتضييق وسائط استدعاء النظام إلى 32 بت وحدود CAP_SYS_NICE/RLIMIT_NICE وترميز getpriority الخاص بالنواة. شغّل LinuxPriority.* وBackends/LinuxPriorityProcess.* في NeverDLinuxProcessTests، ثم مجموعات عمليات Linux وAndroid الأصلية وواجهة العملية العامة كاملة عند تغيير النواة أو JSON المشترك. يُسجل غياب وسائل النقل الأصلية الاختيارية كتجاوز صريح.
تتحقق LinuxKernelAvailability.* من مدخلات الغياب الصريح وقبول ملفات التعريف. تستخدم Backends/LinuxKernelProcess.* برامج خام مستقلة على x64 وAArch64 عند O0/O2 للتحقق من ENOSYS قبل الوسائط واستمرار رفض الاستدعاءات غير المحددة أو غير المرتبطة. تقارن عينة Android استدعاء SVC الخام مع syscall في Bionic، مع الفصل بين النتيجة الخام وآثار errno. تتطلب تغييرات التوافر هذه الاختبارات المركزة ومجموعات عمليات Linux والواجهة العامة كاملة، ومجموعات Android لاستدعاءات النظام والدخول الأصلي والإشارات.
تتحقق CompletedQueryCache.* من إجابات مجال البايت الكامل وكل موضع مضغوط والنمو وعزل السياق والمالك والمدخلات غير الصالحة وغير المكتملة وحدود التخزين الدقيقة. تحتفظ اختبارات الفروع الأصلية بتكاليف الاستعلام المنطقية الثابتة والميزانية الدقيقة والناقصة بواحد حتى عند تجاوز عمل الخلفية بواسطة إجابات مكتملة.
BinaryLowIRRefinement.NativeTargetDomainsKeepIndependentProjections / FrameOffsets.FrameAndJointTargetProjectionsKeepIndependentSearches يتحققان من سلاسل أهداف أصلية متكررة مع تغيّر الفروع وكتابات إطار رمزية، والتكاليف المنطقية الثابتة، وميزانية الاستعلام الدقيقة أو الناقصة باستعلام واحد، وحدود الأهداف غير الصالحة، ونفاد ميزانية البوابات، والملاحظات النهائية الخاطئة. كما تحافظ إسقاطات الإطار والأهداف المترابطة المتداخلة على الصفوف الكاملة وترتيب المراقبة ورفض النتائج غير المكتملة عند استبدال الشرط.