From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Freezing core-updates Date: Tue, 31 May 2016 23:36:21 +0200 Message-ID: <87oa7lnc4q.fsf@gnu.org> References: <87h9dxukjm.fsf@gnu.org> <20160526165952.GA6576@solar> <87zirajjbk.fsf@gnu.org> <20160531193337.GA22008@solar> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34503) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7rKv-00018q-Ie for guix-devel@gnu.org; Tue, 31 May 2016 17:36:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b7rKr-0001TN-Nv for guix-devel@gnu.org; Tue, 31 May 2016 17:36:28 -0400 In-Reply-To: <20160531193337.GA22008@solar> (Andreas Enge's message of "Tue, 31 May 2016 21:33:37 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Andreas Enge Cc: Guix-devel --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Andreas Enge skribis: > Of course the first time I forgot to add the "-K" parameter. So I redid t= he > build and saved the build tree. Here is the error message: > Comparing stages 2 and 3 > warning: gcc/cc1plus-checksum.o differs > warning: gcc/cc1-checksum.o differs > Bootstrap comparison failure! > gcc/libgcov-driver-tool.o differs > gcc/tree-nested.o differs > gcc/df-scan.o differs > gcc/double-int.o differs > gcc/simplify-rtx.o differs > gcc/c/c-parser.o differs > gcc/c/c-typeck.o differs > gcc/gcov-dump.o differs > gcc/tree-ssa-math-opts.o differs > gcc/fold-const.o differs > gcc/cp/semantics.o differs > gcc/cp/optimize.o differs > gcc/tree-dfa.o differs > gcc/tree-inline.o differs > gcc/c-family/cilk.o differs > gcc/ipa-inline.o differs > gcc/lto-section-out.o differs > gcc/omp-low.o differs > gcc/tree-switch-conversion.o differs > gcc/lto-streamer-out.o differs > gcc/real.o differs > gcc/tree-ssa-sccvn.o differs > gcc/coverage.o differs > gcc/dwarf2cfi.o differs > libiberty/pic/sort.o differs > libiberty/pic/fibheap.o differs > libiberty/pic/simple-object-xcoff.o differs > libiberty/sort.o differs > libiberty/fibheap.o differs > libiberty/simple-object-xcoff.o differs > Makefile:21400: recipe for target 'compare' failed > > Things do not look good. I am attaching one pair of differing object file= s. > Already their file size is radically different! The same holds for a few > other pairs of files I had a look at. Quick observation: one of the file has debugging symbols, the other not. Apart from that, section sizes are very similar: --8<---------------cut here---------------start------------->8--- $ ls -l o1 o2 -rw------- 1 ludo users 361036 May 31 23:14 o1 -rw------- 1 ludo users 43016 May 31 23:14 o2 $ size o1 o2 text data bss dec hex filename 22172 0 1560 23732 5cb4 o1 22156 0 1560 23716 5ca4 o2 $ objdump -h o1 o1: file format elf32-little Sections: Idx Name Size VMA LMA File off Algn 0 .text 00004a10 00000000 00000000 00000038 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000000 00000000 00000000 00004a48 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000618 00000000 00000000 00004a48 2**2 ALLOC 3 .ARM.extab 00000084 00000000 00000000 00004a48 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .ARM.exidx 00000358 00000000 00000000 00004acc 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 5 .rodata 000006a8 00000000 00000000 00004e24 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 6 .rodata.str1.4 00000208 00000000 00000000 000054cc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 7 .debug_info 000171e4 00000000 00000000 000056d4 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 8 .debug_abbrev 00000b44 00000000 00000000 0001c8b8 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_loc 0000bb96 00000000 00000000 0001d3fc 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 10 .debug_aranges 00000020 00000000 00000000 00028f92 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 11 .debug_ranges 00001438 00000000 00000000 00028fb2 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_line 000021c5 00000000 00000000 0002a3ea 2**0 CONTENTS, RELOC, READONLY, DEBUGGING 13 .debug_str 00016d9a 00000000 00000000 0002c5af 2**0 CONTENTS, READONLY, DEBUGGING 14 .comment 00000012 00000000 00000000 00043349 2**0 CONTENTS, READONLY 15 .note.GNU-stack 00000000 00000000 00000000 0004335b 2**0 CONTENTS, READONLY 16 .debug_frame 00000ebc 00000000 00000000 0004335c 2**2 CONTENTS, RELOC, READONLY, DEBUGGING 17 .ARM.attributes 00000035 00000000 00000000 00044218 2**0 CONTENTS, READONLY $ objdump -h o2 o2: file format elf32-little Sections: Idx Name Size VMA LMA File off Algn 0 .text 00004a00 00000000 00000000 00000038 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000000 00000000 00000000 00004a38 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000618 00000000 00000000 00004a38 2**2 ALLOC 3 .ARM.extab 00000084 00000000 00000000 00004a38 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .ARM.exidx 00000358 00000000 00000000 00004abc 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 5 .rodata 000006a8 00000000 00000000 00004e14 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 6 .rodata.str1.4 00000208 00000000 00000000 000054bc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 7 .comment 00000012 00000000 00000000 000056c4 2**0 CONTENTS, READONLY 8 .note.GNU-stack 00000000 00000000 00000000 000056d6 2**0 CONTENTS, READONLY 9 .ARM.attributes 00000035 00000000 00000000 000056d6 2**0 CONTENTS, READONLY --8<---------------cut here---------------end--------------->8--- Indeed, if we strip it a bit, we get very close: --8<---------------cut here---------------start------------->8--- $ guix build -e '((@@ (gnu packages cross-base) cross-binutils) "arm-linux-= gnueabihf")' /gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnueab= ihf-2.25.1 $ /gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnue= abihf-2.25.1/bin/arm-linux-gnueabihf-strip --strip-debug -o o3 o1 $ ls -l o3 o2 -rw------- 1 ludo users 43016 May 31 23:14 o2 -rw-r--r-- 1 ludo users 43008 May 31 23:26 o3 $ size o3 o2 text data bss dec hex filename 22172 0 1560 23732 5cb4 o3 22156 0 1560 23716 5ca4 o2 --8<---------------cut here---------------end--------------->8--- We still have those 16 extra bytes though. We can disassemble like Diffoscope would do (if it knew about cross-compilation=E2=80=A6): --8<---------------cut here---------------start------------->8--- $ /gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnue= abihf-2.25.1/bin/arm-linux-gnueabihf-objdump --line-numbers --disassemble -= -section=3D.text o3 > a3 $ /gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnue= abihf-2.25.1/bin/arm-linux-gnueabihf-objdump --line-numbers --disassemble --section=3D.text o2 > a2 --8<---------------cut here---------------end--------------->8--- =E2=80=A6 and then compare the assembly, which gives many things like: --=-=-= Content-Type: text/x-patch Content-Disposition: inline Disassembly of section .text: @@ -425,7 +425,7 @@ _ZL18encode_ieee_doublePK11real_formatPl 442: e7af b.n 3a4 <_ZL18encode_ieee_doublePK11real_formatPlPK10real_value+0x2c> 444: f063 4300 orn r3, r3, #2147483648 ; 0x80000000 448: f04f 35ff mov.w r5, #4294967295 ; 0xffffffff - 44c: e7aa b.n ffffff58 <_Z29HONOR_SIGN_DEPENDENT_ROUNDINGPK7rtx_def+0xffffb564> + 44c: e7aa b.n ffffff58 <_Z29HONOR_SIGN_DEPENDENT_ROUNDINGPK7rtx_def+0xffffb554> 44e: f240 0000 movw r0, #0 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable (Note the 16-byte difference in the target address.) Then we see more significant differences in _ZL16round_for_formatPK11real_formatP10r, which is probably where the extra bytes are. We should check the build log for the command lines used to build real.o. To be continued=E2=80=A6 Ludo=E2=80=99. --=-=-=--