Sto cercando uno strumento per generare staticamente un grafo di chiamata del kernel Linux (per una configurazione kernel specifica). Il grafo delle chiamate generato dovrebbe essere "completo", nel senso che tutte le chiamate sono incluse, comprese quelle indirette potenziali che si possono assumere solo attraverso l'uso di puntatori di funzione nel caso del kernel di Linux.Generazione del grafo di chiamate statiche per il kernel Linux
Ad esempio, questo può essere fatto analizzando i tipi di puntatore della funzione: questo approccio porterebbe a bordi superflui nel grafico, ma per me va bene.
ncc sembra implementare questa idea, tuttavia non sono riuscito a farlo funzionare sul kernel 3.0. Qualche altro suggerimento?
Suppongo che questo approccio potrebbe anche portare a bordi mancanti nei casi in cui vengono utilizzati i cast di puntatori di funzione, quindi sarei anche interessato a sapere se questo è probabile nel kernel di Linux.
Come nota a margine, sembra che ci siano altri strumenti che sono in grado di fare un'analisi semantica dell'origine per inferire potenziali valori del puntatore, ma AFAICT, nessuno di essi è progettato per essere utilizzato in un progetto come il kernel di Linux .
Qualsiasi aiuto sarebbe molto apprezzato.
Non sei riuscito a farlo funzionare? Quanto impegno hai investito? Nella mia risposta di seguito, abbiamo analizzato un enorme sistema. Ci sono voluti diversi mesi-uomo per catturare in modo affidabile le fonti giuste, i dati di compilazione e elaborarlo.Pensi che farlo per Linux dovrebbe essere molto più veloce la prima volta che provi? –
Bene, ho semplicemente seguito alla lettera l'esempio del caso d'uso per il kernel Linux che è fornito nella documentazione di ncc. Ciò ha provocato un errore che sto ancora cercando di capire. – addalbx
OK, quindi NCC apparentemente viene configurato per elaborare Linux. Allora il tuo tempo dovrebbe essere molto più breve da quando qualcun altro ha fatto tutto questo lavoro. Naturalmente, è improbabile che tale lavoro sia stabile; le mosse del kernel di Linux. Hai contattato i costruttori NCC e chiesto loro di questo? –