هل هناك طريقة لجعل Splint أو مدققًا ثابتًا مشابهًا يعمل مع وحدات Linux Kernel؟

StackOverflow https://stackoverflow.com/questions/1620671

سؤال

لقد قمت بتجميع (لا توجد تحذيرات) ملف hello-5.c مثال من "دليل برمجة وحدة Linux Kernel"وعندما حاولت إدخاله، تلقيت الخطأ التالي:

insmod: error inserting 'hello-5.ko': -1 Unknown symbol in module

اعتقدت أنني سأحاول استخدام splint لمعرفة ما إذا كانت قد ظهرت بها أية أخطاء واضحة، ولكن عندما قمت بتشغيلها تلقيت عددًا كبيرًا من التحذيرات من رؤوس kernel حتى منعت محاولة التحليل asm/types.h

anon@anon:~/kernel-source/lkmpg$ splint -I/lib/modules/$(uname -r)/build/include hello-5.c
Splint 3.1.1 --- 03 Nov 2006

( ... lots of warnings ... )

/lib/modules/2.6.24-24-insp8600/build/include/asm/types.h:13:24: Parse Error:
    Suspect missing struct or union keyword: __signed__ :
    unsigned short int. (For help on parse errors, see splint -help
    parseerrors.)
*** Cannot continue.

إذن هناك سؤالان حقًا:

  1. كيف أقوم بإصلاح خطأ insmod؟
  2. كيف أجعل الجبيرة تعمل بشكل جيد مع رؤوس النواة؟
هل كانت مفيدة؟

المحلول 2

لست متأكدًا ولكن قد يكون هذا ما أبحث عنه:

مناقشة جبيرة استخدام Splint على وحدات Linux kernel

فهو يوفر ملف إنشاء مخصص لمساعدة splint في الوصول إلى الامتدادات الخاصة بدول مجلس التعاون الخليجي المستخدمة في Kernel.

نصائح أخرى

مضحك.أنا جالس حاليًا في المكتب وأحاول تشغيل مدقق ثابت على برامج تشغيل Linux Kernel :)

تواجه المدققات الثابتة صعوبة في معالجة نواة لينكس، لأن لهجة C المستخدمة في كود kernel أوسع من تلك التي يُطلق عليها عادةً "لغة C".يحدث أحيانًا أن الواجهة الأمامية لـ C للمدقق لا يمكنها تحليل التركيبات المتغيرة باستمرار المستخدمة في الكود.

كما أفهم، يمكنك ببساطة استخدام إصدار قديم من المدقق (03 Nov 2006)، ولكن إصدار النواة الخاص بك قديم أيضًا، ولا أعرف أيهما أقدم.ما قد يساعد هو تحديث المدقق إلى نسخته الحالية، أو استخدام واجهة C الأمامية المحدثة، إذا كان المدقق يدعم تبديله.

علاوة على ذلك، إذا كان المدقق قادرًا على معالجة نواة Linux، فإن الحقيقة الصريحة تصبح موضع تفاخر على الصفحة الرئيسية للمدقق.لذا، اختر واحدة تطالب بها وقم بإجراء فحوصاتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top