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 <a...@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.

Reply via email to