On Mon, Nov 13, 2017 at 11:47:41AM +0100, Jakub Jelinek wrote: > On Mon, Nov 13, 2017 at 11:44:38AM +0100, Richard Biener wrote: > > > Unfortunately, it's not what I see. I ran two bootstraps, with and > > > without the > > > patch. Then I stripped all the .o files and ran cmp on them, but many of > > > them > > > differ. objdump -dr reveals why -- I see changes like > > > > > > mov $0xe02,%ecx > > > vs > > > mov $0xdf6,%ecx > > > > > > That's probably some sizeof changes? Any other ideas? :/ Somehow ignore > > > these and only look if there are new pushes or similar? > > > > sizeof an empty type shouldn't change, no? Possibly the new target > > hook "shifts" target hook offsets. Maybe you can arrange the new one > > to be last... (just for testing). OTOH for example in target library > > objects all the changes of this kind should have no effect. So, do > > objects in target libraries differ similarly? > > If the changes are because of the patch changing stuff in bootstrapped > compiler, the easiest way is to revert the patch and rebuild stage3 inside > of the stage3 directory and then compare what you get with the unpatched > bootstrapped compiler (or, if you first bootstrap patched tree and then > unpatched, similarly, re-apply the patch and rebuild stage3 of the > originally vanilla tree).
In the end I did two bootstraps with the patch, but modifed one of them to always return false for ix86_is_empty_record. Then I compared all the *.o in both dirs. The result is attached. Then I looked at DW_AT_producer for all these .o that differ; all of them are C++. Is this enough to clear our concerns? And I also ran a bootstrap with --enable-cxx-flags=-Wabi=11, and didn't see any warnings. Marek
trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip differ: byte 49677, line 21 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip differ: byte 49021, line 19 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip differ: byte 41, line 1 trunk/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip trunk2/./stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip differ: byte 56433, line 33 trunk/./prev-gcc/gcov.o.strip trunk2/./prev-gcc/gcov.o.strip differ: byte 41, line 1 trunk/./prev-gcc/cc1plus-checksum.o.strip trunk2/./prev-gcc/cc1plus-checksum.o.strip differ: byte 65, line 1 trunk/./prev-gcc/cc1objplus-checksum.o.strip trunk2/./prev-gcc/cc1objplus-checksum.o.strip differ: byte 65, line 1 trunk/./prev-gcc/go/gogo.o.strip trunk2/./prev-gcc/go/gogo.o.strip differ: byte 41, line 1 trunk/./prev-gcc/go/expressions.o.strip trunk2/./prev-gcc/go/expressions.o.strip differ: byte 41, line 1 trunk/./prev-gcc/go/types.o.strip trunk2/./prev-gcc/go/types.o.strip differ: byte 41, line 1 trunk/./prev-gcc/go/export.o.strip trunk2/./prev-gcc/go/export.o.strip differ: byte 41, line 1 trunk/./prev-gcc/go/statements.o.strip trunk2/./prev-gcc/go/statements.o.strip differ: byte 41, line 1 trunk/./prev-gcc/bb-reorder.o.strip trunk2/./prev-gcc/bb-reorder.o.strip differ: byte 41, line 1 trunk/./prev-gcc/cc1-checksum.o.strip trunk2/./prev-gcc/cc1-checksum.o.strip differ: byte 65, line 1 trunk/./prev-gcc/cc1obj-checksum.o.strip trunk2/./prev-gcc/cc1obj-checksum.o.strip differ: byte 65, line 1 trunk/./prev-gcc/build/genrecog.o.strip trunk2/./prev-gcc/build/genrecog.o.strip differ: byte 41, line 1 trunk/./prev-gcc/i386.o.strip trunk2/./prev-gcc/i386.o.strip differ: byte 41, line 1 trunk/./prev-gcc/tree-loop-distribution.o.strip trunk2/./prev-gcc/tree-loop-distribution.o.strip differ: byte 41, line 1 trunk/./stage1-gcc/cc1plus-checksum.o.strip trunk2/./stage1-gcc/cc1plus-checksum.o.strip differ: byte 65, line 1 trunk/./stage1-gcc/cc1-checksum.o.strip trunk2/./stage1-gcc/cc1-checksum.o.strip differ: byte 65, line 1 trunk/./stage1-gcc/i386.o.strip trunk2/./stage1-gcc/i386.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip differ: byte 49677, line 21 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip differ: byte 49021, line 19 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip differ: byte 41, line 1 trunk/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip trunk2/./prev-x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip differ: byte 56433, line 33 trunk/./gcc/gcov.o.strip trunk2/./gcc/gcov.o.strip differ: byte 41, line 1 trunk/./gcc/cc1plus-checksum.o.strip trunk2/./gcc/cc1plus-checksum.o.strip differ: byte 65, line 1 trunk/./gcc/cc1objplus-checksum.o.strip trunk2/./gcc/cc1objplus-checksum.o.strip differ: byte 65, line 1 trunk/./gcc/go/gogo.o.strip trunk2/./gcc/go/gogo.o.strip differ: byte 41, line 1 trunk/./gcc/go/expressions.o.strip trunk2/./gcc/go/expressions.o.strip differ: byte 41, line 1 trunk/./gcc/go/types.o.strip trunk2/./gcc/go/types.o.strip differ: byte 41, line 1 trunk/./gcc/go/export.o.strip trunk2/./gcc/go/export.o.strip differ: byte 41, line 1 trunk/./gcc/go/statements.o.strip trunk2/./gcc/go/statements.o.strip differ: byte 41, line 1 trunk/./gcc/bb-reorder.o.strip trunk2/./gcc/bb-reorder.o.strip differ: byte 41, line 1 trunk/./gcc/cc1-checksum.o.strip trunk2/./gcc/cc1-checksum.o.strip differ: byte 65, line 1 trunk/./gcc/cc1obj-checksum.o.strip trunk2/./gcc/cc1obj-checksum.o.strip differ: byte 65, line 1 trunk/./gcc/build/genrecog.o.strip trunk2/./gcc/build/genrecog.o.strip differ: byte 41, line 1 trunk/./gcc/i386.o.strip trunk2/./gcc/i386.o.strip differ: byte 41, line 1 trunk/./gcc/tree-loop-distribution.o.strip trunk2/./gcc/tree-loop-distribution.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/asan/asan_memory_profile.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/asan/asan_memory_profile.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/asan/asan_interceptors.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/asan/asan_interceptors.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/asan/.libs/asan_memory_profile.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/asan/.libs/asan_memory_profile.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/asan/.libs/asan_interceptors.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/asan/.libs/asan_interceptors.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/tsan/tsan_interceptors.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/tsan/tsan_interceptors.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libsanitizer/tsan/.libs/tsan_interceptors.o.strip trunk2/./x86_64-pc-linux-gnu/libsanitizer/tsan/.libs/tsan_interceptors.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/bitmap_allocator.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++98/messages_members.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-shim_facets.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/string-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-shim_facets.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wlocale-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-string-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/locale-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/wstring-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/sstream-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cow-wstring-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/c++11/cxx11-wlocale-inst.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/ops.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-path.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-ops.o.strip differ: byte 49677, line 21 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/std-ops.o.strip differ: byte 49021, line 19 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-std-path.o.strip differ: byte 41, line 1 trunk/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip trunk2/./x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/cow-ops.o.strip differ: byte 56433, line 33