> On Aug 23, 2015, at 9:44 PM, Stephan Gatzka <stephan.gat...@gmail.com> wrote: > > Hi, > > We still lack a test for reproducible builds. I asked the gcc guys and > got the answer, that pretty much anything compiled with -flto leads to > different binaries. > > So I tried it out: > cat a.c: > int bar (void) { return 0; } > > gcc -flto -c -o a1.o a.c > gcc -flto -c -o a2.o a.c > diff a1.o a2.o > Binary files a1.o and a2.o differ > > gcc -flto -c -frandom-seed=123 -o a1.o a.c > gcc -flto -c -frandom-seed=123 -o a2.o a.c > diff a1.o a2.o > > Unfortunately, this example only works for gcc, not clang. Clang still > produces identical binaries. > > Regards, > > Stephan > _______________________________________________ > QBS mailing list > QBS@qt-project.org > http://lists.qt-project.org/mailman/listinfo/qbs
Apparently clang only accepts this argument for gcc compatibility and otherwise ignores it completely since such a thing isn't needed in the first place. https://github.com/llvm-mirror/clang/blob/master/include/clang/Driver/Options.td#L949 <https://github.com/llvm-mirror/clang/blob/master/include/clang/Driver/Options.td#L949> indicates it's in the "ignored" group of compiler options Turning on verbose mode indicates it's not used: $ clang++ -v -frandom-seed=xxx Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn) Target: x86_64-apple-darwin14.5.0 Thread model: posix clang: warning: argument unused during compilation: '-frandom-seed=xxx' ...and you already demonstrated that the produced object files are identical. So, it looks like the thing to do is to not pass the -frandom-seed argument and skip the autotest for clang, and add -flto to cpp.linkerFlags for the autotest for GCC. -- Jake Petroules - jake.petroules at petroules.com
_______________________________________________ QBS mailing list QBS@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs