I have a need to see whether or not it is possible to make boost 1.50 binary reproducible with as little change to the source code as possible for the sake of source integrity. The challenge is to do it without changing any .cpp or .hpp file.
Simply compiling it twice and doing a diff shows failure due to the __TIME__ and __DATE__ macros that appear in boost libraries WAVE and SPIRIT.
I am compiling using g++ 4.1.1. Anyone know of a way to tell the preprocessor to undefine or redefine those macros via some kind of environment variable? If not an env var, then some g++ command line option? I imagine it's possible that I could edit some .jam file to redefine __TIME__ and __DATE__, macro to ???? or whatever gcc says the default is when those cannot be resolved.
Perhaps there exists a way to force the preprocessor not be able to resolve the current date and time, which I could enable, build, then disable?
Any ideas regarding this would be most appreciated. Thank you.
Edit: To those who've been following this, I think I made a grave mistake in my original question. I've found now that simple back to back builds with the same exact bjam build command produce .a and .so files that are drastically different beyond just DATE and TIME macros. Binary hex diffs show large chunks of differences in the .so files. The .a files seem to follow a pattern of the same value being consistently different (and this could very well be TIME and DATE macro values) but the .so files are not even in the same ballpark. If anyone is in the mood, I challenge you to build boost 1.50 twice, comparing the build output and try to witness that there are not significant differences beyond simply the informatical difference that a change in date/time of the build would constitute.
Edit (The sequel!): After doing a lot more digging, I've uncovered what appears to be some sort of inconsistent name mangling. Building only boost filesystem, twice, back to back, and inspecting differences between the file path.o between the two, I've noticed this:
nm of first path.o: 00000000 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C916311path_localeE 0000000c b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C916312dot_dot_pathE 00000000 r _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C916316separator_stringE 00000004 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C916317codecvt_facet_ptrE 00000004 r _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C916326preferred_separator_stringE 00000008 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_8F1C91638dot_pathE
nm of second path.o: 00000000 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD474511path_localeE 0000000c b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD474512dot_dot_pathE 00000000 r _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD474516separator_stringE 00000004 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD474517codecvt_facet_ptrE 00000004 r _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD474526preferred_separator_stringE 00000008 b _ZN57_GLOBAL__N_libs_filesystem_src_path.cpp_00000000_EDDD47458dot_pathE
I don't think I've seen this kind of thing before. Why would these particular local variable definitions be mangled with EDDD4745 as opposed to 8F1C9163 ? Any thoughts? My head blew up once today already (solved by a nearby jack o' lantern). This one is just vicious.
Edit: v3)
I'm still at it unfortunately. At this point I'm down in the ELF file spec level attempting to determine what's changing. I'm just working with boost filesystem at this point. My bjam command is
`./b2 -a --with-filesystem --debug-building -d+2 toolset=gcc define=__DATE__="??" define=__TIME__="??" pch=off hardcode-dll-paths=false strip=on`
Attempting to determine what in hell is causing these differences is quite a chore. readelf is helpful, but only to a point. I have here the diff of two readelf commands on two builds of boost filesystem.so which used the SAME EXACT SOURCE CODE. I'm not knowledgeable enough about this stuff yet to quite determine what affects these changes, perhaps someone out in the world is however.
`diff x1diff x2diff
120,123c120,123
< 00015044 0000cc01 R_386_32 00015070 _ZTIN5boost6system14er
< 0001506c 0000cc01 R_386_32 00015070 _ZTIN5boost6system14er
< 00015048 0000d701 R_386_32 00005760 _ZN5boost6system14erro
< 0001504c 0000af01 R_386_32 00005730 _ZN5boost6system14erro
---
> 00015044 0000cd01 R_386_32 00015070 _ZTIN5boost6system14er
> 0001506c 0000cd01 R_386_32 00015070 _ZTIN5boost6system14er
> 00015048 0000d801 R_386_32 00005760 _ZN5boost6system14erro
> 0001504c 0000b001 R_386_32 00005730 _ZN5boost6system14erro
128,133c128,133
< 00015058 00009801 R_386_32 00005690 _ZNK5boost6system14err
< 000150b8 00009801 R_386_32 00005690 _ZNK5boost6system14err
< 0001505c 0000bf01 R_386_32 000056b0 _ZNK5boost6system14err
< 000150bc 0000bf01 R_386_32 000056b0 _ZNK5boost6system14err
< 00015060 0000a901 R_386_32 00005710 _ZNK5boost6system14err
< 000150c0 0000a901 R_386_32 00005710 _ZNK5boost6system14err
---
> 00015058 00009901 R_386_32 00005690 _ZNK5boost6system14err
> 000150b8 00009901 R_386_32 00005690 _ZNK5boost6system14err
> 0001505c 0000c001 R_386_32 000056b0 _ZNK5boost6system14err
> 000150bc 0000c001 R_386_32 000056b0 _ZNK5boost6system14err
> 00015060 0000aa01 R_386_32 00005710 _ZNK5boost6system14err
> 000150c0 0000aa01 R_386_32 00005710 _ZNK5boost6system14err
141,142c141,142
< 00015068 0000f001 R_386_32 00012180 _ZTSN75_GLOBAL__N_libs
< 00015074 00007b01 R_386_32 00012200 _ZTSN5boost6system14er
---
> 00015068 00007701 R_386_32 00012180 _ZTSN75_GLOBAL__N_libs
> 00015074 00007c01 R_386_32 00012200 _ZTSN5boost6system14er
146,152c146,152
< 00015080 00007e01 R_386_32 00012220 _ZTSN5boost12noncopyab
< 000150a4 0000d801 R_386_32 00015064 _ZTIN75_GLOBAL__N_libs
< 000150cc 00007801 R_386_32 000150dc _ZTIN5boost6system12sy
< 000150f0 00007801 R_386_32 000150dc _ZTIN5boost6system12sy
< 00015300 00007806 R_386_GLOB_DAT 000150dc _ZTIN5boost6system12sy
< 000150d0 00009701 R_386_32 0000c810 _ZN5boost6system12syst
< 000152f4 00009706 R_386_GLOB_DAT 0000c810 _ZN5boost6system12syst
---
> 00015080 00007f01 R_386_32 00012220 _ZTSN5boost12noncopyab
> 000150a4 0000ea01 R_386_32 00015064 _ZTIN75_GLOBAL__N_libs
> 000150cc 00007901 R_386_32 000150dc _ZTIN5boost6system12sy
> 000150f0 00007901 R_386_32 000150dc _ZTIN5boost6system12sy
> 00015300 00007906 R_386_GLOB_DAT 000150dc _ZTIN5boost6system12sy
> 000150d0 00009801 R_386_32 0000c810 _ZN5boost6system12syst
> 000152f4 00009806 R_386_GLOB_DAT 0000c810 _ZN5boost6system12syst
154c154
< 000150d8 0000a501 R_386_32 0000c8b0 _ZNK5boost6system12sys
---
> 000150d8 0000a601 R_386_32 0000c8b0 _ZNK5boost6system12sys
158,161c158,161
< 000150fc 0000a301 R_386_32 000150e8 _ZTIN5boost10filesyste
< 00015304 0000a306 R_386_GLOB_DAT 000150e8 _ZTIN5boost10filesyste
< 00015100 00009501 R_386_32 0000cdd0 _ZN5boost10filesystem1
< 000152e4 00009506 R_386_GLOB_DAT 0000cdd0 _ZN5boost10filesystem1
---
> 000150fc 0000a401 R_386_32 000150e8 _ZTIN5boost10filesyste
> 00015304 0000a406 R_386_GLOB_DAT 000150e8 _ZTIN5boost10filesyste
> 00015100 00009601 R_386_32 0000cdd0 _ZN5boost10filesystem1
> 000152e4 00009606 R_386_GLOB_DAT 0000cdd0 _ZN5boost10filesystem1
163,164c163,164
< 00015108 0000c701 R_386_32 0000d6d0 _ZNK5boost10filesystem
< 00015114 0000d201 R_386_32 0001512c _ZTIN5boost6detail17sp
---
> 00015108 0000c801 R_386_32 0000d6d0 _ZNK5boost10filesystem
> 00015114 0000d301 R_386_32 0001512c _ZTIN5boost6detail17sp
166,176c166,176
< 0001511c 0000b001 R_386_32 0000c700 _ZN5boost6detail17sp_c
< 00015120 00008b01 R_386_32 0000cb10 _ZN5boost6detail17sp_c
< 00015124 00009301 R_386_32 0000c620 _ZN5boost6detail15sp_c
< 00015154 00009301 R_386_32 0000c620 _ZN5boost6detail15sp_c
< 00015174 00009301 R_386_32 0000c620 _ZN5boost6detail15sp_c
< 00015128 0000c101 R_386_32 0000c650 _ZN5boost6detail17sp_c
< 00015130 0000cf01 R_386_32 00012680 _ZTSN5boost6detail17sp
< 00015134 0000a801 R_386_32 00015138 _ZTIN5boost6detail15sp
< 00015144 0000a801 R_386_32 00015138 _ZTIN5boost6detail15sp
< 00015184 0000a801 R_386_32 00015138 _ZTIN5boost6detail15sp
< 0001513c 0000bb01 R_386_32 000126e0 _ZTSN5boost6detail15sp
---
> 0001511c 0000b101 R_386_32 0000c700 _ZN5boost6detail17sp_c
> 00015120 00008c01 R_386_32 0000cb10 _ZN5boost6detail17sp_c
> 00015124 00009401 R_386_32 0000c620 _ZN5boost6detail15sp_c
> 00015154 00009401 R_386_32 0000c620 _ZN5boost6detail15sp_c
> 00015174 00009401 R_386_32 0000c620 _ZN5boost6detail15sp_c
> 00015128 0000c201 R_386_32 0000c650 _ZN5boost6detail17sp_c
> 00015130 0000d001 R_386_32 00012680 _ZTSN5boost6detail17sp
> 00015134 0000a901 R_386_32 00015138 _ZTIN5boost6detail15sp
> 00015144 0000a901 R_386_32 00015138 _ZTIN5boost6detail15sp
> 00015184 0000a901 R_386_32 00015138 _ZTIN5boost6detail15sp
> 0001513c 0000bc01 R_386_32 000126e0 _ZTSN5boost6detail15sp
178c178
< 0001514c 0000d501 R_386_32 0000c670 _ZN5boost6detail15sp_c
---
> 0001514c 0000d601 R_386_32 0000c670 _ZN5boost6detail15sp_c
180,189c180,189
< 00015168 0000ed01 R_386_32 0000c6e0 _ZN5boost6detail17sp_c
< 0001516c 0000c501 R_386_32 0000c730 _ZN5boost6detail17sp_c
< 00015170 00007c01 R_386_32 0000ca30 _ZN5boost6detail17sp_c
< 00015178 0000c301 R_386_32 0000c660 _ZN5boost6detail17sp_c
< 00015180 0000ae01 R_386_32 00012720 _ZTSN5boost6detail17sp
< 000151a4 0000c801 R_386_32 000151d0 _ZTIN5boost10filesyste
< 000151a8 0000d401 R_386_32 000120c0 _ZN5boost10filesystem6
< 000151ac 0000ab01 R_386_32 00012080 _ZN5boost10filesystem6
< 000151b0 0000aa01 R_386_32 00011ee0 _ZNK5boost10filesystem
< 000151b4 0000bd01 R_386_32 00012050 _ZNK5boost10filesystem
---
> 00015168 0000ee01 R_386_32 0000c6e0 _ZN5boost6detail17sp_c
> 0001516c 0000c601 R_386_32 0000c730 _ZN5boost6detail17sp_c
> 00015170 00007d01 R_386_32 0000ca30 _ZN5boost6detail17sp_c
> 00015178 0000c401 R_386_32 0000c660 _ZN5boost6detail17sp_c
> 00015180 0000af01 R_386_32 00012720 _ZTSN5boost6detail17sp
> 000151a4 0000c901 R_386_32 000151d0 _ZTIN5boost10filesyste
> 000151a8 0000d501 R_386_32 000120c0 _ZN5boost10filesystem6
> 000151ac 0000ac01 R_386_32 00012080 _ZN5boost10filesystem6
> 000151b0 0000ab01 R_386_32 00011ee0 _ZNK5boost10filesystem
> 000151b4 0000be01 R_386_32 00012050 _ZNK5boost10filesystem
192c192
< 000151c0 0000ce01 R_386_32 00012040 _ZNK5boost10filesystem
---
> 000151c0 0000cf01 R_386_32 00012040 _ZNK5boost10filesystem
194,196c194,196
< 000151c8 00008801 R_386_32 00012070 _ZNK5boost10filesystem
< 000151cc 00009601 R_386_32 00011cb0 _ZNK5boost10filesystem
< 000151d4 00008901 R_386_32 00012900 _ZTSN5boost10filesyste
---
> 000151c8 00008901 R_386_32 00012070 _ZNK5boost10filesystem
> 000151cc 00009701 R_386_32 00011cb0 _ZNK5boost10filesystem
> 000151d4 00008a01 R_386_32 00012900 _ZTSN5boost10filesyste
202c202
< 000152f0 0000a206 R_386_GLOB_DAT 00015110 _ZTVN5boost6detail17sp
---
> 000152f0 0000a306 R_386_GLOB_DAT 00015110 _ZTVN5boost6detail17sp
207c207
< 00015314 0000b506 R_386_GLOB_DAT 00015160 _ZTVN5boost6detail17sp
---
> 00015314 0000b606 R_386_GLOB_DAT 00015160 _ZTVN5boost6detail17sp
223c223
< 00015350 00007f07 R_386_JUMP_SLOT 0000e3e0 _ZNK5boost10filesystem
---
> 00015350 00008007 R_386_JUMP_SLOT 0000e3e0 _ZNK5boost10filesystem
227c227
< 00015360 0000b207 R_386_JUMP_SLOT 00009d10 _ZN5boost10filesystem6
---
> 00015360 0000b307 R_386_JUMP_SLOT 00009d10 _ZN5boost10filesystem6
230,231c230,231
< 0001536c 0000c607 R_386_JUMP_SLOT 0000f8e0 _ZNK5boost10filesystem
< 00015370 00009d07 R_386_JUMP_SLOT 0000e370 _ZN5boost10filesystem4
---
> 0001536c 0000c707 R_386_JUMP_SLOT 0000f8e0 _ZNK5boost10filesystem
> 00015370 00009e07 R_386_JUMP_SLOT 0000e370 _ZN5boost10filesystem4
235,237c235,237
< 00015380 00007707 R_386_JUMP_SLOT 000078a0 _ZN5boost10filesystem6
< 00015384 0000b607 R_386_JUMP_SLOT 0000cf20 _ZN5boost10filesystem1
< 00015388 0000b807 R_386_JUMP_SLOT 0000f490 _ZN5boost10filesystem4
---
> 00015380 00007807 R_386_JUMP_SLOT 000078a0 _ZN5boost10filesystem6
> 00015384 0000b707 R_386_JUMP_SLOT 0000cf20 _ZN5boost10filesystem1
> 00015388 0000b907 R_386_JUMP_SLOT 0000f490 _ZN5boost10filesystem4
239c239
< 00015390 0000a007 R_386_JUMP_SLOT 000099f0 _ZN5boost10filesystem6
---
> 00015390 0000a107 R_386_JUMP_SLOT 000099f0 _ZN5boost10filesystem6
241c241
< 00015398 00008507 R_386_JUMP_SLOT 00005880 _ZN5boost10filesystem6
---
> 00015398 00008607 R_386_JUMP_SLOT 00005880 _ZN5boost10filesystem6
250c250
< 000153bc 0000d607 R_386_JUMP_SLOT 00010770 _ZNK5boost10filesystem
---
> 000153bc 0000d707 R_386_JUMP_SLOT 00010770 _ZNK5boost10filesystem
254,255c254,255
< 000153cc 0000d007 R_386_JUMP_SLOT 000092c0 _ZN5boost10filesystem6
< 000153d0 0000a407 R_386_JUMP_SLOT 0000f2b0 _ZNK5boost10filesystem
---
> 000153cc 0000d107 R_386_JUMP_SLOT 000092c0 _ZN5boost10filesystem6
> 000153d0 0000a507 R_386_JUMP_SLOT 0000f2b0 _ZNK5boost10filesystem
257c257
< 000153d8 0000cd07 R_386_JUMP_SLOT 000095f0 _ZN5boost10filesystem6
---
> 000153d8 0000ce07 R_386_JUMP_SLOT 000095f0 _ZN5boost10filesystem6
260c260
< 000153e4 00008f07 R_386_JUMP_SLOT 000069e0 _ZN5boost10filesystem6
---
> 000153e4 00009007 R_386_JUMP_SLOT 000069e0 _ZN5boost10filesystem6
269c269
< 00015408 0000ee07 R_386_JUMP_SLOT 00011ea0 _ZNK5boost10filesystem
---
> 00015408 0000ef07 R_386_JUMP_SLOT 00011ea0 _ZNK5boost10filesystem
272,273c272,273
< 00015414 0000ca07 R_386_JUMP_SLOT 0000f7d0 _ZNK5boost10filesystem
< 00015418 0000d107 R_386_JUMP_SLOT 0000df70 _ZNK5boost10filesystem
---
> 00015414 0000cb07 R_386_JUMP_SLOT 0000f7d0 _ZNK5boost10filesystem
> 00015418 0000d207 R_386_JUMP_SLOT 0000df70 _ZNK5boost10filesystem
277c277
< 00015428 0000c907 R_386_JUMP_SLOT 0000d2f0 _ZN5boost10filesystem1
---
> 00015428 0000ca07 R_386_JUMP_SLOT 0000d2f0 _ZN5boost10filesystem1
286,287c286,287
< 0001544c 0000b707 R_386_JUMP_SLOT 0000e190 _ZNK5boost10filesystem
< 00015450 0000c007 R_386_JUMP_SLOT 00011c70 _ZN5boost10filesystem6
---
> 0001544c 0000b807 R_386_JUMP_SLOT 0000e190 _ZNK5boost10filesystem
> 00015450 0000c107 R_386_JUMP_SLOT 00011c70 _ZN5boost10filesystem6
295c295
< 00015470 0000ea07 R_386_JUMP_SLOT 000063c0 _ZN5boost10filesystem6
---
> 00015470 0000eb07 R_386_JUMP_SLOT 000063c0 _ZN5boost10filesystem6
297c297
< 00015478 00008e07 R_386_JUMP_SLOT 00011170 _ZN5boost10filesystem1
---
> 00015478 00008f07 R_386_JUMP_SLOT 00011170 _ZN5boost10filesystem1
303c303
< 00015490 0000a707 R_386_JUMP_SLOT 0000ded0 _ZN5boost10filesystem4
---
> 00015490 0000a807 R_386_JUMP_SLOT 0000ded0 _ZN5boost10filesystem4
306c306
< 0001549c 00009e07 R_386_JUMP_SLOT 00005490 _ZN5boost10filesystem2
---
> 0001549c 00009f07 R_386_JUMP_SLOT 00005490 _ZN5boost10filesystem2
319c319
< 000154d0 00007d07 R_386_JUMP_SLOT 0000efd0 _ZNK5boost10filesystem
---
> 000154d0 00007e07 R_386_JUMP_SLOT 0000efd0 _ZNK5boost10filesystem
325,326c325,326
< 000154e8 00008c07 R_386_JUMP_SLOT 00010eb0 _ZN5boost10filesystem1
< 000154ec 00008207 R_386_JUMP_SLOT 000091c0 _ZN5boost10filesystem6
---
> 000154e8 00008d07 R_386_JUMP_SLOT 00010eb0 _ZN5boost10filesystem1
> 000154ec 00008307 R_386_JUMP_SLOT 000091c0 _ZN5boost10filesystem6
329c329
< 000154f8 00008d07 R_386_JUMP_SLOT 0000ea70 _ZN5boost10filesystem4
---
> 000154f8 00008e07 R_386_JUMP_SLOT 0000ea70 _ZN5boost10filesystem4
334c334
< 0001550c 00009007 R_386_JUMP_SLOT 0000fbb0 _ZNK5boost10filesystem
---
> 0001550c 00009107 R_386_JUMP_SLOT 0000fbb0 _ZNK5boost10filesystem
337,340c337,340
< 00015518 0000eb07 R_386_JUMP_SLOT 00011270 _ZN5boost10filesystem1
< 0001551c 0000b107 R_386_JUMP_SLOT 000114b0 _ZN5boost10filesystem1
< 00015520 00009b07 R_386_JUMP_SLOT 0000c640 _ZN5boost6detail26sp_e
< 00015524 00009c07 R_386_JUMP_SLOT 0000f000 _ZNK5boost10filesystem
---
> 00015518 0000ec07 R_386_JUMP_SLOT 00011270 _ZN5boost10filesystem1
> 0001551c 0000b207 R_386_JUMP_SLOT 000114b0 _ZN5boost10filesystem1
> 00015520 00009c07 R_386_JUMP_SLOT 0000c640 _ZN5boost6detail26sp_e
> 00015524 00009d07 R_386_JUMP_SLOT 0000f000 _ZNK5boost10filesystem
342c342
< 0001552c 0000a607 R_386_JUMP_SLOT 0000dd00 _ZN5boost10filesystem4
---
> 0001552c 0000a707 R_386_JUMP_SLOT 0000dd00 _ZN5boost10filesystem4
344c344
< 00015534 0000ad07 R_386_JUMP_SLOT 00007aa0 _ZN5boost10filesystem6
---
> 00015534 0000ae07 R_386_JUMP_SLOT 00007aa0 _ZN5boost10filesystem6
591,597c591,597
< 234: 000063c0 1559 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem6det
< 235: 00011270 81 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem19po
< 236: 00009020 405 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem6det
< 237: 0000c6e0 30 FUNC WEAK DEFAULT 10 _ZN5boost6detail17sp_coun
< 238: 00011ea0 59 FUNC GLOBAL DEFAULT 10 _ZNK5boost10filesystem6de
< 239: 000155b8 8 OBJECT WEAK DEFAULT 24 _ZGVZNK5boost10filesystem
< 240: 00012180 99 OBJECT WEAK DEFAULT 12 _ZTSN75_GLOBAL__N_libs_fi
---
> 234: 00015064 12 OBJECT WEAK DEFAULT 19 _ZTIN75_GLOBAL__N_libs_fi
> 235: 000063c0 1559 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem6det
> 236: 00011270 81 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem19po
> 237: 00009020 405 FUNC GLOBAL DEFAULT 10 _ZN5boost10filesystem6det
> 238: 0000c6e0 30 FUNC WEAK DEFAULT 10 _ZN5boost6detail17sp_coun
> 239: 00011ea0 59 FUNC GLOBAL DEFAULT 10 _ZNK5boost10filesystem6de
> 240: 000155b8 8 OBJECT WEAK DEFAULT 24 _ZGVZNK5boost10filesystem
619,623c619,623
< 0 42 ( 32.1%)
< 1 49 ( 37.4%) 34.8%
< 2 32 ( 24.4%) 80.1%
< 3 4 ( 3.1%) 88.7%
< 4 4 ( 3.1%) 100.0%
---
> 0 41 ( 31.3%)
> 1 50 ( 38.2%) 35.5%
> 2 32 ( 24.4%) 80.9%
> 3 5 ( 3.8%) 91.5%
> 4 3 ( 2.3%) 100.0%`
(I had to abridge some entries in the file to fit in the post). For the most part, it looks like the line number of some of these entries differ. What could possibly change the order of symbol entries in an ELF file?
I finally found the answer, and I can't believe it took me so long to find it. Anonymous namespaces are at issue here, not boost in and of itself. Apparently, boost 1_50 contains a few anonymous namespaces. It looks like the compiler I am using, gcc 4.1.1's ABI or whatever(and perhaps others more recent or older even) generates a new and different UUID to prefix symbols in these anonymous namespaces each time a translation unit is compiled, I guess for reasons of applying uniqueness to symbols for external linkage (correct? not correct?). The solution in this case is to use the -frandom-seed flag provided by the compiler. I was finally tipped off to what might be going on when I randomly came across this page.
Here is the documentation for the frandom-seed compiler flag.
My use case for this ended up being -frandom-seed="0"
In the end it had really nothing to do with __DATE__ and __TIME__ macros (until dealing with boost WAVE and SPIRIT, which do contain them in 1.50).
This one really beat me up.
Under the tag "binary reproducibility" stack overflow didn't seem to have anything regarding this. It seems other phrases besides "binary reproducibility" were used in other articles, so the search parameters I used didn't come up with anything. Who knew? Not me, chief.