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