Skip to content

enlist12/recursion_checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Recursion Checker

基于 LLVM 的 Linux 内核递归环检测工具,重点识别:

  • 直接自递归
  • 多函数互递归
  • 通过函数指针/回调形成的递归环

项目结构参考 src/uninit_checker,间接调用解析迁移自 mlta 设计,并保持独立的 IndirectCallResolver 模块。

检测策略

工具分两步做递归判断:

  1. 构建跨模块调用图
    • 直接调用:解析 declaration 到 definition
    • 间接调用:使用 MLTA 解析函数指针目标
  2. 在调用图上做递归环筛选
    • 先找 SCC
    • 只要 SCC 表示存在自递归或互递归环,就报告

这意味着工具报告的是“可能递归环”,而不是只报告“必经无限递归”。

构建

./build.sh

使用

build/recursion-checker kernel.bc
build/recursion-checker --bc-list=bc.list
build/recursion-checker --filename=result.txt kernel.bc

测试

make test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors