[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #9 from Dennis Clarke  ---
If I remove the "go" language from the mix then I get reasonable results : 

https://gcc.gnu.org/ml/gcc-testresults/2017-08/msg02064.html


I will install that and then try again with the "all" languages selection 
after stage1.

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #8 from Dennis Clarke  ---
(In reply to Eric Botcazou from comment #7)
> See PR bootstrap/77995 for a similar issue on x86-64/Solaris.

Looks like a distant relation at best. That seemed to have something
to do with complex types and build_complex_type() requiring a second
"named" bool parameter. In the same ballpark perhaps but only as the
ballboy selling hot dogs watching the game. 

My bootstrap of 7.2.0 did complete fine and the testsuite is running. 
I think I shall circle back to 6.4.0 and try a bootstrap with "go" as
an enabled language after stage1 and see what happens. On sparc only.

I could try this on Solaris x86_64 but I don't have any of that around 
and have not seen it in the wild for some years.

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #7 from Eric Botcazou  ---
See PR bootstrap/77995 for a similar issue on x86-64/Solaris.

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #6 from Eric Botcazou  ---
> elfdump in Solaris says stage2 section ".debug_info" size is 0x1636a2:  
> 
> Section Header[37]:  sh_name: .debug_info
> sh_addr:  0   sh_flags:   0
> sh_size:  0x1636a2sh_type:[ SHT_PROGBITS ]
> sh_offset:0x1faa0 sh_entsize: 0
> sh_link:  0   sh_info:0
> sh_addralign: 0x1
> 
> Whereas stage3 reports : 
> 
> Section Header[37]:  sh_name: .debug_info
> sh_addr:  0   sh_flags:   0
> sh_size:  0x163698sh_type:[ SHT_PROGBITS ]
> sh_offset:0x1faa0 sh_entsize: 0
> sh_link:  0   sh_info:0
> sh_addralign: 0x1
> 
> 
> Not exactly 8 bytes. Looks like 10 bytes diff. All other "sh_size" section
> size data matches. 

OK, thanks, this rings a bell.  Unlike other platforms, the bootstrap process
on Solaris involves comparing the debug info, so things like this might go
unnoticed by the developers using other platforms.

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #5 from Dennis Clarke  ---
Minor note, the gcc 6.4.0 compiler I am using was not built with support for
"go". I rarely ever build "go" as I have never had a use for it however I
really should. It is possible some small bug has slipped under the radar
because I just did a three stage bootstrap of 7.2.0 without "go" with 
success. Perhaps something subtle at work strictly in the "go" code area.

I will run a testsuite and then get back to perhaps a build with stage1
languages as just C, C++ and then stage2 onwards as "all".

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #4 from Dennis Clarke  ---
elfdump in Solaris says stage2 section ".debug_info" size is 0x1636a2:  

Section Header[37]:  sh_name: .debug_info
sh_addr:  0   sh_flags:   0
sh_size:  0x1636a2sh_type:[ SHT_PROGBITS ]
sh_offset:0x1faa0 sh_entsize: 0
sh_link:  0   sh_info:0
sh_addralign: 0x1

Whereas stage3 reports : 

Section Header[37]:  sh_name: .debug_info
sh_addr:  0   sh_flags:   0
sh_size:  0x163698sh_type:[ SHT_PROGBITS ]
sh_offset:0x1faa0 sh_entsize: 0
sh_link:  0   sh_info:0
sh_addralign: 0x1


Not exactly 8 bytes. Looks like 10 bytes diff. All other "sh_size" section size
data matches. 

The output from elfdump is 75k lines long with 1134 lines of diff : 

d$ elfdump ./stage3-gcc/go/parse.o > /tmp/go_parse_elfdump.3
d$ elfdump ./stage2-gcc/go/parse.o > /tmp/go_parse_elfdump.2
d$ wc -l /tmp/go_parse_elfdump.3
   75428 /tmp/go_parse_elfdump.3
d$ wc -l /tmp/go_parse_elfdump.2
   75428 /tmp/go_parse_elfdump.2

d$ diff /tmp/go_parse_elfdump.2 /tmp/go_parse_elfdump.3 | wc -l 
1134

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #3 from Eric Botcazou  ---
> the ELF section header table seems
>  to be in a slightly different place between the two files :
> 
> d$ elfdump -delv stage2-gcc/go/parse.o
> 
> ELF Header
>   ei_magic:   { 0x7f, E, L, F }
>   ei_class:   ELFCLASS64  ei_data:   ELFDATA2MSB
>   ei_osabi:   ELFOSABI_NONE   ei_abiversion: 0
>   e_machine:  EM_SPARCV9  e_version: EV_CURRENT
>   e_type: ET_REL
>   e_flags:[ EF_SPARCV9_TSO ]
>   e_entry: 0  e_ehsize: 64  e_shstrndx:  1
>   e_shoff:  0x3b7cd8  e_shentsize:  64  e_shnum: 86
>   e_phoff: 0  e_phentsize:   0  e_phnum: 0
> 
> d$ elfdump -delv stage3-gcc/go/parse.o
> 
> ELF Header
>   ei_magic:   { 0x7f, E, L, F }
>   ei_class:   ELFCLASS64  ei_data:   ELFDATA2MSB
>   ei_osabi:   ELFOSABI_NONE   ei_abiversion: 0
>   e_machine:  EM_SPARCV9  e_version: EV_CURRENT
>   e_type: ET_REL
>   e_flags:[ EF_SPARCV9_TSO ]
>   e_entry: 0  e_ehsize: 64  e_shstrndx:  1
>   e_shoff:  0x3b7cd0  e_shentsize:  64  e_shnum: 86
>   e_phoff: 0  e_phentsize:   0  e_phnum: 0
> d$
> 
> So there I see 0x3b7cd8 in stage2 and 0x3b7cd0 in stage3. 

Sure, but we need to find where this difference comes from, i.e. which section
of the executable has a different size.  elfdump can probably dump this info.

> At first glance there appears to be only an 8 byte difference in the
> size of the file but looking down through the various sections in the
> ELF data for both files I see the same data represented in very similar
> places but yet, slightly different.  For example the ELF header offset
> is 0x3b7cd0 in one of them and 0x3b7cd8 in the other.  Is this a valid
> functional difference at all?

Maybe not, but the comparison process is very strict.  In any case, 2 identical
compilers should produce identical object files (modulo timestamp).

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #2 from Dennis Clarke  ---
the ELF section header table seems
 to be in a slightly different place between the two files :

d$ elfdump -delv stage2-gcc/go/parse.o

ELF Header
  ei_magic:   { 0x7f, E, L, F }
  ei_class:   ELFCLASS64  ei_data:   ELFDATA2MSB
  ei_osabi:   ELFOSABI_NONE   ei_abiversion: 0
  e_machine:  EM_SPARCV9  e_version: EV_CURRENT
  e_type: ET_REL
  e_flags:[ EF_SPARCV9_TSO ]
  e_entry: 0  e_ehsize: 64  e_shstrndx:  1
  e_shoff:  0x3b7cd8  e_shentsize:  64  e_shnum: 86
  e_phoff: 0  e_phentsize:   0  e_phnum: 0

d$ elfdump -delv stage3-gcc/go/parse.o

ELF Header
  ei_magic:   { 0x7f, E, L, F }
  ei_class:   ELFCLASS64  ei_data:   ELFDATA2MSB
  ei_osabi:   ELFOSABI_NONE   ei_abiversion: 0
  e_machine:  EM_SPARCV9  e_version: EV_CURRENT
  e_type: ET_REL
  e_flags:[ EF_SPARCV9_TSO ]
  e_entry: 0  e_ehsize: 64  e_shstrndx:  1
  e_shoff:  0x3b7cd0  e_shentsize:  64  e_shnum: 86
  e_phoff: 0  e_phentsize:   0  e_phnum: 0
d$

So there I see 0x3b7cd8 in stage2 and 0x3b7cd0 in stage3. 


At first glance there appears to be only an 8 byte difference in the
size of the file but looking down through the various sections in the
ELF data for both files I see the same data represented in very similar
places but yet, slightly different.  For example the ELF header offset
is 0x3b7cd0 in one of them and 0x3b7cd8 in the other.  Is this a valid
functional difference at all?  Perhaps a bug lay inside the linker which
created the actual object file? Looking at both files and the ELF data
between them I see the exact same data in both and yet in different
addresses :

stage 2 :

Section Header[44]:  sh_name: .bss
sh_addr:  0   sh_flags:   [ SHF_WRITE SHF_ALLOC ]
sh_size:  0x11sh_type:[ SHT_NOBITS ]
sh_offset:0x204458sh_entsize: 0
sh_link:  0   sh_info:0
sh_addralign: 0x4

stage 3 :

Section Header[44]:  sh_name: .bss
sh_addr:  0   sh_flags:   [ SHF_WRITE SHF_ALLOC ]
sh_size:  0x11sh_type:[ SHT_NOBITS ]
sh_offset:0x204450sh_entsize: 0
sh_link:  0   sh_info:0
sh_addralign: 0x4

That sort of difference lay between the two files in many many places.
Slightly different by 8 bytes again however nm tells me that the symbol
listing is identical between the two files. Perhaps there is no actual
"functional" difference between the files at all.

[Bug go/81926] go/parse.o differs between stage2 and stage3 for gcc 7.2.0

2017-08-22 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

Eric Botcazou  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-08-22
 CC||ebotcazou at gcc dot gnu.org,
   ||ro at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Eric Botcazou  ---
> The compiler to be used for the initial stage of bootstrap is gcc 6.4.0 thus
> :
> 
> d$ /usr/local/gcc6/bin/gcc --version 
> gcc (genunix Wed Jul 26 02:41:24 GMT 2017) 6.4.0
> Copyright (C) 2017 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> 
> That had reasonable test results previously : 
> https://gcc.gnu.org/ml/gcc-testresults/2017-07/msg02881.html

But Go wasn't enabled for it, was it?

> There seems to be only an 8 byte size difference : 
> 
> d$ ls -lo ./stage2-gcc/go/parse.o ./stage3-gcc/go/parse.o
> -rw-r--r--   1 dclarke  3904088 Aug 22 04:00 ./stage2-gcc/go/parse.o
> -rw-r--r--   1 dclarke  3904080 Aug 22 04:57 ./stage3-gcc/go/parse.o
> 
> Also the various symbols in these object files are identical but the
> location of data inside the ELF files is slightly different : 

Can you find out (with objdump for example) which section differs in size?

Rainer, do you test Go in this configuration (system as + ld)?