一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于LLVM的变量类型信息修复与比较方法及系统

2022-06-11 06:30:48 来源:中国专利 TAG:

一种基于llvm的变量类型信息修复与比较方法及系统
技术领域
1.本发明属于软件程序分析技术领域,具体涉及一种基于llvm的变量类型信息修复与比较方法及系统。


背景技术:

2.随着计算机软件的快速发展,软件的代码规模和功能复杂度不断提升,针对计算机软件进行分析的需求也与日俱增,如程序漏洞检测、程序编译优化等。llvm是目前最流行的程序分析框架之一,其可以将多种编程语言的源代码转换为具有丰富语义信息,并且格式统一的llvm中间表示(intermediate representation ir),并支持开发人员在ir上设计实现自定义的程序分析流,其被广泛应用于编译优化、自动化漏洞挖掘、自动化漏洞修复、补丁分析、克隆检测等诸多领域。
3.llvm在3.0版本对其llvm ir的类型系统进行了一次重构,其类型系统主体框架一直沿用至今。在当前llvm的类型系统中,所有变量的类型被划分为了void类型、函数类型和一级类型;其中一级类型又包括单值类型、标签类型、令牌类型、元数据类型和聚合类型;聚合类型中又包括数组类型、结构体类型和不透明结构体类型。在这套类型系统中,相同上下文(llvmcontext)内的变量类型之间的比较可以通过指针比较来完成,大大提升了程序分析的效率。变量类型比较任务是大量上层程序分析的基础,如全局调用图构建、控制流完整性保护、指针别名分析等,因而构建一套完备的类型比较方法具有重要意义。
4.然而,在源代码被编译为llvm ir的过程中,存在类型信息丢失的情况,如:部分结构体类型和函数类型在编译为llvm ir后,结构体内函数指针域,或者函数的部分参数被编译为空指针类型;而部分结构体类型还存在结构体名丢失情况。除此之外,llvm ir的类型系统并没有为c/c 语言中的联合体(union)类型设计单独的类型,在编译联合体类型变量时,会将其视为结构体类型变量,之后在使用时通过类型转换将变量切换为所需的类型。当结构体类型包含联合体类型的域时,会导致不同上下文使用的相同结构体类型变量可能具有不同类型的域成员变量。上述问题会明显影响类型比较任务,导致本应识别为等价类型实际识别为不等价类型,进而进一步使基于类型分析的上层任务出现误报、漏报或分析错误的情况(如基于类型分析的指针别名分析、基于类型分析的间接调用目标分析等)。而如果上层任务为安全相关任务(如控制流完整性),则此类问题还会严重威胁程序安全性和稳定性。
5.针对上述问题,目前已有的实现方案并不完备。llvm内部实现的类型比较方法针对不同的类型设计了不同的比较策略,但对于类型信息缺失和联合体类型相关的类型比较没有进行额外的检查和处理;基于多层类型分析的间接调用目标识别工具typedive通过比较类型表示的字符串信息来比较不同上下文之间的类型,对于单值类型、标签类型等简单类型有较高的比较效率,但同样无法应对类型信息缺失和联合体类型相关的类型比较。


技术实现要素:

6.鉴于上述,本发明的目的是提供一种基于llvm的变量类型信息修复与比较方法及系统,以解决目前llvm ir中存在类型信息缺失和/或联合体类型相关类型导致无法进行类型比较分析以及比较分析不准确的问题。
7.为实现上述发明目的,实施例提供了一种基于llvm的变量类型信息修复与比较方法,包括以下步骤:
8.步骤1,获取并编译目标程序源代码为带有调试信息的llvm中间表示;
9.步骤2,从llvm中间表示中提取目标变量,其中,目标变量包括与分析任务相关,且涉及类型信息缺失的结构体或类型为联合体类型的结构体;
10.步骤3,依据调试信息获取目标变量包含的结构体及其中间表示类型在目标程序源代码中对应的源码结构体及其源码定义类型,比较分析结构体的中间表示类型与对应源码结构体的源码定义类型,输出比较结果为不一致的结构体与对应的源码结构体,组成的结构体对;
11.步骤4,针对每个结构体对,利用源码结构体的源码定义类型进行变量类型信息修复并存储于修复数据库;
12.步骤5,在对待比较分析的两个变量进行中间表示类型比较分析时,调用修复数据库中存储的结构体信息对结构体进行缺失类型信息修复后,再进行变量中间表示类型比较分析。
13.在一个是实施例的步骤1,包括:
14.配置编译环境,并按实际需求准备编译器和目标程序源代码;
15.配置目标程序源代码的编译选项,包括启用保留调试信息选项;
16.执行编译流程,编译结束后检查llvm中间表示的正确性和完整性,检查无误后,输出带有调试信息的llvm中间表示并存储。
17.在一个是实施例的步骤2,包括:
18.步骤2-1,依据分析任务从llvm中间表示中提取需要分析的llvm变量;
19.步骤2-2,提取llvm变量在llvm中间表示中的中间表示类型,从中间表示类型中筛选包含结构体的指针类型、包含结构体的数组类型、结构体类型对应的llvm变量作为候选llvm变量;
20.步骤2-3,从候选llvm变量中筛选结构体类型信息缺失或者包含联合体类型的变量作为目标变量并输出。
21.在一个实施例中,从llvm中间表示中提取目标变量前,还包括:检查读入的llvm中间表示的版本信息和调试信息,在版本信息与当前分析框架匹配和存在调试信息时进行目标变量提取,否则进行终止目标变量提取且发出警报以请求人工处理。
22.在一个实施例的步骤3,包括:
23.步骤3-1,获取目标变量以及目标变量对应的调试信息和中间表示类型;
24.步骤3-2,判定中间表示类型为指针类型、数组类型或结构体类型时,执行步骤3-2~步骤3-6;否则视为超出比较范围,并将类型比较结果认定为类型一致;
25.步骤3-3,当中间表示类型为指针类型时,获取指针指向变量的类型,依据调试信息从目标程序源代码中提取指向变量对应的对应变量及对应变量的源码定义类型,将指向
变量的类型作为中间表示类型,跳转执行步骤3-2;
26.步骤3-4,当中间表示类型为数组类型时,获取数组成员变量的类型,依据调试信息从目标程序源代码中提取数组成员变量对应的对应变量及对应变量的源码定义类型,将数组成员变量的类型作为中间表示类型,跳转执行步骤3-2;
27.步骤3-5,当中间表示类型为结构体类型时,获取目标变量包含的结构体及其类型、依据调试信息从目标程序源代码中提取与结构体对应的对源码结构体及其源码定义类型,并进入步骤3-6;然后,获取结构体的子成员变量的类型,依据调试信息从目标程序源代码中提取子成员变量对应的对应变量及对应变量的源码定义类型,将子成员变量的类型作为中间表示类型,跳转执行步骤3-2;
28.步骤3-6,比较分析结构体的类型与源码结构体的源码定义类型,如果类型不一致,将结构体与源码结构体组成的结构体对并输出,其中,类型不一致包括由于结构体的类型名包含.union导致的类型不一致、结构体的类型缺失导致的不一致。
29.在一个实施例步骤4,包括:
30.当结构体对中结构体的类型信息缺失时,将源码结构体的源码定义类型作为结构体的缺失类型以实现类型信息的修复,并以结构体的中间表示类型为key,以对应结构体的源码定义类型为value,以k-v键值对形式存储于修复数据库;
31.当结构体对中结构体的类型为联合体类型时,将联合体类型以自定义字符串进行表示,并以结构体的中间表示类型为key,以自定义的字符串为value,以k-v键值对形式存储于修复数据库。
32.在一个实施例的步骤5,包括:
33.步骤5-1,上层程序分析任务在目标程序源代码对应的llvm中间表示提取待分析比较的两个变量的中间表示类型;
34.步骤5-2,调用llvm分析框架自带的类型比较方法对两个变量的中间表示类型进行比较分析,若比较结果一致,则输出比较结果,若不一致,则执行步骤5-3;
35.步骤5-3,判断中间表示类型包括结构体类型时,如果两个结构体类型的类型名信息均为非空,则将结构体类型名称中的.struct去掉后,进行结构体类型名信息比较,如果比较结果一致,则输出比较结果;如果存在结构体类型的类型信息为空,则执行步骤5-4;
36.步骤5-4,针对类型信息为空的结构体类型,从修复数据库中查询结构体信息,如果找不到与类型信息为空的结构体类型对应的结构体信息,则认为比较结果不一致并输出;如果能找到与类型信息为空的结构体类型对应的结构体信息,则执行步骤5-5;
37.步骤5-5,判断调用的结构体信息包含的类型信息为自定义字符串,则认为比较结果为未知并输出,判断调用的结构体信息包含的类型信息为非自定义字符串,则将该类型信息作为类型名信息为空的结构体类型的类型名信息后,进行结构体类型名信息比较,并输出比较结果。
38.为实现上述发明目的,实施例提供的一种基于llvm的变量类型信息修复与比较系统,包括:
39.编译模块,用于获取并编译目标程序源代码为带有调试信息的llvm中间表示;
40.提取模块,用于从llvm中间表示中提取目标变量,其中,目标变量包括与分析任务相关,且涉及类型信息缺失的结构体或类型为联合体类型的结构体;
41.类型匹配模块,用于依据调试信息获取目标变量包含的结构体及其中间表示类型在目标程序源代码中对应的源码结构体及其源码定义类型,比较分析结构体的中间表示类型与对应源码结构体的源码定义类型,输出比较结果为不一致的结构体与对应的源码结构体,组成的结构体对;
42.类型修复模块,用于针对每个结构体对,利用源码结构体的源码定义类型进行变量类型信息修复并存储于修复数据库;
43.分析比较模块,用于在对待比较分析的两个变量进行中间表示类型比较分析时,调用修复数据库中存储的结构体信息对结构体进行缺失类型信息修复后,再进行变量中间表示类型比较分析。
44.与现有技术相比,本发明具有的有益效果至少包括:
45.(1)通过结合目标程序源代码与llvm中间表示进行分析来完成llvm ir中缺失的变量类型信息的修复,使用修复后的类型名称来对复合类型信息进行标识和比较,具有更高的准确性和分析鲁棒性。
46.(2)变量的中间表示类型修复之前,通过目标变量提取和中间表示类型检查缩减需要分析的变量范围,只对用户所关注的,并且可能存在信息丢失的变量进行分析,同时用户在此部分可加入自定义的变量筛选规则,因而具备高效性。
47.(3)提供的基于llvm的变量类型信息修复与比较系统具有高可移植性,类型信息修复与比较均通过llvm分析流(llvm pass)实现,支持嵌入到多种不同类型的基于llvm分析框架的上层分析任务中,相关程序的开发者无需对llvm分析框架本身进行修改即可使用,提供灵活的类型比较功能服务。
48.(4)提供的变量类型信息修复与比较方法和系统具备高效性,针对一套llvm中间表示,类型信息修复分析流仅需执行一次,分析结果通过进行外部存储,在后续进行类型比较的过程中可多次复用,且分析过程不对已有的源代码或llvm中间表示进行修改,不会对其他基于llvm的程序分析工具造成影响。
附图说明
49.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
50.图1是实施例提供的基于llvm的变量类型信息修复与比较方法的流程图;
51.图2是实施例提供的目标变量提取流程图;
52.图3是实施例提供的基于llvm的变量类型信息修复与比较系统的流程图。
具体实施方式
53.为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
54.针对在llvm分析框架中进行类型比较分析可能遇到的类型信息丢失的情况,尤其
是结构体类型的信息丢失,严重影响类型比较分析的准确性的问题,实施例提供了一种基于llvm的变量类型信息修复与比较方法及系统,主要包括变量类型信息修复部分和变量类型比较分析部分,这两个部分均通过llvm分析流来实现,具体地,变量类型信息修复分析流主要用于分析目标程序中需要进行类型修复的变量,完成类型修复任务并存储类型修复的结果;变量类型比较分析流用于读入上层程序分析任务发送的变量类型比较请求,完成变量类型比较任务并返回变量比较分析结果。
55.图1是实施例提供的基于llvm的变量类型信息修复与比较方法的流程图。如图1所示,实施例提供的基于llvm的变量类型信息修复与比较方法,包括以下步骤:
56.步骤1,获取并编译目标程序源代码为带有调试信息的llvm中间表示。
57.实施例中,将目标程序源代码编译到llvm ir包括:用户提供所要分析的目标软件源代码,配置符合相关需求的编译信息,并启用编译时保留调试信息选项,之后开始进行将目标源代码编译为llvm ir,并将编译后得到的llvm ir文件进行保存。
58.用户在配置编译环境时,需要按照实际需求准备适合版本的编译器,其中编译器包括但不限于使用clang编译器。
59.用户配置编译选项时,需要启用保留调试信息选项,其他编译选项信息根据用户实际需求进行配置。其中,启用保留调试信息选项的方式包括但不限于添加-g选项;配置其他编译选项的方法包括但不限于通过配置makefile完成。
60.用户启动编译流程,进行编译过程,并在编译结束后检查输出的llvm ir文件是否正确及完整。检查无误后将输出的llvm ir文件存储到本地。其中,存储方式包括但不限于写入mysql数据库,写入本地硬盘或内存进行存储。
61.步骤2,从llvm中间表示中提取目标变量。
62.实施例中,目标变量提取包括:分析程序读入带有调试信息的llvm ir,扫描所有llvm ir,并根据需求提取llvm ir中所有与分析任务有关,并且存在类型信息缺失的变量,以及所有与联合体类型有关的变量,需要说明的是,类型信息缺失的变量类型为结构体变量类型,联合体类型有关的变量为类型名中包含.union的结构体类型变量。
63.图2是实施例提供的目标变量提取流程图。如图2所示,具体地,目标变量提取包括:
64.步骤2-1,llvm ir文件的获取和检查。
65.实施例中,分析程序读入待分析的llvm ir文件,并对llvm ir版本信息进行检查以及是否包含了调试信息进行检查,如果与当前实现类型补全分析流所能处理的llvm ir版本不符合,或者输入的llvm ir文件不包含调试信息,则终止后续分析流程、发出警报并请求人工处理。
66.步骤2-2,待分析llvm变量的提取。
67.实施例中,llvm ir文件通过检测后,根据依据分析任务从llvm中间表示中提取需要分析的llvm变量;其中,这些llvm变量是根据分析任务设计的自定义规则提取得到的,自定义规则包括但不限于提取所有全局变量、函数定义和函数内的所有指令。
68.步骤2-3,llvm变量中候选llvm变量的筛选。
69.实施例中,提取llvm变量在llvm中间表示中的中间表示类型,从中间表示类型中筛选包含结构体的指针类型、包含结构体的数组类型、结构体类型对应的llvm变量作为候
选llvm变量,该候选llvm变量作为确定目标变量的数据基础。需要说明是,llvm中间表示中不仅包括llvm变量还包括llvm变量对应的中间表示类型。
70.在一个实施方式中,llvm变量中候选llvm变量的筛选步骤,包括:
71.步骤2-3-1,判定中间表示类型为指针类型、数组类型或结构体类型时,执行步骤2-3-2~步骤2-3-4;否则终止判断;
72.步骤2-3-2,当中间表示类型为结构体类型时,将结构体类型对应的输入llvm变量作为候选llvm变量;
73.步骤2-3-3,当中间表示类型为指针类型时,获取指针指向变量的类型,判定指向变量的类型为结构体类型时,则认为原始指针类型为包含结构体的指针类型,将包含结构体的指针类型对应的输入llvm变量作为候选llvm变量;否则,将指向变量的类型作为中间表示类型,跳转执行步骤2-3-1;
74.步骤2-3-4,当中间表示类型为数组类型时,获取数组成员变量的类型,判定数组成员变量的类型为结构体类型时,则认为原始数组类型为包含结构体的数组类型,将包含结构体的指针类型对应的输入llvm变量作为候选llvm变量;否则,将数组成员变量的类型作为中间表示类型,跳转执行步骤2-3-1。
75.步骤2-4,从候选llvm变量中筛选目标变量并输出。
76.实施例中,从候选llvm变量中筛选结构体类型信息缺失或者包含联合体类型的变量作为目标变量并输出。具体包括:
77.在一个实施方式中,从候选llvm变量中筛选目标变量步骤,包括:
78.步骤2-4-1,当中间表示类型为结构体类型时,检查结构体类型名是否为空,如果为空,则认为结构体类型信息缺失,并将输入的候选llvm变量作为目标变量;如果不为空且结构体类型名包括.union,则认为是联合体类型,同样将输入的候选llvm变量作为目标变量;否则,获取结构体的全部子成员变量的类型,将子成员变量的类型作为中间表示类型,跳转执行步骤2-4;
79.步骤2-4-2,当中间表示类型为指针类型时,检查指针指向结构体的类型名称是否为空,如果为空,则结构体类型缺失,并将输入的候选llvm变量作为目标变量;如果不为空且指针指向结构体的类型名包含.union,则认为是联合体类型,同样输入的候选llvm变量作为目标变量;否则,获取指针指向变量的类型,将指针指向变量的类型作为中间表示类型,跳转执行步骤2-4;
80.步骤2-4-3,当中间表示类型为数组类型时,检查数组包含结构体的类型名称是否为空,如果为空,则结构体类型缺失,并将输入的候选llvm变量作为目标变量;如果不为空且数组包含结构体的类型名包含.union,则认为是联合体类型,同样将输入的候选llvm变量作为目标变量,否则,获取数组成员变量的类型,将数组成员变量的类型作为中间表示类型,跳转执行步骤2-4;
81.其中,候选llvm变量包括结构体类型变量、数组类型变量、指针类型变量。
82.步骤3,目标变量的结构体与源代码信息的对应结构体的匹配以形成结构体对。
83.实施例中,依据调试信息获取目标变量包含的结构体在目标程序源代码中的对应的结构体及对应结构体的定义类型,比较分析结构体的类型与对应结构体的定义类型,输出比较结果为不一致的结构体与对应结构体,组成的结构体对。
84.在一个实施方式中,目标变量的结构体与源代码信息的对应结构体的匹配流程包括:
85.步骤3-1,获取目标变量以及目标变量对应的调试信息和中间表示类型。具体地,可以通过llvm mdnode提取变量的调试信息。
86.步骤3-2,判定中间表示类型为指针类型、数组类型或结构体类型时,执行步骤3-2~步骤3-6;否则视为超出比较范围,并将类型比较结果认定为类型一致;
87.步骤3-3,当中间表示类型为指针类型时,获取指针指向变量的类型,依据调试信息从目标程序源代码中提取指向变量对应的对应变量及对应变量的源码定义类型,将指向变量的类型作为中间表示类型,跳转执行步骤3-2;
88.步骤3-4,当中间表示类型为数组类型时,获取数组成员变量的类型,依据调试信息从目标程序源代码中提取数组成员变量对应的对应变量及对应变量的源码定义类型,将数组成员变量的类型作为中间表示类型,跳转执行步骤3-2;
89.步骤3-5,当中间表示类型为结构体类型时,获取目标变量包含的结构体及其类型、依据调试信息从目标程序源代码中提取与结构体对应的对源码结构体及其源码定义类型,并进入步骤3-6;然后,获取结构体的子成员变量的类型,依据调试信息从目标程序源代码中提取子成员变量对应的对应变量及对应变量的源码定义类型,将子成员变量的类型作为中间表示类型,跳转执行步骤3-2;
90.步骤3-6,比较分析结构体的类型与对应结构体的定义类型,如果类型不一致,将结构体与对应结构体组成的结构体对并输出,其中,类型不一致包括由于结构体的类型名后缀为.union导致的类型不一致、结构体的类型缺失导致的不一致。
91.步骤4,利用对应结构体的定义类型为结构体的类型进行修复并存储于修复数据库。
92.实施例中,获取步骤3构建的结构体对,并依据结构体对中结构体类型采用不同的修复方式,包括:
93.当结构体对中结构体的类型信息缺失时,将源码结构体的源码定义类型作为结构体的缺失类型以实现类型信息的修复,并以结构体的中间表示类型为key,以对应结构体的源码定义类型为value,以k-v键值对形式存储于修复数据库;
94.当结构体对中结构体的类型为联合体类型,类型带有.union字符串时,将联合体类型以自定义字符串进行表示,并以结构体的中间表示类型为key,以自定义的字符串为value,以k-v键值对形式存储于修复数据库。
95.需要说明的是,可以使用mysql数据库存储上述以键值对形式存储的结构体信息。不排除使用其他方法或技术实现对结构体信息的存储。定义的字符串可以是escape等,不受限制,只要是与已有的结构体类型名称不冲突即可。
96.步骤5,调用修复数据库中的结构体信息对中间表示类型进行修复后进行中间表示类型比较分析。
97.实施例中,在对待比较分析的两个变量进行中间表示类型比较分析时,调用修复数据库中存储的结构体信息对中间表示类型包括的结构体进行缺失类型信息进行修复后,再进行变量中间表示类型比较分析。
98.在一个实施方式中,比较分析过程包括:
99.步骤5-1,上层程序分析任务在目标程序源代码对应的llvm中间表示提取待分析比较的两个变量的中间表示类型;
100.实施例中,分析程序读入来自上层程序分析任务发送的变量类型比较分析请求,并从请求中提取出所需要比较的两个变量类型的llvm中间表示类型,如果类型提取失败,则终止后续流程、发出警报并请求人工处理;否则进入步骤5-2。其中,上层程序分析任务包括需要进行变量类型比较的其他程序分析任务,如基于类型分析的间接调用分析、基于类型信息的别名分析等,该分析任务向变量类型比较分析流发送类型比较请求。
101.步骤5-2,调用llvm分析框架自带的类型比较方法对两个变量的中间表示类型进行比较分析,若比较结果一致,则输出比较结果,若不一致,则执行步骤5-3;
102.实施例中,llvm自带的类型比较方法使用functioncomparator::cmptypes()方法进行比较。
103.步骤5-3,判断中间表示类型包括结构体类型时,如果两个结构体类型的类型名信息均为非空,则将结构体类型名称中的.struct去掉后,进行结构体类型名信息比较,如果比较结果一致,则输出比较结果;如果存在结构体类型的类型信息为空,则执行步骤5-4;
104.步骤5-4,针对类型信息为空的结构体类型,从修复数据库中查询结构体信息,如果找不到与类型信息为空的结构体类型对应的结构体信息,即找不到类型信息为空的结构体类型对应的key,则认为比较结果不一致并输出;如果能找到与类型信息为空的结构体类型对应的结构体信息,即找到key,则执行步骤5-5;
105.步骤5-5,判断调用的结构体信息包含的类型信息为自定义字符串,即key对应的value为自定义字符串,则认为比较结果为未知(如unknown)并输出,判断调用的结构体信息包含的类型信息为非自定义字符串,则将该类型信息作为类型名信息为空的结构体类型的类型名信息后,进行结构体类型名信息比较,并输出比较结果。
106.图3是实施例提供的基于llvm的变量类型信息修复与比较系统的流程图。如图3所示,实施例提供的变量类型信息修复与比较系统,包括:
107.编译模块,用于获取并编译目标程序源代码为带有调试信息的llvm中间表示;
108.提取模块,用于从llvm中间表示中提取目标变量,其中,目标变量包括与分析任务相关,且涉及类型信息缺失的结构体或类型为联合体类型的结构体;
109.类型匹配模块,用于依据调试信息获取目标变量包含的结构体及其中间表示类型在目标程序源代码中对应的源码结构体及其源码定义类型,比较分析结构体的中间表示类型与对应源码结构体的源码定义类型,输出比较结果为不一致的结构体与对应的源码结构体,组成的结构体对;
110.类型修复模块,用于针对每个结构体对,利用源码结构体的源码定义类型进行变量类型信息修复并存储于修复数据库;
111.分析比较模块,用于在对待比较分析的两个变量进行中间表示类型比较分析时,调用修复数据库中存储的结构体信息对结构体进行缺失类型信息修复后,再进行变量中间表示类型比较分析。
112.需要说明的是,上述实施例提供的基于llvm的变量类型信息修复与比较装置在进行变量类型信息修复与比较方法时,应以上述各功能模块的划分进行举例说明,可以根据需要将上述功能分配由不同的功能模块完成,即在终端或服务器的内部结构划分成不同的
功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于llvm的变量类型信息修复与比较装置与基于llvm的变量类型信息修复与比较方法实施例属于同一构思,其具体实现过程详见基于llvm的变量类型信息修复与比较方法实施例,这里不再赘述。
113.实施例提供的基于llvm的变量类型信息修复与比较系统支持作为独立的llvm分析流运行,以可插拔的方式向其他需要进行类型比较分析的上层任务提供类型比较查询接口,具备高可移植性。
114.以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献