gcc-4.9.1 generating different code between two successive builds
Cole
cole@opteqint.net
Thu Dec 31 15:29:00 GMT 2015
I will investigate next week, and have a look at whether ASLR is
turned off in our build system. But if it was on, I would expect more
than a single .o file to be different.
At this point in time, by disabling libcilkrts, and one other option,
I can't remember which right now, I can get gcc building reproducibly.
With regards to the libcilkrts library, there is only a single .o file
that is being generated that differs each time. When running it
through objdump, the differences always seem to pop up in the same
function if I am not mistaken, and the actual assembly generated
differs. Normally from the very beginning of the register
initialisation.
On 31 December 2015 at 12:17, Andrew Haley <aph@redhat.com> wrote:
> On 30/12/15 15:33, Georg-Johann Lay wrote:
>
>> Some parts of the compiler use the address of objects to compute
>> hashes, but I don't remember which part(s) actually do this. That
>> technique can lead to different code for different runs of the
>> compiler even on the same system. This is hard to reproduce as it
>> depends on how the OS is supplying memory, and it might depend on
>> the "history" of the machine and the actual OS.
>
> ... and many Linux kernels deliberately randomize memory layout to
> provide some protection from buffer overflow attacks.
>
> Andrew.
More information about the Gcc
mailing list