CN114510267A - 基于Linux***的程序ABI接口兼容性计算方法 - Google Patents

基于Linux***的程序ABI接口兼容性计算方法 Download PDF

Info

Publication number
CN114510267A
CN114510267A CN202210412932.1A CN202210412932A CN114510267A CN 114510267 A CN114510267 A CN 114510267A CN 202210412932 A CN202210412932 A CN 202210412932A CN 114510267 A CN114510267 A CN 114510267A
Authority
CN
China
Prior art keywords
information
data
type
compatibility
abi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210412932.1A
Other languages
English (en)
Other versions
CN114510267B (zh
Inventor
蔡祎男
刘峯
郭建兴
刘吉林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202210412932.1A priority Critical patent/CN114510267B/zh
Publication of CN114510267A publication Critical patent/CN114510267A/zh
Application granted granted Critical
Publication of CN114510267B publication Critical patent/CN114510267B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及计算机科学技术领域,具体涉及基于Linux***的程序ABI接口兼容性计算方法,包括如下步骤:S1、从Linux***中程序的ELF格式文件中解析出ABI接口信息;S2、将所述ABI接口信息的数据根据属性差异区分为数据类型信息、符号信息和ELF文件通用信息三个类别,基于不同类别数据特征设计对应的数据存储结构进行数据管理;S3、基于数据兼容性比较算法,对不同程序的ABI接口信息进行数据类型、符号和ELF文件通用信息三个方面的比较,基于比较计算得出兼容性计算标准,所述兼容性计算标准用于计算所述程序的ABI接口兼容性。该方法有助于从程序接口维度分析软件更新迭代的整体质量,降低由于ABI接口差异变化引发的程序运行故障或异常,提高软件***的稳定性。

Description

基于Linux***的程序ABI接口兼容性计算方法
技术领域
本发明涉及计算机科学技术领域,具体涉及一种基于Linux***的程序ABI接口兼容性计算方法。
背景技术
随着信息化时代的到来,计算机科学领域的高速发展,软件程序的开发迭代速度正愈发增长,以此为用户带来更多的服务功能与更好的操作体验。随之而来的则是软件***的体量逐渐庞大,衍生出的软件功能与服务接口越来越多。然而随着软件开发的不断演进,软件***中程序间服务接口的变化所引发的兼容性问题将变得难以预估,由此造成的运行故障也时有发生。这类故障多是产生于程序运行期间软件***中的运行异常、功能错误等,且问题定位与修复需要人工排查,因此造成了大量的经济损失与人力消耗。为此需要一种方法,其能够在程序运行工作前检查出软件***中各应用程序间接口的兼容性,用于评估是否有接口变化以及变化的影响,做到风险的提前识别与处理,保障软件***运行的功能正常且稳定。
软件***多是基于计算机操作***之上运行的。目前主流的计算机操作包括Linux、Windows等,其中Linux操作***以其优良的软件生态已成为大多数软件服务器***的主流选择。在Linux***中,可执行程序及相应的链接库程序均是ELF(Executable andLink able Format)格式的文件,而程序中的函数、变量等接口在ELF文件中都是以ABI(Application Binary Interface)应用程序二进制接口表示的,这些ABI接口用于程序之间的相互调用,以实现软件***的整体协同工作。因此对于二进制程序文件而言,如果其软件迭代开发过程中,已有的ABI接口对外表现是无变化的,则可以认为其软件迭代中始终是保持着向下兼容的,即与已有的软件***可以完全对接使用的。反之,如果ABI接口发生变化,则程序间基于变化的ABI接口的调用就可能引发不兼容问题。因此保持软件程序ABI接口的兼容性对于Linux***下软件更新、软件替代、软件跨平台迁移等场景均具有十分重要的意义。
综上所述,一种能够准确地分析Linux***下软件程序间ABI差异的方法对于软件兼容性评估工作将发挥重大的作用。
发明内容
解决的技术问题
针对现有技术所存在的上述缺点,本发明提供了一种基于Linux***的程序ABI接口兼容性计算方法,该方法有助于从程序接口维度分析软件更新迭代的整体质量,降低由于ABI接口差异变化引发的程序运行故障或异常,提高软件***的稳定性。
技术方案
为实现以上目的,本发明通过以下技术方案予以实现:
本发明提供一种基于Linux***的程序ABI接口兼容性计算方法,包括如下步骤:
S1、从Linux***中程序的ELF格式文件中解析出ABI接口信息;
S2、将所述ABI接口信息的数据根据属性差异区分为数据类型信息、符号信息和ELF文件通用信息三个类别,基于不同类别数据特征设计对应的数据存储结构进行数据管理;
S3、基于数据兼容性比较算法,对不同程序的ABI接口信息进行数据类型、符号和ELF文件通用信息三个方面的比较,基于比较计算得出兼容性计算标准,所述兼容性计算标准用于计算所述程序的ABI接口兼容性。
进一步地,步骤S1还包括:
在解析出ABI接口信息之前,验证所述ELF格式文件中是否包含debuginfo信息,若所述ELF格式文件中未包含,则在所述ELF格式文件中添加对应的.debug文件进行关联解析操作。
进一步地,步骤S1具体包括:首先,通过objdump命令对所述ELF格式文件进行反汇编后获取源码信息,同时使用ctags、eu-readelf及nm命令获取第一数据信息,所述第一数据信息包括符号表、依赖库、ABI接口的数据信息及各函数间地址偏移量;然后,通过遍历所述符号表,以获取第二数据信息,所述第二数据信息包括与符合关联的数据变量的名称、类型、所属源文件及头文件信息;最后,将所述第一数据信息和所述第二数据信息整合,生成所述ABI接口信息。
进一步地,步骤S2具体包括:所述数据类型信息根据类型差异分为通用数据类型、typedef数据类型、结构数据类型、函数数据类型四种子类型,并对所述四种子类型各自采用不同的列表式存储结构进行储存。
进一步地,步骤S2还包括:所述符号信息的数据存储结构采用键值对的字典表示方法,所述字典表示方法表示将符号名称作为键,符号对应的定义作为值进行一一映射。
进一步地,步骤S2还包括:所述ELF文件通用信息采用键值对形式的储存方式,所述键值对形式的储存方式指将每个ELF文件的共有信息属性名称作为键,将各个ELF文件对于该属性的具体信息内容作为值。
进一步地,还包括将所述数据类型信息、所述符号信息和所述ELF文件通用信息集中封装为数据管理器。
进一步地,步骤S3具体包括:所述数据兼容性比较算法包括数据类型比较算法、符号类型比较算法和ELF文件通用信息比较算法,分别用于比较不同ABI接口信息中的数据类型信息、符号信息和ELF文件通用信息。
进一步地,对于数据类型比较算法,按照结构数据类型、通用数据类型、typedef数据类型、函数数据类型的顺序进行比较判决,得到数据类型基于数据关联性的新增、删除、修改或一致的判决结论。
进一步地,对于符号类型比较算法,根据主键符号名称查询相应的符号定义,对所述符号定义中各个数据划分为数字类型、字符串类型、参数类型、返回值类型进行比较判决,得到新增、删除、修改或一致的判决结论。
基于同一发明构想,本发明提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述任一项所述的方法。
基于同一发明构想,本发明提供了一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一项所述的方法。
有益效果
本发明提供的技术方案,与已知的公有技术相比,具有如下有益效果:本发明实现Linux***下ELF格式程序文件之间的ABI接口兼容性分析,为软件研发、软件升级、软件迁移等场景识别出ABI接口的差异,为软件开发与维护人员进行软件兼容性评估提供依据,并能够持续跟踪软件迭代过程中ABI接口的变化。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的基于Linux***的程序ABI接口兼容性计算方法步骤示意图;
图2为本发明一实施例提供的基于Linux***的程序ABI接口兼容性计算方法流程示意图;
图3为本发明一实施例提供的基于Linux***的程序ABI接口兼容性计算方法中ABI接口信息数据结构化存储结构图;
图4为本发明一实施例提供的基于Linux***的程序ABI接口兼容性计算方法中数据兼容性比较算法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1-2,本发明一实施例提供了一种基于Linux***的程序ABI接口兼容性计算方法,包括如下步骤:
S1、从Linux***中程序的ELF格式文件中解析出ABI接口信息;
S2、将所述ABI接口信息的数据根据属性差异区分为数据类型信息、符号信息和ELF文件通用信息三个类别,基于不同类别数据特征设计对应的数据存储结构进行数据管理;
S3、基于数据兼容性比较算法,对不同程序的ABI接口信息进行数据类型、符号和ELF文件通用信息三个方面的比较,基于比较计算得出兼容性计算标准,所述兼容性计算标准用于计算所述程序的ABI接口兼容性。
在本实施例中,步骤S1还包括:在解析出ABI接口信息之前,验证所述ELF格式文件中是否包含debuginfo信息,若所述ELF格式文件中未包含,则在所述ELF格式文件中添加对应的.debug文件进行关联解析操作,以此保障所抽取数据信息的准确性与完整性。
在本实施例中,步骤S1具体包括:首先,通过objdump命令对所述ELF格式文件进行反汇编后获取源码信息,同时使用ctags、eu-readelf及nm命令获取第一数据信息,所述第一数据信息包括符号表、依赖库、ABI接口的数据信息及各函数间地址偏移量;然后,通过遍历所述符号表,以获取第二数据信息,所述第二数据信息包括与符合关联的数据变量的名称、类型、所属源文件及头文件信息;最后,将所述第一数据信息和所述第二数据信息整合,生成所述ABI接口信息。具体地,本发明采取使用Linux***中的eu-readelf、ctags、objdump、nm等基础命令对所述ELF格式文件进行信息采集操作。首先通过objdump命令对ELF格式文件进行反汇编后获取源码信息,同时使用ctags、eu-readelf及nm命令获取符号表、依赖库、ABI接口及各函数间地址偏移量等数据信息,其中符号表是ABI接口中的关键信息,它是代码编译中产生的包含函数名、变量名、段名、代码与数据对应关系的结构信息表;然后通过遍历符号表中各符号进行筛选、解析、处理、计算偏移量等操作获取与符号关联的数据变量的名称、类型、所属源文件及头文件等需要关注的对比数据信息;最后将所采集的ABI接口信息进行整合处理并保存。
在本实施例中,如图2所示,所述数据类型信息采用列表式存储结构进行储存;所述符号信息的数据存储结构采用键值对的字典表示方法,所述字典表示方法表示将符号名称作为键,符号对应的定义作为值进行一一映射;所述ELF文件通用信息采用键值对形式的储存方式,所述键值对形式的储存方式指将每个ELF文件的共有信息属性名称作为键,将各个ELF文件对于该属性的具体信息内容作为值。
具体地,将已获取的ABI接口信息数据根据属性差异区分为数据类型信息、符号信息及ELF文件通用信息等三个类别,基于不同类别数据特征设计了对应的数据存储结构进行数据管理。整体结构化存储结构图如图2所示。数据类型信息描述了符号定义中相关变量名称、类型名称、占用空间、类型索引等信息以及该数据类型比较结果标签,并根据其类型的不同设计了通用数据类型、typedef数据类型、结构数据类型以及函数数据类型等四种子类型,上述数据类型均使用列表式存储结构便于遍历比较其兼容性差异。符号信息包括符号表及表中各符号的定义。因此符号信息数据存储结构采用键值对的字典表示方法,将符号表中符号名称作为键,该符号对应的定义作为值进行一一映射,其中作为值的符号定义部分根据符号类型差异可包括该符号名称、参数变量、返回值、所在头文件、所在源文件等系列信息以及该符号数据比较结果标签。ELF文件通用信息是描述所有待分析文件中的共有信息属性的集合。因此采用键值对形式将每个共有信息属性名称作为键,将各个文件对于该属性的具体信息内容作为值构建字典型存储结构。为了便于兼容性比较的输入数据结构统一化处理,将上述数据类型、符号、ELF文件通用信息等三种数据结构集中封装为数据管理器,即实现每个待分析的二进制程序唯一对应其数据管理器,将二进制文件兼容性比较转换为不同数据管理器间数据成员的比较。
在本实施例中,在数据兼容性比较阶段,实现了对于不同数据管理器基于数据类型、符号、ELF文件通用信息的一致性判决算法,通过一致性分析得到兼容性信息。整体算法设计流程图如图3和图4所示,图3中以软件更新升级为例(新软件new与原软件old的兼容性比较),首先完成前述中数据管理器的初始化,再进行数据类型的列表比较。对于数据类型的四类子类型,按照结构数据类型、通用数据类型、typedef数据类型、以及函数数据类型的比较判决顺序进行分析,目的是降低比较过程中数据类型依赖关系的耦合度。例如函数类型中的输入参数可能是结构类型,通用类型,typedef类型等,因此在比较函数类型数据一致性时,需要先比较其输入参数类型的一致性。
在本实施例中,所述数据兼容性比较算法包括数据类型比较算法、符号类型比较算法和ELF文件通用信息比较算法,分别用于比较不同ABI接口信息中的数据类型信息、符号信息和ELF文件通用信息。
具体地,在数据类型比较算法流程上,首先判断结构数据类型列表中的成员总数与已完成比较成员数是否相等,相等即列表中所有成员均完成比较并进入通用数据类型等后续类型比较流程,否则即存在未比较的成员,需对其中新软件的结构类型列表遍历,并对每个成员与原软件结构类型列表中成员按照名称进行匹配,若未匹配到相同名称,则说明该数据类型仅在新软件中存在,是新增的数据类型,对应已比较结果计数加1,若存在匹配则进一步判断该类型在新、旧软件中是否存在变化,即对类型成员中类型名称、占用空间、类型索引等信息进行比较,其中类型索引即该数据类型引用的数据类型。这里对于类型索引比较存在一种问题,类型A组成成员中有类型B,类型B组成成员中有类型C,而类型C组成成员中有类型A,即循环依赖。对此问题一次比较无法判决类型A是否在新、旧软件中保持一致,需要进行延迟判断,即类型A的引用类型B未引用其他类型,则B的一致性可直接用于判断A的一致性,若B类型引用了其他类型,则结束本次对A的一致性判断,延迟到下一轮循环再做A的一致性比较。因此当对类型A的所有关联类型比较判决中均未触发延迟判断则可直接得到类型A在新、旧软件中保持一致或存在差异的结论,将对应的匹配标记置0或1进行存储且已比较结果计数加1,而任一关联类型出现延迟判断则结束本次A的一致性判决,不对匹配标记置位。对于每轮类型遍历比较的最后,判断本轮已比较结果计数与上一轮已比较结果计数是否一致,不一致则说明还存在非循环依赖的类型可以比较出结果,进入下一轮的比较。当两轮比较结果计数一致则说明此轮遍历中所有类型均是循环依赖触发延迟比较,则这些待比较的类型对于新、旧软件都是一致的,这时对待比较类型全部判决为一致,并累加对应的已比较结果计数,最后满足已比较结果计数与类型成员总数相等,完成新软件中此类型所有成员的比较,这时对应的原软件类型列表中尚未比较的类型则是仅存在于原软件中未被新软件匹配到的,全部判决为已被删除的数据类型。对于数据类型的四种子类型均采用此算法进行各自列表的成员一致性判决,至此得到数据类型基于数据关联性的新增、删除、修改或一致的判决结论。完成数据类型比较后进行符号类型比较,符号类型数据采用键值对的字典形式存储,通过查询主键可匹配新、旧软件的符号一致性。未匹配到的符号可根据其所属是新软件数据或是原软件数据可得到其新增或删除的结论,匹配到的符号则对具体的符号信息进行比较。在此根据比较信息的数据进行类型抽象,分别抽象出数字类型(int)、字符串类型(str)、参数类型(param)以及返回值类型(return)。其中数字和字符串类型可直接用值的内容比较大小得到一致性结论,参数和返回值类型即是已完成比较的数据类型,可直接对此前完成的比较结果做引用,由此通过一轮的遍历查找比较即可完成符号类型所有成员的一致性判决。最后对于所述ELF格式文件通用信息比较,与符号比较算法基本一致,即对主键匹配的成员比较其值得到修改或一致的结论,通用信息是ELF共有属性,因此无主键不匹配的场景。还可以对于数据类型、符号及ELF文件通用信息兼容性比较的结果,各自生成json文本报告,便于web界面的解析与可视化呈现。
基于同一发明构想,本发明还提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述基于Linux***的程序ABI接口兼容性计算方法。
所述处理器在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器(例如GPU(Graphics Processing Unit-图形处理器))、或其他数据处理芯片。该处理器通常用于控制所述电子设备的总体操作。本实施例中,所述处理器用于运行所述存储器中存储的程序代码或者处理数据,例如运行所述的基于Linux***的程序ABI接口兼容性计算方法的程序代码。
所述存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器可以是所述电子设备的内部存储单元,例如该电子设备的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。当然,所述存储器还可以既包括所述电子设备的内部存储单元也包括其外部存储设备。本实施例中,所述存储器通常用于存储安装于所述电子设备的操作方法和各类应用软件,例如所述基于Linux***的程序ABI接口兼容性计算方法的程序代码等。此外,所述存储器还可以用于暂时地存储已经输出或者将要输出的各类数据。
基于同一发明构想,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现所述基于Linux***的程序ABI接口兼容性计算方法。
本发明的优点在于实现Linux***下ELF格式程序文件之间的ABI接口兼容性分析,为软件研发、软件升级、软件迁移等场景识别出ABI接口的差异,为软件开发与维护人员进行软件兼容性评估提供依据,并能够持续跟踪软件迭代过程中ABI接口的变化。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (12)

1.一种基于Linux***的程序ABI接口兼容性计算方法,其特征在于,包括如下步骤:
S1、从Linux***中程序的ELF格式文件中解析出ABI接口信息;
S2、将所述ABI接口信息的数据根据属性差异区分为数据类型信息、符号信息和ELF文件通用信息三个类别,基于不同类别数据特征设计对应的数据存储结构进行数据管理;
S3、基于数据兼容性比较算法,对不同程序的ABI接口信息进行数据类型、符号和ELF文件通用信息三个方面的比较,基于比较计算得出兼容性计算标准,所述兼容性计算标准用于计算所述程序的ABI接口兼容性。
2.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S1还包括:
在解析出ABI接口信息之前,验证所述ELF格式文件中是否包含debuginfo信息,若所述ELF格式文件中未包含,则在所述ELF格式文件中添加对应的.debug文件进行关联解析操作。
3.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S1具体包括:首先,通过objdump命令对所述ELF格式文件进行反汇编后获取源码信息,同时使用ctags、eu-readelf及nm命令获取第一数据信息,所述第一数据信息包括符号表、依赖库、ABI接口的数据信息及各函数间地址偏移量;然后,通过遍历所述符号表,以获取第二数据信息,所述第二数据信息包括与符合关联的数据变量的名称、类型、所属源文件及头文件信息;最后,将所述第一数据信息和所述第二数据信息整合,生成所述ABI接口信息。
4.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S2具体包括:所述数据类型信息根据类型差异分为通用数据类型、typedef数据类型、结构数据类型、函数数据类型四种子类型,并对所述四种子类型各自采用不同的列表式存储结构进行储存。
5.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S2还包括:所述符号信息的数据存储结构采用键值对的字典表示方法,所述字典表示方法表示将符号名称作为键,符号对应的定义作为值进行一一映射。
6.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S2还包括:所述ELF文件通用信息采用键值对形式的储存方式,所述键值对形式的储存方式指将每个ELF文件的共有信息属性名称作为键,将各个ELF文件对于该属性的具体信息内容作为值。
7.根据权利要求6所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,还包括将所述数据类型信息、所述符号信息和所述ELF文件通用信息集中封装为数据管理器。
8.根据权利要求1所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,步骤S3具体包括:所述数据兼容性比较算法包括数据类型比较算法、符号类型比较算法和ELF文件通用信息比较算法,分别用于比较不同ABI接口信息中的数据类型信息、符号信息和ELF文件通用信息。
9.根据权利要求8所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,对于数据类型比较算法,按照结构数据类型、通用数据类型、typedef数据类型、函数数据类型的顺序进行比较判决,得到数据类型基于数据关联性的新增、删除、修改或一致的判决结论。
10.根据权利要求8所述的基于Linux***的程序ABI接口兼容性计算方法,其特征在于,对于符号类型比较算法,根据主键符号名称查询相应的符号定义,对所述符号定义中各个数据划分为数字类型、字符串类型、参数类型、返回值类型进行比较判决,得到新增、删除、修改或一致的判决结论。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1-10任一项所述的方法。
12.一种可读存储介质,其特征在于,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-10任一项所述的方法。
CN202210412932.1A 2022-04-20 2022-04-20 基于Linux***的程序ABI接口兼容性计算方法 Active CN114510267B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210412932.1A CN114510267B (zh) 2022-04-20 2022-04-20 基于Linux***的程序ABI接口兼容性计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210412932.1A CN114510267B (zh) 2022-04-20 2022-04-20 基于Linux***的程序ABI接口兼容性计算方法

Publications (2)

Publication Number Publication Date
CN114510267A true CN114510267A (zh) 2022-05-17
CN114510267B CN114510267B (zh) 2023-03-21

Family

ID=81555379

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210412932.1A Active CN114510267B (zh) 2022-04-20 2022-04-20 基于Linux***的程序ABI接口兼容性计算方法

Country Status (1)

Country Link
CN (1) CN114510267B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816772A (zh) * 2022-06-29 2022-07-29 统信软件技术有限公司 基于兼容层运行的应用的排错方法、排错***及计算设备
CN115659941A (zh) * 2022-11-11 2023-01-31 摩尔线程智能科技(北京)有限责任公司 适应于多类型接口的文件生成方法及装置
CN117251205A (zh) * 2023-11-16 2023-12-19 沐曦集成电路(杭州)有限公司 一种头文件的处理方法、装置、设备及介质
CN117407047A (zh) * 2023-12-13 2024-01-16 麒麟软件有限公司 一种基于图数据库的linux生态依赖关系图谱构建方法及应用

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054946A1 (en) * 2002-09-18 2004-03-18 Dario Atallah System and method for assessing compatibility risk
US6769115B1 (en) * 2000-05-01 2004-07-27 Emc Corporation Adaptive interface for a software development environment
US20070168957A1 (en) * 2005-11-08 2007-07-19 Red Hat, Inc. Certifying a software application based on identifying interface usage
US20120131563A1 (en) * 2010-11-23 2012-05-24 Kushal Das Mechanism for providing customized visualization of application binary interface/application programming interface-related information
CN104063234A (zh) * 2013-03-19 2014-09-24 华为技术有限公司 一种兼容方法及装置
CN104699466A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 一种面向vliw体系结构的多元启发式指令选择方法
CN104951296A (zh) * 2014-03-28 2015-09-30 英特尔公司 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块
CN109165209A (zh) * 2018-08-14 2019-01-08 上海达梦数据库有限公司 数据库中对象类型的数据校验方法、装置、设备及介质
CN111221777A (zh) * 2020-01-02 2020-06-02 中国银行股份有限公司 一种数据记录的匹配方法及装置
CN111930385A (zh) * 2020-07-28 2020-11-13 苏州亿歌网络科技有限公司 数据采集方法、装置、设备及存储介质
CN112148283A (zh) * 2020-09-14 2020-12-29 第六镜科技(成都)有限公司 一种跨平台的abi兼容c++组件框架的实现方法
CN113688045A (zh) * 2021-08-26 2021-11-23 烽火通信科技股份有限公司 一种二进制接口兼容性自动检查方法及装置
CN114217773A (zh) * 2021-12-13 2022-03-22 中国船舶重工集团公司第七0九研究所 一种c/c++语言软件包二进制接口兼容性自动化判别方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769115B1 (en) * 2000-05-01 2004-07-27 Emc Corporation Adaptive interface for a software development environment
US20040054946A1 (en) * 2002-09-18 2004-03-18 Dario Atallah System and method for assessing compatibility risk
US20070168957A1 (en) * 2005-11-08 2007-07-19 Red Hat, Inc. Certifying a software application based on identifying interface usage
US20120131563A1 (en) * 2010-11-23 2012-05-24 Kushal Das Mechanism for providing customized visualization of application binary interface/application programming interface-related information
CN104063234A (zh) * 2013-03-19 2014-09-24 华为技术有限公司 一种兼容方法及装置
CN104951296A (zh) * 2014-03-28 2015-09-30 英特尔公司 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块
CN104699466A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 一种面向vliw体系结构的多元启发式指令选择方法
CN109165209A (zh) * 2018-08-14 2019-01-08 上海达梦数据库有限公司 数据库中对象类型的数据校验方法、装置、设备及介质
CN111221777A (zh) * 2020-01-02 2020-06-02 中国银行股份有限公司 一种数据记录的匹配方法及装置
CN111930385A (zh) * 2020-07-28 2020-11-13 苏州亿歌网络科技有限公司 数据采集方法、装置、设备及存储介质
CN112148283A (zh) * 2020-09-14 2020-12-29 第六镜科技(成都)有限公司 一种跨平台的abi兼容c++组件框架的实现方法
CN113688045A (zh) * 2021-08-26 2021-11-23 烽火通信科技股份有限公司 一种二进制接口兼容性自动检查方法及装置
CN114217773A (zh) * 2021-12-13 2022-03-22 中国船舶重工集团公司第七0九研究所 一种c/c++语言软件包二进制接口兼容性自动化判别方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A.PONOMARENKO ET AL.: ""Backward Compatibility of Software Interfaces: Steps towards Automatic Verification"", 《PROGRAMMING AND COMPUTER SOFTWARE》 *
CANPOOL: ""abi-compliance-checker理解"", 《CSDN(HTTPS://BLOG.CSDN.NET/CANPOOL/ARTICLE/DETAILS/118380060)》 *
何兴鹏 等: ""Linux程序向Android平台移植的研究"", 《计算机测量与控制》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816772A (zh) * 2022-06-29 2022-07-29 统信软件技术有限公司 基于兼容层运行的应用的排错方法、排错***及计算设备
CN114816772B (zh) * 2022-06-29 2022-09-06 统信软件技术有限公司 基于兼容层运行的应用的排错方法、排错***及计算设备
CN115659941A (zh) * 2022-11-11 2023-01-31 摩尔线程智能科技(北京)有限责任公司 适应于多类型接口的文件生成方法及装置
CN117251205A (zh) * 2023-11-16 2023-12-19 沐曦集成电路(杭州)有限公司 一种头文件的处理方法、装置、设备及介质
CN117251205B (zh) * 2023-11-16 2024-02-06 沐曦集成电路(杭州)有限公司 一种头文件的处理方法、装置、设备及介质
CN117407047A (zh) * 2023-12-13 2024-01-16 麒麟软件有限公司 一种基于图数据库的linux生态依赖关系图谱构建方法及应用
CN117407047B (zh) * 2023-12-13 2024-04-05 麒麟软件有限公司 一种基于图数据库的linux生态依赖关系图谱构建方法及应用

Also Published As

Publication number Publication date
CN114510267B (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
CN114510267B (zh) 基于Linux***的程序ABI接口兼容性计算方法
US9594553B2 (en) Identifying semantic differences between source code versions
US10621211B2 (en) Language tag management on international data storage
US9400733B2 (en) Pattern matching framework for log analysis
US20100050155A1 (en) Method, computer program product, and hardware product for providing program individuality analysis for source code programs
CN111666206A (zh) 变更代码的影响范围的获取方法、装置、设备及存储介质
CN115129736A (zh) 基于规则引擎的规则事件动态加载与更新方法及相关设备
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN111694612A (zh) 配置检查方法、装置、计算机***及存储介质
US10592400B2 (en) System and method for creating variants in a test database during various test stages
US10678864B2 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
US11182272B2 (en) Application state monitoring
CN110633084A (zh) 基于单个样例的代码转换推导方法和装置
CN106844218B (zh) 一种基于演化切片的演化影响集预测方法
CN115705250A (zh) 监测堆栈使用量以优化程序
CN115438026A (zh) 一种数据库扫描方法、装置、设备、存储介质及产品
US11256602B2 (en) Source code file retrieval
Tukaram Design and development of software tool for code clone search, detection, and analysis
CN114168119A (zh) 代码文件编辑方法、装置、电子设备以及存储介质
CN110321130B (zh) 基于***调用日志的不可重复编译定位方法
Andrzejak et al. Confguru-A system for fully automated debugging of configuration errors
CN116483735B (zh) 一种代码变更的影响分析方法、装置、存储介质及设备
CN116755684B (zh) OAS Schema的生成方法、装置、设备及介质
US20230418792A1 (en) Method to track and clone data artifacts associated with distributed data processing pipelines
CN115600037A (zh) 基于前端埋点的数据采集方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant