[Bug 276961] buildworld artifacts not reproducible between native and cross build
Date: Sun, 05 May 2024 19:56:45 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276961 --- Comment #3 from Dimitry Andric <dim@FreeBSD.org> --- I did the analysis again on 15-CURRENT with clang 18.1.5, and this is now the list, when excluding host binaries (i.e. those that file(1) shows as ELF 64-bit binaries on a amd64 host): usr.cross/src/i386.i386/cddl/lib/libzfs/libzfs.a usr.cross/src/i386.i386/cddl/lib/libzfs/libzfs.so usr.cross/src/i386.i386/cddl/lib/libzfs/libzfs.so.4 usr.cross/src/i386.i386/cddl/lib/libzfs/libzfs.so.4.debug usr.cross/src/i386.i386/cddl/lib/libzfs/libzfs.so.4.full usr.cross/src/i386.i386/cddl/lib/libzfs/zfs_fletcher_sse.o usr.cross/src/i386.i386/cddl/lib/libzfs/zfs_fletcher_sse.pico usr.cross/src/i386.i386/cddl/lib/libzpool/libzpool.a usr.cross/src/i386.i386/cddl/lib/libzpool/libzpool.so usr.cross/src/i386.i386/cddl/lib/libzpool/libzpool.so.2 usr.cross/src/i386.i386/cddl/lib/libzpool/libzpool.so.2.debug usr.cross/src/i386.i386/cddl/lib/libzpool/libzpool.so.2.full usr.cross/src/i386.i386/cddl/lib/libzpool/zfs_fletcher_sse.o usr.cross/src/i386.i386/cddl/lib/libzpool/zfs_fletcher_sse.pico usr.cross/src/i386.i386/lib/clang/liblldb/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_x86_64.o usr.cross/src/i386.i386/lib/clang/liblldb/liblldb.a usr.cross/src/i386.i386/lib/libarchive/archive_write_set_format_7zip.pico usr.cross/src/i386.i386/lib/libarchive/libarchive.so usr.cross/src/i386.i386/lib/libarchive/libarchive.so.7 usr.cross/src/i386.i386/lib/libarchive/libarchive.so.7.debug usr.cross/src/i386.i386/lib/libarchive/libarchive.so.7.full usr.cross/src/i386.i386/rescue/rescue/bectl.lo usr.cross/src/i386.i386/rescue/rescue/rescue usr.cross/src/i386.i386/rescue/rescue/zdb.lo usr.cross/src/i386.i386/rescue/rescue/zfs.lo usr.cross/src/i386.i386/rescue/rescue/zfsbootcfg.lo usr.cross/src/i386.i386/rescue/rescue/zpool.lo usr.cross/src/i386.i386/sbin/ipf/ipmon/ipmon usr.cross/src/i386.i386/sbin/ipf/ipmon/ipmon.debug usr.cross/src/i386.i386/sbin/ipf/ipmon/ipmon.full usr.cross/src/i386.i386/sbin/ipf/ipmon/ipmon.o usr.cross/src/i386.i386/stand/ficl/softcore.c usr.cross/src/i386.i386/stand/i386/loader_4th/loader_4th usr.cross/src/i386.i386/stand/i386/loader_4th/loader_4th.bin usr.cross/src/i386.i386/stand/i386/loader_4th/loader_4th.sym usr.cross/src/i386.i386/stand/i386/loader_4th/vers.c usr.cross/src/i386.i386/stand/i386/loader_4th/vers.o usr.cross/src/i386.i386/stand/i386/loader_lua/loader_lua usr.cross/src/i386.i386/stand/i386/loader_lua/loader_lua.bin usr.cross/src/i386.i386/stand/i386/loader_lua/loader_lua.sym usr.cross/src/i386.i386/stand/i386/loader_lua/vers.c usr.cross/src/i386.i386/stand/i386/loader_lua/vers.o usr.cross/src/i386.i386/stand/i386/loader_simp/loader_simp usr.cross/src/i386.i386/stand/i386/loader_simp/loader_simp.bin usr.cross/src/i386.i386/stand/i386/loader_simp/loader_simp.sym usr.cross/src/i386.i386/stand/i386/loader_simp/vers.c usr.cross/src/i386.i386/stand/i386/loader_simp/vers.o usr.cross/src/i386.i386/stand/i386/pxeldr/loader usr.cross/src/i386.i386/stand/i386/pxeldr/pxeboot usr.cross/src/i386.i386/toolchain-metadata.mk usr.cross/src/i386.i386/usr.bin/clang/lld/ELF/SyntheticSections.o usr.cross/src/i386.i386/usr.bin/clang/lld/ld.lld usr.cross/src/i386.i386/usr.bin/clang/lld/ld.lld.debug usr.cross/src/i386.i386/usr.bin/clang/lld/ld.lld.full usr.cross/src/i386.i386/usr.bin/clang/lldb-server/lldb-server usr.cross/src/i386.i386/usr.bin/clang/lldb-server/lldb-server.debug usr.cross/src/i386.i386/usr.bin/clang/lldb-server/lldb-server.full Note that the differences in .a or .so files, or executables, is due to one or more object files differing. Also, the stand/i386/loader files differ because vers.c contains a build date and hostname, but I assume that would go away if you use WITH_REPRODUCIBLE_BUILD? So the list of interesting files can be reduced to (grouped by library/program): usr.cross/src/i386.i386/cddl/lib/libzfs/zfs_fletcher_sse.o usr.cross/src/i386.i386/cddl/lib/libzfs/zfs_fletcher_sse.pico usr.cross/src/i386.i386/cddl/lib/libzpool/zfs_fletcher_sse.o usr.cross/src/i386.i386/cddl/lib/libzpool/zfs_fletcher_sse.pico usr.cross/src/i386.i386/lib/clang/liblldb/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_x86_64.o usr.cross/src/i386.i386/lib/libarchive/archive_write_set_format_7zip.pico usr.cross/src/i386.i386/rescue/rescue/bectl.lo usr.cross/src/i386.i386/rescue/rescue/zdb.lo usr.cross/src/i386.i386/rescue/rescue/zfs.lo usr.cross/src/i386.i386/rescue/rescue/zfsbootcfg.lo usr.cross/src/i386.i386/rescue/rescue/zpool.lo usr.cross/src/i386.i386/sbin/ipf/ipmon/ipmon.o usr.cross/src/i386.i386/usr.bin/clang/lld/ELF/SyntheticSections.o Of these, most don't have differences in their assembly, but readelf shows that due to slightly larger or smaller sections, various offsets are different. The left overs are: usr.cross/src/i386.i386/lib/clang/liblldb/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_x86_64.o usr.cross/src/i386.i386/lib/libarchive/archive_write_set_format_7zip.pico usr.cross/src/i386.i386/usr.bin/clang/lld/ELF/SyntheticSections.o I'm going to spend some time looking at the ways these get compiled. -- You are receiving this mail because: You are the assignee for the bug.