查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
阿迪亚·斯里瓦斯塔瓦(Aditya。
新的用户

已加入:2012年8月21日 帖子:11 地点:印度
|
|
|
|
您好,
我在z / OS商店中遇到一种情况,我的质量保证团队正在对单元测试和集成负载库进行比较,并发现少数模块不匹配。
当我研究这些不匹配时,我发现V adcon中存在差异,它们是文字池的一部分,并且它们的地址在两个负载之间相差x'10'个字节。有趣的是,所有V adcon文字差异都具有x'10'字节的差异因子。
我在生产库加载模块中检查了程序X,该程序将程序A调用为
码: |
L R15,=V(A)
BASR R14,R15
|
在程序X中,= V(A)进入文字池。我将此程序带入我的工作库并在那里组装,并在我的私有库中生成了一个加载模块。当我将负载模块与生产进行比较时,我发现= V(A)不匹配,并且两个地址之间的差为x'10'。
例如,如果X的加载模块中= V(A)的生产值为x'000712A0',则我的个人库中= V(A)的值为x'000712B0'。
我已经阅读了有关V adcons的文章,但是我不确定在链接编辑过程中它如何获取地址,以及为什么总是以x'10'表示负载差异的原因是什么。
任何帮助表示赞赏。
谢谢,
Aditya [/ code] |
|
回到顶部 |
|
 |
谢尔盖肯
活跃的成员

已加入:2008年4月29日 帖子:940 所在地:马里兰
|
|
|
|
首先,比较两个版本的活页夹(链接编辑器)创建的加载模块的映射。
然后,也许,您还需要比较其Assembler列表中的地图。
二进制模块的无聊比较可能是一个非常糟糕的主意。 |
|
回到顶部 |
|
 |
史蒂夫·迈尔斯
活跃的成员
已加入:2013年11月30日 帖子:870 地点:宇宙
|
|
|
|
正如Sergeyken所说,比较两个模块的加载模块图。小心。
V-cons转换为地址相当复杂。 V con既是地址,也表示该地址是外部符号。大多数情况下,V con包含外部符号的实际地址。主要例外是计划覆盖结构中的模块。当V con用作覆盖层不同部分中的模块的链接时-并且计划的覆盖加载模块不再是非常罕见的-V con实际上指向由Linkage Editor或Binder创建的特殊内部模块中的地址标识为$ SEGTAB或$ ENDTAB(我不再记得哪个)的代码,该代码告诉主管中的特殊代码段,以在需要时加载包含要运行的代码的段,然后跳转到该代码。从原始程序的角度来看,CALL直接进入受影响的代码,而无需干预$ SEGTAB或$ ENDTAB中的代码。
如果有人感兴趣-我怀疑是否有兴趣-我可以准备一份更完整的报告。 |
|
回到顶部 |
|
 |
谢尔盖肯
活跃的成员

已加入:2008年4月29日 帖子:940 所在地:马里兰
|
|
|
|
我不建议TS更深入地了解二进制加载模块的物理结构。至少-肯定是出于质量检查目的。 |
|
回到顶部 |
|
 |
阿迪亚·斯里瓦斯塔瓦(Aditya。
新的用户

已加入:2012年8月21日 帖子:11 地点:印度
|
|
|
|
谢谢您的反馈 !!
我认为团队正在使用FILE AID软件的load module compare选项进行比较。可能这不是一个最好的主意,我将在进行更多研究后为他们提供建议。
谢谢 |
|
回到顶部 |
|
 |
史蒂夫·迈尔斯
活跃的成员
已加入:2013年11月30日 帖子:870 地点:宇宙
|
|
|
|
阿迪亚·斯里瓦斯塔瓦(Aditya。写道: |
谢谢您的反馈 !!
我认为团队正在使用FILE AID软件的load module compare选项进行比较。可能这不是一个最好的主意,我将在进行更多研究后为他们提供建议。
谢谢 |
是的,即使那些声称对加载模块结构有所了解的程序也很容易被地址常量所混淆。比较负载模块非常困难。
您应该尝试在两个加载模块上运行IMBLIST LISTLOAD OUTPUT = XREF,并检查-不是Fileaid报告的标称值,而是IMBLIST报告的XREF。 |
|
回到顶部 |
|
 |
|