[LLVMdev] Non-deterministic builds
John McCall
rjmccall at apple.com
Fri Nov 12 10:38:03 PST 2010
On Nov 12, 2010, at 7:10 AM, Sebastian Redl wrote:
> On 12.11.2010 15:26, Erik Cederstrand wrote:
>> I have noticed that two consecutive builds of clang, clang++ and tblgen don't produce identical binaries (as in md5 sums) on identical source code (I'm on FreeBSD). I ran strings(1) on the two clang binaries, and I get the following:
>> 251862c251862
>> < N4llvm3sys11ThreadLocalIKN144_GLOBAL__N__usr_home_erik_freebsd_head_src_lib_clang_libllvmsupport_.._.._.._contrib_llvm_lib_Support_CrashRecoveryContext.cpp_00000000_BFDB511124CrashRecoveryContextImplEEE
>> ---
>>> N4llvm3sys11ThreadLocalIKN144_GLOBAL__N__usr_home_erik_freebsd_head_src_lib_clang_libllvmsupport_.._.._.._contrib_llvm_lib_Support_CrashRecoveryContext.cpp_00000000_A7307A7424CrashRecoveryContextImplEEE
>>
> Urgh, are we using random elements in the unnamed namespace symbol
> generation?
This is definitely not the direct output of clang. We mangle anonymous namespaces the same way that GCC does, i.e. 12_GLOBAL__N_1. If there's a compiler that mangles filenames into anonymous namespace names — or anything later in the toolchain which does it — I'm not aware of it.
Erik, what compiler are you using?
John.
More information about the llvm-dev
mailing list