gcc C ++编译器 - obj文件创建非确定性?

时间:2016-08-15 18:25:26

标签: c++ windows gcc qnx non-deterministic

问题

对于某个.obj,我的编译器"切换"即使我没有改变 任何 ,构建之间的字节值也是如此。它始终是相同的字节位置,并且始终是两个值中的一个:0x000x80

enter image description here

背景

我正在使用QNX C ++编译器;它基于gcc - 所以只需将其视为gcc

我的make命令是:

C:\make421.exe all --trace --debug=vjm --jobs=16 --output-sync=recurse --print-directory --print-data-base

此对象的make规则列出了包含在我的顶级工作文件夹中的所有文件。

它只依赖于一个不会改变的.cpp文件 - 我在文件所在的整个HMI_FORGF文件夹上做超越比较 - 我和#39 ; m还会传播包含库的其他文件夹。

绝对没有改变!

问题

为什么一个字节被切换而没有变化。 。 。什么吗?

是的,我也会问QNX,但想知道是否有人经历过这样的事情。

更新

我做了objdump -xSsDg输出的差异,但它的大小超过了100MB,因此无法上传(如果有人知道要托管的网站,请告诉我)。

差异中有两个不同的部分:

第一部分,左侧

Contents of section .ARM.exidx.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE:
 0000 00000000 00000000                    ........        

第一部分,右侧

Contents of section .ARM.exidx.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE:
 0000 00000000 00000080                    ........        

第二部分,左

00000000 <.ARM.exidx.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE>:
    ...
            0: R_ARM_PREL31 .text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE
            0: R_ARM_NONE   __aeabi_unwind_cpp_pr1
            4: R_ARM_PREL31 .ARM.extab.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE

第二部分,右:

00000000 <.ARM.exidx.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE>:
   0:   00000000    andeq   r0, r0, r0
            0: R_ARM_PREL31 .text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE
            0: R_ARM_NONE   __aeabi_unwind_cpp_pr1
   4:   80000000    andhi   r0, r0, r0
            4: R_ARM_PREL31 .ARM.extab.text._ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE

0 个答案:

没有答案