Existe uma maneira de obter Splint ou um verificador estática semelhante ao trabalho com módulos Linux Kernel?

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

Pergunta

Eu compilado (sem avisos) o exemplo hello-5.c de " O Linux Kernel Module Guia de programação " e quando eu tentei insmod-lo, recebi o seguinte erro:

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

Eu pensei que eu iria tentar tala para ver se ele veio com quaisquer erros óbvios, mas quando eu corri eu tenho uma série de advertências dos cabeçalhos do kernel até que barfed tentando analisar 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.

Então, realmente há duas perguntas:

  1. Como faço para corrigir o erro insmod?
  2. Como faço para obter tala para jogar bonito com os cabeçalhos do kernel?
Foi útil?

Solução 2

Eu não tenho certeza, mas isso pode ser o que eu estou procurando:

tala-discuss Usando Splint nos módulos do kernel Linux

Ele fornece um arquivo de costume fazer para ajudar a tala de obter através da extensões específicas gcc utilizados no Kernel.

Outras dicas

Engraçado. Atualmente estou sentado no escritório e tentar executar um verificador estática em motoristas Linux Kernel:)

damas estáticos têm dificuldade núcleo de processamento linux, porque C dialeto usado no código do kernel é mais amplo do que o comumente entendido como "linguagem C". Às vezes acontece que C front-end de um verificador simplesmente não pode analisar construções usadas no código em constante mudança.

Como eu poderia entender, basta usar uma versão desatualizada do verificador (03 Nov 2006), mas sua versão do kernel está desatualizado também, e eu não sei qual é mais velho. O que pode ajudar é atualizar o verificador para sua versão atual, ou usando up-to-date C front-end, se os suportes verificador ligá-lo.

Além disso, se um verificador pode processar kernel do Linux, o fato de imediato torna-se sendo gabava na página inicial do verificador. Então, escolher um que reivindica e fazer seus cheques.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top