I now can get through the build of the compiler, but stage2 and stage3 libstdc++ and libsupc++ files have many comparison failures due to tree.c:get_file_function_name() introducing explicit randomness to produce different symbols for anonymous namespaces:
/* Otherwise, the name must be unique across the entire link. We don't have anything that we know to be unique to this translation unit, so use what we do have and throw in some randomness. */ unsigned len; const char *name = weak_global_object_name; const char *file = main_input_filename; if (! name) name = ""; if (! file) file = input_filename; len = strlen (file); q = (char *) alloca (9 * 2 + len + 1); memcpy (q, file, len + 1); sprintf (q + len, "_%08X_%08X", crc32_string (0, name), crc32_string (0, get_random_seed (false))); producing differences like: - .lglobl H.92.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionC2Ev - .lglobl H.100.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionC1Ev - .lglobl H.114.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionD2Ev - .lglobl H.121.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionD1Ev + .lglobl H.92.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionC2Ev + .lglobl H.100.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionC1Ev + .lglobl H.114.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionD2Ev + .lglobl H.121.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionD1Ev - David