CN103235745B - 一种地址冲突检测方法及装置 - Google Patents

一种地址冲突检测方法及装置 Download PDF

Info

Publication number
CN103235745B
CN103235745B CN201310102385.8A CN201310102385A CN103235745B CN 103235745 B CN103235745 B CN 103235745B CN 201310102385 A CN201310102385 A CN 201310102385A CN 103235745 B CN103235745 B CN 103235745B
Authority
CN
China
Prior art keywords
file
file destination
address
information
code segment
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.)
Active
Application number
CN201310102385.8A
Other languages
English (en)
Other versions
CN103235745A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310102385.8A priority Critical patent/CN103235745B/zh
Publication of CN103235745A publication Critical patent/CN103235745A/zh
Application granted granted Critical
Publication of CN103235745B publication Critical patent/CN103235745B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种地址冲突检测方法及装置,涉及计算机领域,能够在链接过程中对多个目标文件共享的内存地址进行地址冲突检测,以保证链接后的多个二进制镜像文件共享的内存地址无冲突,从而,一定程度上避免了地址冲突引起系统崩溃的问题。该方法包括:获取n个目标文件共享的内存地址;创建日志文件并将n个目标文件中第一个进行链接的目标文件的地址信息保存至日志文件中;将n个目标文件中第m个进行链接的目标文件的地址信息与日志文件中的地址信息进行冲突检测;若第m个进行链接的目标文件的地址信息与日志文件中的地址信息冲突,则提示链接错误;若第m个进行链接的目标文件的地址信息与日志文件中的地址信息未冲突,则更新日志文件。

Description

一种地址冲突检测方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种地址冲突检测方法及装置。
背景技术
在多核DSP(Digital Signal Processing,数字信号处理)系统对应的多核二进制镜像文件中,往往存在多个核所对应的二进制镜像文件共享同一段内存地址的情况。由于每个核对应的源文件都会被编译为一个目标文件,并且每个目标文件均使用不同的链接脚本链接为二进制镜像文件,这样一来,很容易导致多个核所对应的二进制镜像文件共享的内存地址发生地址冲突。
现有技术中,美国德州仪器公司的CCS(Code Composer Studio,代码调试器)和Tensilica公司的Xplorer均只能对单个目标文件进行链接,在链接过程中,若出现目标文件中的多个代码段的内存地址重叠或者某个代码段的内存地址容量不足以存放代码段的情况,链接器将会终止链接,并提示链接错误;而对于多个目标文件共享同一段内存地址的情况,只能在将多个目标文件链接后的多个二进制镜像文件进行仿真或下载至单板运行时才能进行地址冲突检测。
然而,上述CCS虽然有多核调试特性,但其实际是将一个目标文件同时部署到多个核上进行调试的,因此,使用CCS或Xplorer对目标文件进行链接时,均只能对单个目标文件的内存地址进行地址冲突检测,不能对多个目标文件的内存地址进行地址冲突检测;而若在仿真阶段或单板运行阶段时对多个二进制镜像文件进行地址冲突检测,则当出现地址冲突时会引起系统崩溃,同时增加了地址冲突问题的定位难度,降低了工作效率。
发明内容
本发明的实施例提供一种地址冲突检测方法及装置,能够在链接过程中对多个目标文件共享的内存地址进行地址冲突检测,以保证链接后的多个二进制镜像文件共享的内存地址无冲突,从而,一定程度上避免了因地址冲突引起系统崩溃的问题。
本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种地址冲突检测方法,包括:
获取n个目标文件共享的内存地址范围,其中,n≥2;
创建日志文件,并将所述n个目标文件中的第一个进行链接的目标文件的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息;
将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n;
若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,则提示链接错误;
若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,则更新所述日志文件。
在第一方面的第一种可能的实现方式中,
所述n个目标文件中的每一个进行链接的目标文件的地址信息包括:所述每一个进行链接的目标文件的代码段信息及所述每一个进行链接的目标文件的全局变量信息,其中,所述每一个进行链接的目标文件的全局变量信息为所述每一个进行链接的目标文件与除所述每一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
所述日志文件中保存的地址信息包括:代码段信息及全局变量信息。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述每一个进行链接的目标文件的代码段信息包括:所述每一个进行链接的目标文件的代码段名称及所述每一个进行链接的目标文件的代码段内存地址,其中,所述每一个进行链接的目标文件的代码段内存地址包括所述每一个进行链接的目标文件的代码段起始地址及所述每一个进行链接的目标文件的代码段长度;
所述每一个进行链接的目标文件的全局变量信息包括:所述每一个进行链接的目标文件的全局变量名称及所述每一个进行链接的目标文件的全局变量内存地址,其中,所述每一个进行链接的目标文件的全局变量内存地址包括所述每一个进行链接的目标文件的全局变量起始地址及所述每一个进行链接的目标文件的全局变量长度;
所述代码段信息包括:代码段名称及代码段内存地址,其中,所述代码段内存地址包括代码段起始地址及代码段长度;
所述全局变量信息包括:全局变量名称及全局变量内存地址,其中,所述全局变量内存地址包括全局变量起始地址及全局变量长度。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测的步骤,包括:
判断所述第m个进行链接的目标文件的代码段名称与所述代码段名称是否相同;
若所述第m个进行链接的目标文件的代码段名称与所述代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址是否相同;
若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述代码段长度是否相等;
若所述第m个进行链接的目标文件的代码段长度与所述代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突;
或者,
若所述第m个进行链接的目标文件的代码段名称与所述代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址是否重合;
若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
结合第一方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测的步骤,包括:
判断所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称是否相同;
若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址是否相同;
若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度是否相等;
若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突;
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址是否重合;
若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
结合前述的第一方面或第一方面的第一种可能的实现方式至第二种可能的实现方式中的任一种实现方式,在第五种可能的实现方式中,所述更新所述日志文件,包括:
将与所述代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至所述日志文件中,以及将与所述全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至所述日志文件中。
在第一方面的第六种可能的实现方式中,所述n个目标文件共享的内存地址范围为以关键字表示的地址范围。
结合前述的第一方面或第一方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第七种可能的实现方式中,将所述第一个进行链接的目标文件链接完成后,所述方法还包括:
生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件。
结合前述的第一方面或第一方面的第一种可能的实现方式至第七种可能的实现方式中的任一种实现方式,在第八种可能的实现方式中,将所述第m个进行链接的目标文件链接完成后,所述方法还包括:
生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件。
第二方面,本发明实施例提供一种地址冲突检测装置,包括:
获取单元,用于获取n个目标文件共享的内存地址范围,其中,n≥2;
处理单元,用于创建日志文件,并将所述n个目标文件中的第一个进行链接的目标文件的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息;
检测单元,用于将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n;
提示单元,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,则提示链接错误;
更新单元,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,则更新所述日志文件。
在第二方面的第一种可能的实现方式中,
所述处理单元,具体用于将包括所述第一个进行链接的目标文件的代码段信息及所述第一个进行链接的目标文件的全局变量信息的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的全局变量信息为所述第一个进行链接的目标文件与除所述第一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
其中,
所述第一个进行链接的目标文件的代码段信息包括:所述第一个进行链接的目标文件的代码段名称及所述第一个进行链接的目标文件的代码段内存地址,所述第一个进行链接的目标文件的代码段内存地址包括所述第一个进行链接的目标文件的代码段起始地址及所述第一个进行链接的目标文件的代码段长度;
所述第一个进行链接的目标文件的全局变量信息包括:所述第一个进行链接的目标文件的全局变量名称及所述第一个进行链接的目标文件的全局变量内存地址,所述第一个进行链接的目标文件的全局变量内存地址包括所述第一个进行链接的目标文件的全局变量起始地址及所述第一个进行链接的目标文件的全局变量长度。
在第二方面的第二种可能的实现方式中,
所述检测单元,具体用于将包括所述第m个进行链接的目标文件的代码段信息及所述第m个进行链接的目标文件的全局变量信息的地址信息,与所述日志文件中保存的包括代码段信息及全局变量信息的地址信息进行冲突检测,所述第m个进行链接的目标文件的全局变量信息为所述第m个进行链接的目标文件与除所述第m个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
其中,
所述第m个进行链接的目标文件的代码段信息包括:所述第m个进行链接的目标文件的代码段名称及所述第m个进行链接的目标文件的代码段内存地址,所述第m个进行链接的目标文件的代码段内存地址包括所述第m个进行链接的目标文件的代码段起始地址及所述第m个进行链接的目标文件的代码段长度;
所述第m个进行链接的目标文件的全局变量信息包括:所述第m个进行链接的目标文件的全局变量名称及所述第m个进行链接的目标文件的全局变量内存地址,所述第m个进行链接的目标文件的全局变量内存地址包括所述第m个进行链接的目标文件的全局变量起始地址及所述第m个进行链接的目标文件的全局变量长度;
所述代码段信息包括:代码段名称及代码段内存地址,其中,所述代码段内存地址包括代码段起始地址及代码段长度;
所述全局变量信息包括:全局变量名称及全局变量内存地址,其中,所述全局变量内存地址包括全局变量起始地址及全局变量长度。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,
所述检测单元,具体用于判断所述第m个进行链接的目标文件的代码段名称与所述代码段名称是否相同,若所述第m个进行链接的目标文件的代码段名称与所述代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址是否相同,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述代码段长度是否相等,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突;
或者,
若所述第m个进行链接的目标文件的代码段名称与所述代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址是否重合,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
结合第二方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,
所述检测单元,具体用于判断所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称是否相同,若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址是否相同,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度是否相等,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突;
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址是否重合,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
结合前述的第二方面或第二方面的第一种可能的实现方式至第二种可能的实现方式中的任一种实现方式,在第五种可能的实现方式中,
所述更新单元,具体用于将与所述代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至所述日志文件中,以及将与所述全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至所述日志文件中。
在第二方面的第六种可能的实现方式中,
所述获取单元,具体用于获取以关键字表示的,所述n个目标文件共享的内存地址范围。
结合前述的第二方面或第二方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第七种可能的实现方式中,
所述处理单元,还用于将所述第一个进行链接的目标文件链接完成后,生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件。
结合前述的第二方面或第二方面的第一种可能的实现方式至第七种可能的实现方式中的任一种实现方式,在第八种可能的实现方式中,
所述处理单元,还用于将所述第m个进行链接的目标文件链接完成后,生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件。
本发明实施例提供一种地址冲突检测方法及装置,通过获取n个目标文件共享的内存地址范围,其中,n≥2,以及,创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,从而,将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,进而,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则提示链接错误,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则更新日志文件。通过该方案,在链接过程中可对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种地址冲突检测方法的流程图一;
图2为本发明实施例提供的一种地址冲突检测方法的流程图二;
图3为本发明实施例提供的一种地址冲突检测装置的结构示意图;
图4为本发明实施例提供的一种计算机节点的结构示意图;
图5为本发明实施例提供的一种地址冲突检测方法的流程图三。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本发明实施例提供一种地址冲突检测方法,本发明实施例的方法的执行主体可以是计算机节点(亦可称为计算节点),该方法可以包括:
S101、获取n个目标文件共享的内存地址范围,其中,n≥2。
本发明实施例中,用户以链接器原有的链接脚本语法为基础,编写一个配置文件,并在该配置文件中设置n个目标文件共享的内存地址范围。
其中,链接器为可以将一个或多个由编译器或汇编器生成的目标文件与库链接为一个可执行文件的程序。链接器通常用于解析未定义的符号引用,将目标文件中的占位符替换为符号的地址,以及完成可执行文件中各个目标文件的地址空间的组织。
特别的,上述n个目标文件表示某多核系统所对应的n个目标文件,若需对n个目标文件进行链接,则计算机节点首先从用户提供的配置文件中获取n个目标文件共享的内存地址范围,其中,n≥2。
具体的,上述n的取值为大于等于2的整数,即n的取值可以为2,3,4......,示例性的,若n的值为2,则某多核系统可以为2核系统,若n的值为3,则某多核系统可以为3核系统等等(可用于表示n的值与核的数量一一对应的情况)。
本发明实施例中,冲突检测可以为对多个目标文件共享的地址信息进行冲突检测,即检测多个目标文件共享的地址信息之间有无冲突。具体的,以多个目标文件共享的地址信息包括多个目标文件共享的代码段信息为例,将一个代码段信息(多个目标文件中的一个目标文件与除该一个目标文件外的其他目标文件共享的代码段信息)与另一个代码段信息(多个目标文件中的另一个目标文件与除该另一个目标文件外的其他目标文件共享的代码段信息)进行比较,若该一个代码段信息与另一个代码段信息不满足某种条件(例如:在该一个代码段的名称与另一个代码段的名称不相同的条件下,该一个代码段占用的内存空间与另一个代码段占用的内存空间不能有重合),则表示该一个代码段信息与另一个代码段信息发生冲突,当然,具体的冲突检测的过程可参考后续实施例,此处不进行详述。
S102、创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
其中,日志文件为用于记录系统操作事件的记录文件或文件集合,如操作系统有操作系统日志文件,数据库系统有数据库系统日志文件等等。
本发明实施例中,计算机节点在对目标文件进行链接的同时创建一个日志文件,该日志文件用于记录该计算机节点对目标文件进行链接的过程。在对n个目标文件进行链接时,计算机节点首先将第一个进行链接的目标文件的地址信息保存至创建的日志文件中,其中,第一个进行的链接的目标文件的地址信息为第一个进行的链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
需要说明的是,本发明实施例可针对n个目标文件共享的内存地址范围进行地址冲突检测,对于未共享的内存地址范围,则不存在地址冲突的问题,因此,上述保存至日志文件中的第一个进行链接的目标文件的地址信息为第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
S103、将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n。
示例性的,计算机节点将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,其中,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,即计算机节点对n个目标文件进行链接时,从第2个进行链接的目标文件开始进行地址冲突检测,一直到第n个进行链接的目标文件结束地址冲突检测。
具体的,计算机节点对n个目标文件中的第m个进行链接的目标文件进行链接时,计算机节点需要将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,即计算机节点需检测n个目标文件共享的内存地址范围内的,第m个进行链接的目标文件的地址信息与前m-1个目标文件的地址信息是否冲突。
S104、若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则提示链接错误。
若计算机节点检测第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则计算机节点提示链接错误,同时终止链接过程。
S105、若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则更新日志文件。
若计算机节点检测第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则计算机节点更新日志文件,即将第m个进行链接的目标文件的需保存的地址信息保存至日志文件中。
具体的,若m=2,即计算机节点对第一个进行链接的目标文件链接后,再对第2个进行链接的目标文件进行链接,在链接过程中,计算机节点将第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息(即第一个进行链接的目标文件的地址信息)进行冲突检测,若第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息冲突,则计算机节点提示链接错误,同时终止链接过程;若第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息未冲突,则计算机节点更新上述日志文件中保存的地址信息,即将第2个进行链接的目标文件的需保存的地址信息保存至日志文件中。
若m=3,即计算机节点对第一个进行链接的目标文件及第2个进行链接的目标文件进行链接后,再对第3个进行链接的目标文件进行链接,在链接过程中,计算机节点将第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息(即第一个进行链接的目标文件的地址信息和第2个进行链接的目标文件的需保存的地址信息)进行冲突检测,若第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息冲突,则计算机节点提示链接错误,同时终止链接过程;若第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息未冲突,则计算机节点更新上述日志文件中保存的地址信息,即将第3个进行链接的目标文件的需保存的地址信息保存至上述日志文件中。
以此类推,m的取值还可以为4,5,6......,即计算机节点对第m个进行链接的目标文件进行链接时,将第m个进行链接的目标文件的地址信息与上述日志文件中保存的前m-1个目标文件的地址信息进行冲突检测,以保证n个目标文件共享的内存地址均无冲突。
本发明实施例提供一种地址冲突检测方法,通过获取n个目标文件共享的内存地址范围,其中,n≥2,以及,创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,从而,将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,进而,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则提示链接错误,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则更新日志文件。通过该方案,在链接过程中可对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题,进而,解决了现有技术中在链接阶段只能对单个目标文件进行地址冲突检测及只能在仿真阶段或单板运行阶段对多个目标文件进行地址冲突检测的问题,同时减小了地址冲突问题的定位难度,提高了工作效率。
实施例二
如图2所示,本发明实施例提供一种地址冲突检测方法,本发明实施例的方法的执行主体可以是计算机节点(亦可称为计算节点),该方法可以包括:
S201、获取n个目标文件共享的内存地址范围,其中,n≥2。
本发明实施例中,用户以链接器原有的链接脚本语法为基础,编写一个配置文件,并在该配置文件中设置n个目标文件共享的内存地址范围。
具体的,用户可以在配置文件中通过关键字设置n个目标文件共享的内存地址范围。
其中,链接器为可以将一个或多个由编译器或汇编器生成的目标文件与库链接为一个可执行文件的程序。链接器通常用于解析未定义的符号引用,将目标文件中的占位符替换为符号的地址,以及完成可执行文件中各个目标文件的地址空间的组织。
特别的,上述n个目标文件表示某多核系统所对应的n个目标文件,若需对n个目标文件进行链接,则计算机节点首先从用户提供的配置文件中获取n个目标文件共享的内存地址范围,其中,n≥2。
具体的,上述n的取值为大于等于2的整数,即n的取值可以为2,3,4......,示例性的,若n的值为2,则某多核系统可以为2核系统,若n的值为3,则某多核系统可以为3核系统等等(可用于表示n的值与核的数量一一对应的情况)。
本发明实施例中,冲突检测可以为对多个目标文件共享的地址信息进行冲突检测,即检测多个目标文件共享的地址信息之间有无冲突。具体的,以多个目标文件共享的地址信息包括多个目标文件共享的代码段信息为例,将一个代码段信息(多个目标文件中的一个目标文件与除该一个目标文件外的其他目标文件共享的代码段信息)与另一个代码段信息(多个目标文件中的另一个目标文件与除该另一个目标文件外的其他目标文件共享的代码段信息)进行比较,若该一个代码段信息与另一个代码段信息不满足某种条件(例如:在该一个代码段的名称与另一个代码段的名称不相同的条件下,该一个代码段占用的内存空间与另一个代码段占用的内存空间不能有重合),则表示该一个代码段信息与另一个代码段信息发生冲突,当然,具体的冲突检测的过程可参考本实施例中下述的检测步骤。
S202、创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
其中,日志文件为用于记录系统操作事件的记录文件或文件集合,如操作系统有操作系统日志文件,数据库系统有数据库系统日志文件等。
本发明实施例中,计算机节点在对目标文件进行链接的同时创建一个日志文件,该日志文件用于记录该计算机节点对目标文件进行链接的过程。在对n个目标文件进行链接时,计算机节点首先将第一个进行链接的目标文件的地址信息保存至创建的日志文件中,其中,第一个进行的链接的目标文件的地址信息为第一个进行的链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
需要说明的是,本发明实施例可针对n个目标文件共享的内存地址范围进行地址冲突检测,对于未共享的内存地址范围,则不存在地址冲突的问题,因此,上述保存至日志文件中的第一个进行链接的目标文件的地址信息为第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息。
特别的,第一个进行链接的目标文件的地址信息包括第一个进行链接的目标文件的代码段信息及第一个进行链接的目标文件的全局变量信息,其中,第一个进行链接的目标文件的全局变量信息为第一个进行链接的目标文件与除第一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
其中,全局变量也称为外部变量,它是在函数外部定义的变量,它不属于哪一个函数,它属于一个源程序文件,其作用域是整个源程序文件。若需在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,但在一个函数之前定义的全局变量,在该函数内使用时可不需再进行说明。
进一步地,计算机节点在对第一个进行链接的目标文件链接时,计算机节点不需对第一个进行链接的目标文件进行地址冲突检测,只需将第一个进行链接的目标文件的代码段信息及第一个进行链接的目标文件的全局变量信息保存至创建的日志文件中即可。
S203、生成与第一个进行链接的目标文件对应的第一个二进制镜像文件。
计算机节点在对第一个进行链接的目标文件链接完成后,计算机节点生成与第一个进行链接的目标文件对应的第一个二进制镜像文件(即.bin格式的文件),其中,“镜像文件”为与压缩包类似的,将特定的一系列文件按照一定的格式制作成的单一的文件;“二进制镜像文件”则为二进制形式的镜像文件。
本领域普通技术人员可以理解,计算机节点对第一个进行链接的目标文件链接后生成的第一个二进制镜像文件为可执行文件,即若将该二进制镜像文件加载至仿真器或下载至单板,则仿真器或单板可对该二进制镜像文件进行仿真或运行。
S204、将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n。
计算机节点将n个目标文件中的第m个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,即计算机节点对n个目标文件进行链接时,从第2个进行链接的目标文件开始进行地址冲突检测,一直到第n个进行链接的目标文件结束地址冲突检测。
需要说明的是,n个目标文件中的每一个进行链接的目标文件的地址信息均可以包括每一个进行链接的目标文件的代码段信息及每一个进行链接的目标文件的全局变量信息,其中,每一个进行链接的目标文件的全局变量信息为每一个进行链接的目标文件与除每一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
进一步地,日志文件中保存的地址信息包括代码段信息及全局变量信息。
本领域普通技术人员可以理解,根据上述n个目标文件中的每一个进行链接的目标文件的地址信息,可以推出上述n个目标文件中的第一个进行链接的目标文件的地址信息,以及n个目标文件中的第m个进行链接的目标文件的地址信息,即第m个进行链接的目标文件的地址信息包括第m个进行链接的目标文件的代码段信息及第m个进行链接的目标文件的全局变量信息,其中,第m个进行链接的目标文件的全局变量信息为第m个进行链接的目标文件与除第m个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
可以理解的是,计算机节点将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测时,需分别将第m个进行链接的目标文件的代码段信息与日志文件中保存的代码段信息进行冲突检测,以及将第m个进行链接的目标文件的全局变量信息与日志文件中保存的全局变量信息进行冲突检测。
进一步地,上述每一个进行链接的目标文件的代码段信息包括每一个进行链接的目标文件的代码段名称及每一个进行链接的目标文件的代码段内存地址,其中,每一个进行链接的目标文件的代码段内存地址包括每一个进行链接的目标文件的代码段起始地址及每一个进行链接的目标文件的代码段长度。
上述每一个进行链接的目标文件的全局变量信息包括每一个进行链接的目标文件的全局变量名称及每一个进行链接的目标文件的全局变量内存地址,其中,每一个进行链接的目标文件的全局变量内存地址包括每一个进行链接的目标文件的全局变量起始地址及每一个进行链接的目标文件的全局变量长度。
本领域普通技术人员可以理解,根据上述每一个进行链接的目标文件的代码段信息,可以推出上述第一个进行链接的目标文件的代码段信息及上述第m个进行链接的目标文件的代码段信息;以及根据上述每一个进行链接的目标文件的全局变量信息,可以推出第一个进行链接的目标文件的全局变量信息及第m个进行链接的目标文件的全局变量信息,即上述第m个进行链接的目标文件的代码段信息包括第m个进行链接的目标文件的代码段名称及第m个进行链接的目标文件的代码段内存地址,其中,第m个进行链接的目标文件的代码段内存地址包括第m个进行链接的目标文件的代码段起始地址及第m个进行链接的目标文件的代码段长度。
同样地,上述第m个进行链接的目标文件的全局变量信息包括第m个进行链接的目标文件的全局变量名称及第m个进行链接的目标文件的全局变量内存地址,其中,第m个进行链接的目标文件的全局变量内存地址包括第m个进行链接的目标文件的全局变量起始地址及第m个进行链接的目标文件的全局变量长度。
进一步地,日志文件中保存的代码段信息包括代码段名称及代码段内存地址,其中,代码段内存地址包括代码段起始地址及代码段长度。
日志文件中保存的全局变量信息包括全局变量名称及全局变量内存地址,其中,全局变量内存地址包括全局变量起始地址及全局变量长度。
本发明实施例中,计算机节点将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测的方法具体可以包括(计算机节点对第m个进行链接的目标文件的代码段信息进行检测):
(1)计算机节点判断第m个进行链接的目标文件的代码段名称与上述代码段名称是否相同。
(2)若第m个进行链接的目标文件的代码段名称与上述代码段名称相同,则计算机节点判断第m个进行链接的目标文件的代码段起始地址与上述码段起始地址是否相同。
(3)若第m个进行链接的目标文件的代码段起始地址与上述代码段起始地址不同,则第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息冲突,若第m个进行链接的目标文件的代码段起始地址与上述代码段起始地址相同,则计算机节点判断第m个进行链接的目标文件的代码段长度与上述代码段长度是否相等。
(4)若第m个进行链接的目标文件的代码段长度与上述代码段长度不相等,则第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息冲突,若第m个进行链接的目标文件的代码段长度与上述代码段长度相等,则第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息未冲突。
或者,
(5)若第m个进行链接的目标文件的代码段名称与上述代码段名称不同,则计算机节点判断第m个进行链接的目标文件的代码段内存地址与上述代码段内存地址是否重合。
(6)若第m个进行链接的目标文件的代码段内存地址与上述代码段内存地址重合,则第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息冲突,若第m个进行链接的目标文件的代码段内存地址与上述代码段内存地址未重合,则第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息未冲突。
需要说明的是,计算机节点在将第m个进行链接的目标文件的代码段信息与上述日志文件中保存的代码段信息进行冲突检测时,首先执行(1),即判断第m个进行链接的目标文件的代码段名称与日志文件中保存的代码段名称是否相同,若第m个进行链接的目标文件的代码段名称与日志文件中保存的代码段名称相同,则计算机节点执行(2)、(3)和(4);相反的,若第m个进行链接的目标文件的代码段名称与日志文件中保存的代码段名称不同,则计算机节点执行(5)和(6)。
本领域普通技术人员可以理解,计算机节点执行(2)、(3)和(4)时,即在第m个进行链接的目标文件的代码段名称与日志文件中保存的代码段名称相同的条件下,本发明实施例不限制计算机节点将第m个进行链接的目标文件的代码段起始地址与日志文件中保存的代码段起始地址进行冲突检测的过程,及将第m个进行链接的目标文件的代码段长度与日志文件中保存的代码段长度进行冲突检测的过程的执行顺序,即本发明实施例可以先执行将第m个进行链接的目标文件的代码段起始地址与日志文件中保存的代码段起始地址进行冲突检测的过程,后执行将第m个进行链接的目标文件的代码段长度与日志文件中保存的代码段长度进行冲突检测的过程;也可以先执行将第m个进行链接的目标文件的代码段长度与日志文件中保存的代码段长度进行冲突检测的过程,后执行将第m个进行链接的目标文件的代码段起始地址与日志文件中保存的代码段起始地址进行冲突检测的过程;还可以同时执行将第m个进行链接的目标文件的代码段起始地址与日志文件中保存的代码段起始地址进行冲突检测的过程,及将第m个进行链接的目标文件的代码段长度与日志文件中保存的代码段长度进行冲突检测的过程。
本发明实施例中,计算机节点将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测的方法具体可以包括(计算机节点对第m个进行链接的目标文件的全局变量信息进行检测):
(1)计算机节点判断第m个进行链接的目标文件的全局变量名称与上述全局变量名称是否相同。
(2)若第m个进行链接的目标文件的全局变量名称与上述全局变量名称相同,则计算机节点判断第m个进行链接的目标文件的全局变量起始地址与上述全局变量起始地址是否相同。
(3)若第m个进行链接的目标文件的全局变量起始地址与上述全局变量起始地址不同,则第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息冲突,若第m个进行链接的目标文件的全局变量起始地址与上述全局变量起始地址相同,则计算机节点判断第m个进行链接的目标文件的全局变量长度与上述全局变量长度是否相等。
(4)若第m个进行链接的目标文件的全局变量长度与上述全局变量长度不相等,则第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息冲突,若第m个进行链接的目标文件的全局变量长度与上述全局变量长度相等,则第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息未冲突。
或者,
(5)若第m个进行链接的目标文件的全局变量名称与上述全局变量名称不同,则计算机节点判断第m个进行链接的目标文件的全局变量内存地址与上述全局变量内存地址是否重合。
(6)若第m个进行链接的目标文件的全局变量内存地址与上述全局变量内存地址重合,则第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息冲突,若第m个进行链接的目标文件的全局变量内存地址与上述全局变量内存地址未重合,则第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息未冲突。
需要说明的是,计算机节点在将第m个进行链接的目标文件的全局变量信息与上述日志文件中保存的全局变量信息进行冲突检测时,首先执行(1),即判断第m个进行链接的目标文件的全局变量名称与日志文件中保存的全局变量名称是否相同,若第m个进行链接的目标文件的全局变量名称与日志文件中保存的全局变量名称相同,则计算机节点执行(2)、(3)和(4);相反的,若第m个进行链接的目标文件的全局变量名称与日志文件中保存的全局变量名称不同,则计算机节点执行(5)和(6)。
本领域普通技术人员可以理解,计算机节点执行(2)、(3)和(4)时,即在第m个进行链接的目标文件的全局变量名称与日志文件中保存的全局变量名称相同的条件下,本发明实施例不限制计算机节点将第m个进行链接的目标文件的全局变量起始地址与日志文件中保存的全局变量起始地址进行冲突检测的过程,及将第m个进行链接的目标文件的全局变量长度与日志文件中保存的全局变量长度进行冲突检测的过程的执行顺序,即本发明实施例可以先执行将第m个进行链接的目标文件的全局变量起始地址与日志文件中保存的全局变量起始地址进行冲突检测的过程,后执行将第m个进行链接的目标文件的全局变量长度与日志文件中保存的全局变量长度进行冲突检测的过程;也可以先执行将第m个进行链接的目标文件的全局变量长度与日志文件中保存的全局变量长度进行冲突检测的过程,后执行将第m个进行链接的目标文件的全局变量起始地址与日志文件中保存的全局变量起始地址进行冲突检测的过程;还可以同时执行将第m个进行链接的目标文件的全局变量起始地址与日志文件中保存的全局变量起始地址进行冲突检测的过程,及将第m个进行链接的目标文件的全局变量长度与日志文件中保存的全局变量长度进行冲突检测的过程。
S205、若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则提示链接错误。
在计算机节点将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测后,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则计算机节点提示链接错误,并且终止链接过程。
S206、若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则更新日志文件。
在计算机节点将第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测后,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则计算机节点更新上述日志文件,即将第m个进行链接的目标文件的需保存的地址信息保存至日志文件中。
特别的,上述第m个进行链接的目标文件的需保存的地址信息为与上述日志文件中保存的前m-1个目标文件的地址信息不同的,第m个进行链接的目标文件的地址信息。
本发明实施例中,计算机节点更新上述日志文件可以为:将与上述日志文件中保存的代码段信息不同的,第m个进行链接的目标文件的代码段信息保存至日志文件中,以及,将与上述日志文件中保存的全局变量信息不同的,第m个进行链接的目标文件的全局变量信息保存至日志文件中,即计算机节点更新上述日志文件,以为第m+1个进行链接的目标文件的地址冲突检测做准备。
S207、生成与第m个进行链接的目标文件对应的第m个二进制镜像文件。
计算机节点将第m个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息进行地址冲突检测后,若第m个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息未冲突,则计算机节点生成与第m个进行链接的目标文件对应的第m个二进制镜像文件。
具体的,若m=2,即计算机节点对第一个进行链接的目标文件链接后,再对第2个进行链接的目标文件进行链接,在链接过程中,计算机节点将第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息(即第一个进行链接的目标文件的地址信息)进行冲突检测,若第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息冲突,则计算机节点提示链接错误,同时终止链接过程;若第2个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息未冲突,则计算机节点更新上述日志文件中保存的地址信息,即将与上述日志文件中保存的地址信息不同的,第2个进行链接的目标文件的地址信息保存至日志文件中。
若m=3,即计算机节点对第一个进行链接的目标文件及第2个进行链接的目标文件进行链接后,再对第3个进行链接的目标文件进行链接,在链接过程中,计算机节点将第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息(即第一个进行链接的目标文件的地址信息和第2个进行链接的目标文件的需保存的地址信息)进行冲突检测,若第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息冲突,则计算机节点提示链接错误,同时终止链接过程;若第3个进行链接的目标文件的地址信息与上述日志文件中保存的地址信息未冲突,则计算机节点更新上述日志文件中保存的地址信息,即将与上述日志文件中保存的地址信息不同的,第3个进行链接的目标文件的地址信息保存至上述日志文件中。
以此类推,m的取值还可以为4,5,6......,即计算机节点对第m个进行链接的目标文件进行链接时,将第m个进行链接的目标文件的地址信息与上述日志文件中保存的前m-1个目标文件的地址信息进行冲突检测,以保证n个目标文件共享的内存地址范围均无冲突。
本发明实施例还提供一种地址冲突检测方法的另一种实现方式,为在对n个目标文件进行链接时,计算机节点只需调用一次链接器即可完成对n个目标文件的链接,并一次输出所有无地址冲突的与n个目标文件分别对应的二进制镜像文件。
本领域普通技术人员可以理解,在链接器支持的条件下,该实现方式可通过用户重新配置链接器的链接脚本来实现,即计算机节点对n个目标文件进行链接的过程中只调用一次链接器,同时在该次调用链接器的过程中完成对多个目标文件地址冲突的检测,以及链接完成后,计算机节点一次性输出无地址冲突的与n个目标文件分别对应的二进制镜像文件。
需要说明的是,本发明实施例提供的一种地址冲突检测方法及该方法的另一种实现方式,对进行链接的目标文件进行地址冲突检测及生成对应的二进制镜像文件的方法是相同的。而本发明实施例提供的一种地址冲突检测方法与该方法的另一种实现方式的区别之处在于:
本发明实施例提供的一种地址冲突检测方法为由计算机节点对n个目标文件进行逐次链接(每次链接均调用一次链接器),即为单输入单输出模式,计算机节点对每个进行链接的目标文件进行链接时,均需调用一次链接器,且在每次链接过程中完成对该进行链接的目标文件的地址冲突检测及输出对应的二进制镜像文件。
本发明实施例提供的一种地址冲突检测方法的另一种实现方式为由计算机节点对n个目标文件进行一次链接(仅调用一次链接器),即为多输入多输出模式,计算机节点仅需调用一次链接器即可完成对n个目标文件进行链接及地址冲突检测的过程,同时一次输出与n个目标文件分别对应的所有二进制镜像文件。
本发明实施例提供一种地址冲突检测方法,通过获取n个目标文件共享的内存地址范围,其中,n≥2,以及,创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,从而,将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,进而,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则提示链接错误,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则更新日志文件。通过该方案,在链接过程中可对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题,进而,解决了现有技术中在链接阶段只能对单个目标文件进行地址冲突检测及只能在仿真阶段或单板运行阶段对多个目标文件进行地址冲突检测的问题,同时减小了地址冲突问题的定位难度,提高了工作效率。
实施例三
如图3所示,本发明实施例提供一种地址冲突检测装置1,包括:
获取单元10,用于获取n个目标文件共享的内存地址范围,其中,n≥2。
处理单元11,用于创建日志文件,并将所述n个目标文件中的第一个进行链接的目标文件的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息。
检测单元12,用于将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n。
提示单元13,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,则提示链接错误。
更新单元14,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,则更新所述日志文件。
进一步地,所述处理单元11,具体用于将包括所述第一个进行链接的目标文件的代码段信息及所述第一个进行链接的目标文件的全局变量信息的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的全局变量信息为所述第一个进行链接的目标文件与除所述第一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
其中,
所述第一个进行链接的目标文件的代码段信息包括:所述第一个进行链接的目标文件的代码段名称及所述第一个进行链接的目标文件的代码段内存地址,所述第一个进行链接的目标文件的代码段内存地址包括所述第一个进行链接的目标文件的代码段起始地址及所述第一个进行链接的目标文件的代码段长度。
所述第一个进行链接的目标文件的全局变量信息包括:所述第一个进行链接的目标文件的全局变量名称及所述第一个进行链接的目标文件的全局变量内存地址,所述第一个进行链接的目标文件的全局变量内存地址包括所述第一个进行链接的目标文件的全局变量起始地址及所述第一个进行链接的目标文件的全局变量长度。
进一步地,所述检测单元12,具体用于将包括所述第m个进行链接的目标文件的代码段信息及所述第m个进行链接的目标文件的全局变量信息的地址信息,与所述日志文件中保存的包括代码段信息及全局变量信息的地址信息进行冲突检测,所述第m个进行链接的目标文件的全局变量信息为所述第m个进行链接的目标文件与除所述第m个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
其中,
所述第m个进行链接的目标文件的代码段信息包括:所述第m个进行链接的目标文件的代码段名称及所述第m个进行链接的目标文件的代码段内存地址,所述第m个进行链接的目标文件的代码段内存地址包括所述第m个进行链接的目标文件的代码段起始地址及所述第m个进行链接的目标文件的代码段长度。
所述第m个进行链接的目标文件的全局变量信息包括:所述第m个进行链接的目标文件的全局变量名称及所述第m个进行链接的目标文件的全局变量内存地址,所述第m个进行链接的目标文件的全局变量内存地址包括所述第m个进行链接的目标文件的全局变量起始地址及所述第m个进行链接的目标文件的全局变量长度。
所述代码段信息包括:代码段名称及代码段内存地址,其中,所述代码段内存地址包括代码段起始地址及代码段长度。
所述全局变量信息包括:全局变量名称及全局变量内存地址,其中,所述全局变量内存地址包括全局变量起始地址及全局变量长度。
进一步地,所述检测单元12,具体用于判断所述第m个进行链接的目标文件的代码段名称与所述代码段名称是否相同,若所述第m个进行链接的目标文件的代码段名称与所述代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址是否相同,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述代码段长度是否相等,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
或者,
若所述第m个进行链接的目标文件的代码段名称与所述代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址是否重合,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
进一步地,所述检测单元12,具体用于判断所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称是否相同,若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址是否相同,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度是否相等,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址是否重合,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
进一步地,所述更新单元14,具体用于将与所述代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至所述日志文件中,以及将与所述全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至所述日志文件中。
进一步地,所述获取单元10,具体用于获取以关键字表示的,所述n个目标文件共享的内存地址范围。
进一步地,所述处理单元11,还用于将所述第一个进行链接的目标文件链接完成后,生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件。
进一步地,所述处理单元11,还用于将所述第m个进行链接的目标文件链接完成后,生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件。
需要说明的是,在实际应用中,本发明实施例中,应当理解的是,所述地址冲突检测装置可以为独立的计算机节点,其产品形态可以是计算机等;应当理解的是,地址冲突检测装置可以内置于计算机节点上,例如通过软件集成方式。
本发明实施例提供一种地址冲突检测装置,通过首先获取n个目标文件共享的内存地址范围,其中,n≥2,然后,地址冲突检测装置创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,从而,地址冲突检测装置将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,进而,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,地址冲突检测装置则提示链接错误,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,地址冲突检测装置则更新日志文件。通过该方案,地址冲突检测装置在链接过程中可对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题,进而,解决了现有技术中在链接阶段只能对单个目标文件进行地址冲突检测及只能在仿真阶段或单板运行阶段对多个目标文件进行地址冲突检测的问题,同时减小了地址冲突问题的定位难度,提高了工作效率。
实施例四
如图4所示,本发明实施例提供一种计算机节点,该计算机节点包括:至少一个处理器20,例如CPU(Central Processing Unit,中央处理器),至少一个输出接口21或者其他用户接口22,存储器23,至少一个通信总线24。通信总线24用于实现这些组件之间的连接通信。该计算机节点可选的包含其他用户接口22,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器23可能包含高速RAM(Random Access Memory,随机存取存储器),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器23可选的可以包含至少一个位于远离前述处理器20的存储装置。
在一些实施方式中,存储器23存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统230,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
应用模块231,包含各种应用程序,用于实现各种应用业务。
应用模块231中包括但不限于链接器。
应用模块231中各模块的具体实现参见图3所示实施例中的相应模块,在此不再赘述。
本发明实施例中,计算机节点可以为计算机,也可以为其他任意可对源程序进行编译链接的设备,本发明不做限制。
具体的,在对n个目标文件进行链接时,处理器20用于:获取n个目标文件共享的内存地址范围,并通过通信总线24将所述n个目标文件共享的内存地址范围保存至存储器23中,其中n≥2;其次,在对所述n个目标文件中的第一个进行链接的目标文件进行链接时,处理器20创建日志文件,并通过通信总线24将日志文件保存至存储器23中,以及处理器20根据存储器23中保存的所述n个目标文件共享的内存地址范围,将所述第一个进行链接的目标文件的地址信息保存至所述日志文件中,其中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息;然后,在对所述n个目标文件中的第m个进行链接的目标文件进行链接时,处理器20通过通信总线24将所述第m个进行链接的目标文件的地址信息,与存储器23中存储的所述日志文件中保存的地址信息进行冲突检测,其中,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,2≤m≤n;接着,若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,处理器20则通过用户接口22提示链接错误,同时终止链接过程;若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,处理器20则通过通信总线24更新存储器23中的所述日志文件。
进一步地,所述处理器20,具体用于将包括所述第一个进行链接的目标文件的代码段信息及所述第一个进行链接的目标文件的全局变量信息的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的全局变量信息为所述第一个进行链接的目标文件与除所述第一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
其中,
所述第一个进行链接的目标文件的代码段信息包括:所述第一个进行链接的目标文件的代码段名称及所述第一个进行链接的目标文件的代码段内存地址,所述第一个进行链接的目标文件的代码段内存地址包括所述第一个进行链接的目标文件的代码段起始地址及所述第一个进行链接的目标文件的代码段长度。
所述第一个进行链接的目标文件的全局变量信息包括:所述第一个进行链接的目标文件的全局变量名称及所述第一个进行链接的目标文件的全局变量内存地址,所述第一个进行链接的目标文件的全局变量内存地址包括所述第一个进行链接的目标文件的全局变量起始地址及所述第一个进行链接的目标文件的全局变量长度。
进一步地,所述处理器20,具体用于将包括所述第m个进行链接的目标文件的代码段信息及所述第m个进行链接的目标文件的全局变量信息的地址信息,与所述日志文件中保存的包括代码段信息及全局变量信息的地址信息进行冲突检测,所述第m个进行链接的目标文件的全局变量信息为所述第m个进行链接的目标文件与除所述第m个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息。
其中,
所述第m个进行链接的目标文件的代码段信息包括:所述第m个进行链接的目标文件的代码段名称及所述第m个进行链接的目标文件的代码段内存地址,所述第m个进行链接的目标文件的代码段内存地址包括所述第m个进行链接的目标文件的代码段起始地址及所述第m个进行链接的目标文件的代码段长度。
所述第m个进行链接的目标文件的全局变量信息包括:所述第m个进行链接的目标文件的全局变量名称及所述第m个进行链接的目标文件的全局变量内存地址,所述第m个进行链接的目标文件的全局变量内存地址包括所述第m个进行链接的目标文件的全局变量起始地址及所述第m个进行链接的目标文件的全局变量长度。
所述代码段信息包括:代码段名称及代码段内存地址,其中,所述代码段内存地址包括:代码段起始地址及代码段长度。
所述全局变量信息包括:全局变量名称及全局变量内存地址,其中,所述全局变量内存地址包括全局变量起始地址及全局变量长度。
进一步地,处理器20,具体用于判断所述第m个进行链接的目标文件的代码段名称与所述代码段名称是否相同,若所述第m个进行链接的目标文件的代码段名称与所述代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址是否相同,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述代码段长度是否相等,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
或者,
若所述第m个进行链接的目标文件的代码段名称与所述代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址是否重合,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述代码段信息未冲突。
进一步地,所述处理器20,具体用于判断所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称是否相同,若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址是否相同,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度是否相等,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址是否重合,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述全局变量信息未冲突。
进一步地,所述处理器20,具体用于通过通信总线24,将与所述代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至存储器23中的所述日志文件中,以及通过通信总线24,将与所述全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至存储器23中的所述日志文件中。
进一步地,所述处理器20,具体用于获取以关键字表示的,所述n个目标文件共享的内存地址范围。
进一步地,所述处理器20,还用于将所述第一个进行链接的目标文件链接完成后,生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件,并通过通信总线24将该第一个二进制镜像文件存储于存储器23中,以通过通信总线24从输出接口21将该第一个二进制镜像文件输出。
进一步地,所述处理器20,还用于将所述第m个进行链接的目标文件链接完成后,生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件,并通过通信总线24将该第m个二进制镜像文件存储于存储器23中,以通过通信总线24从输出接口21将该第m个二进制镜像文件输出。
本发明实施例提供一种计算机节点,通过首先获取n个目标文件共享的内存地址范围,其中,n≥2,然后,计算机节点创建日志文件,并将n个目标文件中的第一个进行链接的目标文件的地址信息保存至日志文件中,该第一个进行链接的目标文件的地址信息为该第一个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,从而,计算机节点将n个目标文件中的第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息进行冲突检测,该第m个进行链接的目标文件的地址信息为该第m个进行链接的目标文件在n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n,进而,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息冲突,则计算机节点提示链接错误,若第m个进行链接的目标文件的地址信息与日志文件中保存的地址信息未冲突,则计算机节点更新日志文件。通过该方案,计算机节点在链接过程中可对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题,进而,解决了现有技术中在链接阶段只能对单个目标文件进行地址冲突检测及只能在仿真阶段或单板运行阶段对多个目标文件进行地址冲突检测的问题,同时减小了地址冲突问题的定位难度,提高了工作效率。
为了更确切地了解本发明方案的实施方式,对应于本发明实施例提供的一种地址冲突检测方法,下面以多核DSP处理系统对应的多个目标文件(多个目标文件经过链接后可生成多个二进制镜像文件)为例来描述本发明实施例提供的一种地址冲突检测方法的实施场景,即计算机节点对多个目标文件进行地址冲突检测及链接的过程。
多核DSP处理系统对应的多个目标文件的内存地址分布非常复杂,可能存在多级内存空间,比如有以下几种:各个核私有的L1(lever1)级缓存或L2级缓存,映像文件间共享的L2级缓存或L3级缓存,以及所有核共享的DDR SDRAM(Double Data Rate Sychronous DynamicRandom Access Memory,双倍速率同步动态随机存储器)。在实际应用中,所有核会根据业务需要,划分成不同的映像文件组(目标文件组),由于各个映像文件组均使用各自的链接脚本进行链接,因此,很容易产生映像文件(目标文件)间全局共享代码段的内存地址互相覆盖,和/或全局共享变量的内存地址不匹配的问题。
需要说明的是,L1级缓存集成在CPU内部,用于CPU在处理数据过程中数据的暂时保存。由于缓存指令和数据与CPU同频工作,L1级缓存进行缓存的容量越大,存储的信息就越多,这样,可减少CPU与内存之间的数据交换次数,提高CPU的运算效率。
L2级缓存为位于CPU与内存之间的临时存储器,容量比内存小,但交换速度快,L2级缓存的容量大小决定了CPU的性能。
L3级缓存是为读取L2级缓后未命中的数据设计的一种缓存,在拥有L3级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的运算效率。
本发明实施例提供的地址冲突检测方法,在对目标文件组进行链接过程中,通过对每个进行链接的目标文件的地址信息进行冲突检测,最终得到正确(无内存地址冲突问题)的二进制镜像文件组,这样,将二进制镜像文件组地址冲突的检测过程提前至链接阶段,可有效防止二进制镜像文件组载入到仿真器或单板环境中运行时,由于地址冲突而导致程序异常,甚至系统崩溃的问题,从而,减小了地址冲突问题的定位难度,提高了工作效率。
下面以一种DSP芯片多核系统对应的多个目标文件为例,对本发明实施例提供的一种地址冲突检测方法的实现过程进行进一步地详细说明:
需要说明的是,该DSP芯片多核系统对应3个二进制镜像文件,分别为DSP二进制镜像文件(0-9),CPU二进制镜像文件(13-14)以及MCPU(Multiple Central Processing Unit,多中央处理器)二进制镜像文件(12)。其中,这3个二进制镜像文件可通过分别对DSP目标文件、CPU目标文件以及MCPU目标文件进行链接后得到。
(1)用户首先在Multi check.x文件中配置DSP目标文件、CPU目标文件以及MCPU目标文件的全局共享的内存地址范围,以及该内存地址范围与实际物理内存地址之间的映射关系,并将该配置文件保存至链接脚本中。
(2)其次,计算机节点获取配置文件中的DSP目标文件、CPU目标文件以及MCPU目标文件共享的内存地址范围,并开始首次调用链接器对DSP目标文件进行链接,在该链接过程中,计算机节点不需对DSP目标文件的地址信息进行冲突检测,直接创建Multivalues.log日志文件,并将DSP目标文件的代码段信息和DSP目标文件的全局变量信息保存至该日志文件中,以作为下次链接时的比对信息,同时,计算机节点对DSP目标文件链接完成后生成DSP二进制镜像文件,其中,DSP目标文件的代码段信息和DSP目标文件的全局变量信息分别为DSP目标文件在上述DSP目标文件、CPU目标文件以及MCPU目标文件共享的内存地址范围内的代码段信息和全局变量信息。
(3)再次,计算机节点第二次调用链接器对CPU目标文件进行链接,在该链接过程中,计算机节点从上述日志文件中读取DSP目标文件的代码段信息和DSP目标文件的全局变量信息,并将CPU目标文件的代码段信息与DSP目标文件的代码段信息进行冲突检测,以及将CPU目标文件的全局变量信息与DSP目标文件的全局变量信息进行冲突检测,若CPU目标文件的代码段信息与DSP目标文件的代码段信息冲突,或CPU目标文件的全局变量信息与DSP目标文件的全局变量信息冲突,则计算机节点提示链接错误,同时终止链接过程;若CPU目标文件的代码段信息与DSP目标文件的代码段信息未冲突及CPU目标文件的全局变量信息与DSP目标文件的全局变量信息未冲突,则计算机节点将与DSP目标文件的代码段信息不同的CPU目标文件的代码段信息保存至上述Multi values.log日志文件中,以及将与DSP目标文件的全局变量信息不同的CPU目标文件的全局变量信息保存至上述日志文件中,同时生成CPU二进制镜像文件。
(4)最后,若CPU目标文件的代码段信息与DSP目标文件的代码段信息未冲突及CPU目标文件的全局变量信息与DSP目标文件的全局变量信息未冲突,则计算机节点第三次调用链接器对MCPU目标文件进行连接,在该链接过程中,计算机节点从上述日志文件中读取DSP目标文件的代码段信息、DSP目标文件的全局变量信息、CPU目标文件的代码段信息及CPU目标文件的全局变量信息,并将MCPU目标文件的代码段信息,与(3)中所述的日志文件中保存的DSP目标文件的代码段信息及CPU目标文件的代码段信息进行冲突检测,以及将MCPU目标文件的全局变量信息,与(3)中所述的日志文件中保存的DSP目标文件的全局变量信息及CPU目标文件的全局变量信息进行冲突检测。若MCPU目标文件的代码段信息,与日志文件中保存的DSP目标文件的代码段信息或CPU目标文件的代码段信息冲突,或者,MCPU目标文件的全局变量信息,与日志文件中保存的DSP目标文件的全局变量信息或CPU目标文件的全局变量信息冲突,则计算机节点提示链接错误,同时终止链接过程;若MCPU目标文件的代码段信息,与日志文件中保存的DSP目标文件的代码段信息及CPU目标文件的代码段信息未冲突,以及MCPU目标文件的全局变量信息,与日志文件中保存的DSP目标文件的全局变量信息及CPU目标文件的全局变量信息未冲突,则计算机节点将与DSP目标文件的代码段信息和CPU目标文件的代码段信息不同的,MCPU目标文件的代码段信息保存至日志文件中,以及将与DSP目标文件的全局变量信息和CPU目标文件的全局变量信息不同的,MCPU目标文件的全局变量信息保存至日志文件中,同时生成MCPU二进制镜像文件。
(5)计算机节点对多核系统对应的目标文件链接完成,有效地避免了由于地址冲突而引起的系统崩溃的问题。
由于本发明实施例提供的地址冲突检测方法涉及到软件程序的执行,因此,以下再从软件执行角度对本发明实施例提供的地址冲突检测方法进行进一步地说明。
如图5所示,本发明实施例提供的地址冲突检测方法的软件执行流程包括:
S301、开始。
S302、从配置文件中获取n个目标文件共享的内存地址范围,n≥2。
S303、第一次调用链接器。
S304、创建日志文件,并将第一个进行链接的目标文件的代码段信息和第一个进行链接的目标文件的全局变量信息保存至日志文件中。
S305、生成与第一个进行链接的目标文件对应的第一个二进制镜像文件。
S306、第m次调用链接器。
S307、将第m个进行链接的目标文件的代码段信息与日志文件中保存的代码段信息进行冲突检测,其中,2≤m≤n。
若第m个进行链接的目标文件的代码段信息与日志文件中保存的代码段信息冲突,则执行S309;若第m个进行链接的目标文件的代码段信息与日志文件中保存的代码段信息未冲突,则执行S310。
S308、将第m个进行链接的目标文件的全局变量信息与日志文件中保存的全局变量信息进行冲突检测。
若第m个进行链接的目标文件的全局变量信息与日志文件中保存的全局变量信息冲突,则执行S309;若第m个进行链接的目标文件的全局变量信息与日志文件中保存的全局变量信息未冲突,则执行S310。
需要说明的是,本发明不限制S307与S308的执行时间顺序,即本发明可以先执行S307后执行S308,也可以先执行S308后执行S307,还可以同时执行S307与S308。
S309、提示链接错误,终止链接过程。
S310、更新日志文件。
S311、生成与第m个进行链接的目标文件对应的第m个二进制镜像文件。
需要说明的是,本发明不限制S310与S311的执行时间顺序,即本发明可以先执行S310后执行S311,也可以先执行S311后执行S310,还可以同时执行S310与S311。
S312、结束链接器的调用。
S313、结束。
参照上述软件执行过程,本领域普通技术人员可以理解,通过本发明实施例提供的这种地址冲突检测方法,可以在链接过程中对多个目标文件共享的内存地址进行地址冲突检测,以发现多个目标文件共享的内存地址冲突的问题,从而保证链接后的多个二进制镜像文件共享的内存地址无冲突,一定程度上避免了因地址冲突引起系统崩溃的问题,进而,可以解决现有技术中在链接阶段只能对单个目标文件进行地址冲突检测及只能在仿真阶段或单板运行阶段对多个目标文件进行地址冲突检测的问题,同时减小了地址冲突问题的定位难度,提高了工作效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种地址冲突检测方法,其特征在于,包括:
获取n个目标文件共享的内存地址范围,其中,n≥2;
创建日志文件,并将所述n个目标文件中的第一个进行链接的目标文件的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息;
将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n;
若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,则提示链接错误,并终止链接过程;
若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,则更新所述日志文件。
2.根据权利要求1所述的地址冲突检测方法,其特征在于,
所述n个目标文件中的每一个进行链接的目标文件的地址信息包括:所述每一个进行链接的目标文件的代码段信息及所述每一个进行链接的目标文件的全局变量信息,其中,所述每一个进行链接的目标文件的全局变量信息为所述每一个进行链接的目标文件与除所述每一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
所述日志文件中保存的地址信息包括:所述日志文件中保存的代码段信息及所述日志文件中保存的全局变量信息。
3.根据权利要求2所述的地址冲突检测方法,其特征在于,
所述每一个进行链接的目标文件的代码段信息包括:所述每一个进行链接的目标文件的代码段名称及所述每一个进行链接的目标文件的代码段内存地址,其中,所述每一个进行链接的目标文件的代码段内存地址包括所述每一个进行链接的目标文件的代码段起始地址及所述每一个进行链接的目标文件的代码段长度;
所述每一个进行链接的目标文件的全局变量信息包括:所述每一个进行链接的目标文件的全局变量名称及所述每一个进行链接的目标文件的全局变量内存地址,其中,所述每一个进行链接的目标文件的全局变量内存地址包括所述每一个进行链接的目标文件的全局变量起始地址及所述每一个进行链接的目标文件的全局变量长度;
所述日志文件中保存的代码段信息包括:所述日志文件中保存的代码段名称及所述日志文件中保存的代码段内存地址,其中,所述日志文件中保存的代码段内存地址包括所述日志文件中保存的代码段起始地址及所述日志文件中保存的代码段长度;
所述日志文件中保存的全局变量信息包括:所述日志文件中保存的全局变量名称及所述日志文件中保存的全局变量内存地址,其中,所述日志文件中保存的全局变量内存地址包括所述日志文件中保存的全局变量起始地址及所述日志文件中保存的全局变量长度。
4.根据权利要求3所述的地址冲突检测方法,其特征在于,所述将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测的步骤,包括:
判断所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称是否相同;
若所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址是否相同;
若所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度是否相等;
若所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息未冲突;
或者,
若所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址是否重合;
若所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息未冲突。
5.根据权利要求3或4所述的地址冲突检测方法,其特征在于,所述将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测的步骤,包括:
判断所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称是否相同;
若所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址是否相同;
若所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度是否相等;
若所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息未冲突;
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址是否重合;
若所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息未冲突。
6.根据权利要求2或3所述的地址冲突检测方法,其特征在于,所述更新所述日志文件,包括:
将与所述日志文件中保存的代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至所述日志文件中,以及将与所述日志文件中保存的全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至所述日志文件中。
7.根据权利要求1所述的地址冲突检测方法,其特征在于,所述n个目标文件共享的内存地址范围为以关键字表示的地址范围。
8.根据权利要求1-4任一项所述的地址冲突检测方法,其特征在于,将所述第一个进行链接的目标文件链接完成后,所述方法还包括:
生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件。
9.根据权利要求8所述的地址冲突检测方法,其特征在于,将所述第m个进行链接的目标文件链接完成后,所述方法还包括:
生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件。
10.一种地址冲突检测装置,其特征在于,包括:
获取单元,用于获取n个目标文件共享的内存地址范围,其中,n≥2;
处理单元,用于创建日志文件,并将所述n个目标文件中的第一个进行链接的目标文件的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的地址信息为所述第一个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息;
检测单元,用于将所述n个目标文件中的第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息进行冲突检测,所述第m个进行链接的目标文件的地址信息为所述第m个进行链接的目标文件在所述n个目标文件共享的内存地址范围内的地址信息,其中,2≤m≤n;
提示单元,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息冲突,则提示链接错误,并终止链接过程;
更新单元,用于若所述第m个进行链接的目标文件的地址信息与所述日志文件中保存的地址信息未冲突,则更新所述日志文件。
11.根据权利要求10所述的地址冲突检测装置,其特征在于,
所述处理单元,具体用于将包括所述第一个进行链接的目标文件的代码段信息及所述第一个进行链接的目标文件的全局变量信息的地址信息保存至所述日志文件中,所述第一个进行链接的目标文件的全局变量信息为所述第一个进行链接的目标文件与除所述第一个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
其中,
所述第一个进行链接的目标文件的代码段信息包括:所述第一个进行链接的目标文件的代码段名称及所述第一个进行链接的目标文件的代码段内存地址,所述第一个进行链接的目标文件的代码段内存地址包括所述第一个进行链接的目标文件的代码段起始地址及所述第一个进行链接的目标文件的代码段长度;
所述第一个进行链接的目标文件的全局变量信息包括:所述第一个进行链接的目标文件的全局变量名称及所述第一个进行链接的目标文件的全局变量内存地址,所述第一个进行链接的目标文件的全局变量内存地址包括所述第一个进行链接的目标文件的全局变量起始地址及所述第一个进行链接的目标文件的全局变量长度。
12.根据权利要求10所述的地址冲突检测装置,其特征在于,
所述检测单元,具体用于将包括所述第m个进行链接的目标文件的代码段信息及所述第m个进行链接的目标文件的全局变量信息的地址信息,与所述日志文件中保存的包括代码段信息及全局变量信息的地址信息进行冲突检测,所述第m个进行链接的目标文件的全局变量信息为所述第m个进行链接的目标文件与除所述第m个进行链接的目标文件外的其他n-1个目标文件共享的全局变量信息;
其中,
所述第m个进行链接的目标文件的代码段信息包括:所述第m个进行链接的目标文件的代码段名称及所述第m个进行链接的目标文件的代码段内存地址,所述第m个进行链接的目标文件的代码段内存地址包括所述第m个进行链接的目标文件的代码段起始地址及所述第m个进行链接的目标文件的代码段长度;
所述第m个进行链接的目标文件的全局变量信息包括:所述第m个进行链接的目标文件的全局变量名称及所述第m个进行链接的目标文件的全局变量内存地址,所述第m个进行链接的目标文件的全局变量内存地址包括所述第m个进行链接的目标文件的全局变量起始地址及所述第m个进行链接的目标文件的全局变量长度;
所述日志文件中保存的代码段信息包括:所述日志文件中保存的代码段名称及所述日志文件中保存的代码段内存地址,所述日志文件中保存的代码段内存地址包括所述日志文件中保存的代码段起始地址及所述日志文件中保存的代码段长度;
所述日志文件中保存的全局变量信息包括:所述日志文件中保存的全局变量名称及所述日志文件中保存的全局变量内存地址,所述日志文件中保存的全局变量内存地址包括所述日志文件中保存的全局变量起始地址及所述日志文件中保存的全局变量长度。
13.根据权利要求12所述的地址冲突检测装置,其特征在于,
所述检测单元,具体用于判断所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称是否相同,若所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称相同,则判断所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址是否相同,若所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址不同,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段起始地址与所述日志文件中保存的代码段起始地址相同,则判断所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度是否相等,若所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度不相等,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段长度与所述日志文件中保存的代码段长度相等,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息未冲突;
或者,
若所述第m个进行链接的目标文件的代码段名称与所述日志文件中保存的代码段名称不同,则判断所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址是否重合,若所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址重合,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息冲突,若所述第m个进行链接的目标文件的代码段内存地址与所述日志文件中保存的代码段内存地址未重合,则所述第m个进行链接的目标文件的代码段信息与所述日志文件中保存的代码段信息未冲突。
14.根据权利要求12或13所述的地址冲突检测装置,其特征在于,
所述检测单元,具体用于判断所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称是否相同,若所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称相同,则判断所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址是否相同,若所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址不同,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量起始地址与所述日志文件中保存的全局变量起始地址相同,则判断所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度是否相等,若所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度不相等,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量长度与所述日志文件中保存的全局变量长度相等,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息未冲突;
或者,
若所述第m个进行链接的目标文件的全局变量名称与所述日志文件中保存的全局变量名称不同,则判断所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址是否重合,若所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址重合,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息冲突,若所述第m个进行链接的目标文件的全局变量内存地址与所述日志文件中保存的全局变量内存地址未重合,则所述第m个进行链接的目标文件的全局变量信息与所述日志文件中保存的全局变量信息未冲突。
15.根据权利要求11或12所述的地址冲突检测装置,其特征在于,
所述更新单元,具体用于将与所述日志文件中保存的代码段信息不同的所述第m个进行链接的目标文件的代码段信息保存至所述日志文件中,以及将与所述日志文件中保存的全局变量信息不同的所述第m个进行链接的目标文件的全局变量信息保存至所述日志文件中。
16.根据权利要求10所述的地址冲突检测装置,其特征在于,
所述获取单元,具体用于获取以关键字表示的,所述n个目标文件共享的内存地址范围。
17.根据权利要求10-13任一项所述的地址冲突检测装置,其特征在于,
所述处理单元,还用于将所述第一个进行链接的目标文件链接完成后,生成与所述第一个进行链接的目标文件对应的第一个二进制镜像文件。
18.根据权利要求17所述的地址冲突检测装置,其特征在于,
所述处理单元,还用于将所述第m个进行链接的目标文件链接完成后,生成与所述第m个进行链接的目标文件对应的第m个二进制镜像文件。
CN201310102385.8A 2013-03-27 2013-03-27 一种地址冲突检测方法及装置 Active CN103235745B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310102385.8A CN103235745B (zh) 2013-03-27 2013-03-27 一种地址冲突检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310102385.8A CN103235745B (zh) 2013-03-27 2013-03-27 一种地址冲突检测方法及装置

Publications (2)

Publication Number Publication Date
CN103235745A CN103235745A (zh) 2013-08-07
CN103235745B true CN103235745B (zh) 2016-08-10

Family

ID=48883790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310102385.8A Active CN103235745B (zh) 2013-03-27 2013-03-27 一种地址冲突检测方法及装置

Country Status (1)

Country Link
CN (1) CN103235745B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108300B (zh) * 2017-12-18 2020-06-16 北京东土科技股份有限公司 一种操作系统的资源配置检测方法和装置
CN111562910B (zh) * 2020-05-08 2023-06-02 上海泛微网络科技股份有限公司 一种封装方法及相关设备
CN113742252B (zh) * 2020-05-28 2024-03-29 华为技术有限公司 一种检测内存乱序的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146839A (ja) * 1995-11-21 1997-06-06 Kofu Nippon Denki Kk キャッシュメモリ制御装置
CN101226488A (zh) * 2008-01-25 2008-07-23 中兴通讯股份有限公司 多实例应用程序在内核态地址空间冲突的解决方法及系统
CN101310258A (zh) * 2005-12-16 2008-11-19 英特尔公司 在软件事务内存系统中保护共享变量
CN101425052A (zh) * 2008-12-04 2009-05-06 中国科学院计算技术研究所 一种事务性内存的实现方法
CN102043659A (zh) * 2010-12-08 2011-05-04 上海交通大学 消除内存访问冲突的编译装置及其实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146839A (ja) * 1995-11-21 1997-06-06 Kofu Nippon Denki Kk キャッシュメモリ制御装置
CN101310258A (zh) * 2005-12-16 2008-11-19 英特尔公司 在软件事务内存系统中保护共享变量
CN101226488A (zh) * 2008-01-25 2008-07-23 中兴通讯股份有限公司 多实例应用程序在内核态地址空间冲突的解决方法及系统
CN101425052A (zh) * 2008-12-04 2009-05-06 中国科学院计算技术研究所 一种事务性内存的实现方法
CN102043659A (zh) * 2010-12-08 2011-05-04 上海交通大学 消除内存访问冲突的编译装置及其实现方法

Also Published As

Publication number Publication date
CN103235745A (zh) 2013-08-07

Similar Documents

Publication Publication Date Title
CN102750317B (zh) 数据持久化处理方法、装置及数据库系统
CN103647850B (zh) 一种分布式版本控制系统的数据处理方法、设备及系统
CN105468473A (zh) 数据迁移方法及数据迁移装置
US8738349B2 (en) Gate-level logic simulator using multiple processor architectures
CN110334075A (zh) 基于消息中间件的数据迁移方法及相关设备
CN107291480A (zh) 一种函数调用方法及装置
CN105808428A (zh) 一种对分布式文件系统进行统一性能测试的方法
CN103605606B (zh) 一种可自动转换的嵌入式软件测试用例批量执行方法
CN109408590A (zh) 分布式数据库的扩容方法、装置、设备及存储介质
CN103235745B (zh) 一种地址冲突检测方法及装置
CN106354536A (zh) 在Windows系统中加载Linux系统ELF文件的方法及装置
CN107463422A (zh) 代码部署方法及装置、电子设备
CN108885579A (zh) 用于根据核追踪进行数据挖掘的方法和设备
US10747930B2 (en) Event-driven design simulation
CN104714831B (zh) 一种检测虚拟机中的寄生进程的方法和装置
US11934825B2 (en) Event-driven design simulation
US20210133195A1 (en) Dynamic access paths
CN106055481A (zh) 计算机程序的测试方法及装置
Noorshams Modeling and prediction of i/o performance in virtualized environments
CN109325011A (zh) 基于区块链的数据存储、处理、分享方法及系统
CN102902769A (zh) 一种云计算平台数据库基准测试系统及其方法
CN107391190A (zh) 一种程序模块动态装载方法
US20180107958A1 (en) Blockchain expense and resource utilization optimization
CN104572482B (zh) 一种过程变量的存储方法及装置
Song et al. Towards general purpose tagged memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant