【技术实现步骤摘要】
本专利技术属于静态程序分析领域,涉及一种指针分析方法。
技术介绍
指针分析是一种静态程序分析技术,它的目标是静态确定一个指针变量能够指向哪些地址(变量或函数的存储位置),也就是静态确定一个指针变量在程序运行时所有可能的值。指针分析以程序源代码(或某种中间代码表示)作为输入,输出该程序所包含的指针指向信息。由于指针(引用)在C/C++(Java)程序中被广泛使用,许多静态程序分析技术需要根据指针指向信息来解析程序中包含的间接引用,指针分析的结果直接影响其它静态程序分析技术的有效性,指针分析作为许多静态程序分析技术的使能技术一直是一项重要的议题。目前软件系统和工业级源代码库的规模越来越大(如数百万代码行甚至数千万代码行),对于动态性较弱、使用指针较少、规模较小的程序,现有的指针分析技术已经较为成熟,可以很好地分析处理这些程序。然而,对于规模更大、动态性更强的程序,现有指针分析算法还存在许多问题,需要进一步地研究:(1)如何在不影响指向信息精度的条件下,提高指针分析算法的效率和可扩展性;(2)如何提高指针分析算法的精度,同时尽可能地保证算法的效率和可扩展性;(3)如何设计适用于并发程序的指针分析算法等。在设计一个指针分析算法时,首先需要对程序的元素(如程序语句,函数,结构体等)进行建模,这些建模策略也被称为分析维度;如流敏感性,上下文敏感性,域敏感性等。从理论上来说,精确的指针分析是非常困难的:当允许动态内存分 ...
【技术保护点】
一种基于离线约束图的指针分析方法,其特征在于,该方法包括如下步骤:(1)根据输入约束集,构造离线约束图;(2)在所述离线约束图中触发一次深度优先搜索,得到一个有向无环图和多个循环,并记录循环信息;(3)在所述有向无环图中,根据结点的拓扑序计算每个结点的祖先集和后裔集;同时在所述有向无环图中,利用Lengauer and Tarjan算法计算该图对应的支配树或支配森林;(4)在所述支配树或支配森林中,计算指针等价的顶层变量对信息;(5)根据输入约束集,构造初始的在线约束图,然后在所述在线约束图中,将与步骤(4)得到的顶层变量对信息对应的结点合并;(6)首先利用同时满足如下条件的结点对优先级队列current进行初始化:(a)结点的指向集为非空;(b)结点含有出边或者含有复杂约束,所述复杂约束为加载约束或存储约束;然后基于工作集算法框架迭代处理current,得到指针指向信息。
【技术特征摘要】
1.一种基于离线约束图的指针分析方法,其特征在于,该方法包括如下步骤:
(1)根据输入约束集,构造离线约束图;
(2)在所述离线约束图中触发一次深度优先搜索,得到一个有向无环图和多个
循环,并记录循环信息;
(3)在所述有向无环图中,根据结点的拓扑序计算每个结点的祖先集和后裔集;
同时在所述有向无环图中,利用LengauerandTarjan算法计算该图对应的支配树
或支配森林;
(4)在所述支配树或支配森林中,计算指针等价的顶层变量对信息;
(5)根据输入约束集,构造初始的在线约束图,然后在所述在线约束图中,将
与步骤(4)得到的顶层变量对信息对应的结点合并;
(6)首先利用同时满足如下条件的结点对优先级队列current进行初始化:(a)
结点的指向集为非空;(b)结点含有出边或者含有复杂约束,所述复杂约束为加载约
束或存储约束;然后基于工作集算法框架迭代处理current,得到指针指向信息。
2.根据权利要求1所述的一种基于离线约束图的指针分析方法,其特征在于,
所述步骤(3)中,计算一个结点p的祖先集的具体流程为:
在所述有向无环图的转置图中,以结点p为根进行深度优先搜索,该搜索过程过
程中遇到的所有结点记为结点p在有向无环图中的祖先集;
计算一个结点p的后裔集的具体流程为:
在所述有向无环图中,以结点p为根进行深度优先搜索,该搜索过程过程中遇到
的所有结点记为结点p在有向无环图中的后裔集。
3.根据权利要求1所述的一种基于离线约束图的指针分析方法,其特征在于,
所述步骤(4)的具体流程为:
在支配树或支配森林中,检查每个点对(m,n)是否为指针等价的顶层变量对,
从而得到指针等价的顶层变量对信息,其中m为为支配树或支配森林的结点,n为支
配树或支配森林的结点;具体判断方法为,如果m与n同时满足下面三个条件,则m
与n是指针等价的顶层变量对,否则不是:
(a)n是m的直接支配结点idom(m);
(b)m与n都是顶层变量;
(c)在离线约束图中,从n到m的所有路径都只涉及顶层变量结点,即从n到
\tm的所有路径不包含取地址变量结点或解引用结点。
4.根据权利要求1所述的一种基于离线约束图的指针分析方法,其特征在于,
所述步骤(6)中,基于工作集算法框架迭代处理优先级队列current,是对优先级队
列current中的结点逐个进行如下处理:
(i)当结点s不存在复杂约束时,直接进入步骤(iii),当结点s存在复杂约束
时,按照如下方式添加新的有向边到在...
【专利技术属性】
技术研发人员:李必信,刘飞,卢佩西·纳斯热,
申请(专利权)人:东南大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。