guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Freezing core-updates


From: Ludovic Courtès
Subject: Re: Freezing core-updates
Date: Tue, 31 May 2016 23:36:21 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Andreas Enge <address@hidden> skribis:

> Of course the first time I forgot to add the "-K" parameter. So I redid the
> 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 files.
> 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-gnueabihf-2.25.1
$ 
/gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnueabihf-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…):

--8<---------------cut here---------------start------------->8---
$ 
/gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnueabihf-2.25.1/bin/arm-linux-gnueabihf-objdump
 --line-numbers --disassemble --section=.text o3 > a3
$ 
/gnu/store/w7rk1qamh9ws40s6wg148i108229r6fr-binutils-cross-arm-linux-gnueabihf-2.25.1/bin/arm-linux-gnueabihf-objdump
--line-numbers --disassemble --section=.text o2 > a2
--8<---------------cut here---------------end--------------->8---

… and then compare the assembly, which gives many things like:

 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
(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…

Ludo’.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]